环境
Environment
Agent 所作用的世界——Harness 之外的任何事物,Agent 通过工具结果感知它,通过工具调用改变它。Harness 运行 Agent;Environment 是 Agent 工作的场所。像 Agent.md 这样的文件存在于 Environment 中;Harness 负责把它加载进上下文窗口。文件系统是最常见的 Environment,但不是唯一的(数据库、远程 API、浏览器会话都可以是 Environment)。
Agent 只有在主动查看时才能看到 Environment。它对 Environment 的所有了解都来自工具结果,因此它脑中的画面是一组快照,每张快照只在被拍下那一刻是准确的。如果 Agent 读取文件后文件发生了变化——你手动编辑了它,或构建步骤重新生成了它——Agent 会继续基于过时的副本推理,直到有什么东西促使它重新读取。Agent 自信地描述一个已经变样的文件,通常就是这种情况:Environment 变了,快照没变。
Environment 也是唯一始终有状态的持久层。Session 的上下文在 Session 结束时消失,但写入 Environment 的文件会留下来供下一个 Session 读取——这正是记忆系统、Handoff 产物和 Agent.md 所依赖的。任何 Agent 明天还应该知道的东西,最终都必须落到 Environment 里。
由你决定 Environment 有多大。沙箱会缩小它,限制 Agent 能触及的范围;增加工具则会扩展它,让数据库或 API 进入可达范围。边界之内是 Agent 能感知和改变的东西;边界之外对 Agent 来说不存在。Environment 被配置得多好、多能支撑 Agent 的工作,就是代码库的 AX。
避免:把“Environment”用于运行时或 Harness 本身——Harness 是包装器,Environment 是工作区。
用法:
“Agent 看不到 staging 数据库的 schema。”
“把它接到 Environment 里——给它一个 psql 工具,范围限定为只读 staging。Harness 没问题,它只是没有可作用的对象。”