环境可供性:智能的一半是取到正确数据
没有工具的模型,只能靠提示词获得额外信息。提示词工程在那个阶段几乎是唯一杠杆:把背景写清楚,把例子给够,把格式约束好,让模型在已有上下文里尽量选对路径。
一旦模型拥有主动提取外部数据的能力,问题就变了。智能不再只取决于模型内部能处理多少信息,也取决于它能不能从环境里拿到正确的信息。
Prompt 是喂信息,工具是取信息
prompt-only 系统的工作方式像开卷考试,但试卷、教材和草稿纸都必须提前塞进同一个信封。用户没塞进去的信息,模型默认看不见。它可以猜,可以泛化,可以从训练数据里补常识,但无法可靠知道当前项目、当前日志、当前数据库、当前 API 文档发生了什么。
工具调用改变了边界。ReAct 把 reasoning 和 acting 交织起来,让模型一边推理,一边对外部知识库或环境采取动作获取观察结果。Toolformer 进一步证明,语言模型可以学习在合适时机调用 API,并把结果纳入后续预测。SWE-agent 的核心贡献也不是“又写了一个 coding prompt”,而是强调 Agent-Computer Interface:给 agent 一个适合读文件、改文件、跑测试、导航仓库的接口,能力会明显变强。
这说明“会想”和“会查”不能分开评价。一个模型如果不知道该查什么、在哪里查、查完怎么用,内部推理再强也会在错误事实上精细加工。
环境可供性决定取数上限
环境可供性指的是:外部世界是否以模型能发现、能理解、能调用、能验证的方式呈现。
对人类来说,一个按钮是不是显眼、一个文档是不是有目录、一个命令是不是有 --help,都会改变工作效率。对 Agent 也一样。一个 repo 如果有清晰的 AGENTS.md、稳定启动脚本、可运行测试、类型定义、错误日志、决策记录,模型就能主动取得关键证据。反过来,知识散在 Slack、口头约定、过时 wiki 和人脑里,再强的模型也只能靠猜。
flowchart LR
A[用户意图] --> B{模型能主动取数吗}
B -->|不能| C[Prompt Engineering]
C --> D[把信息预先塞进上下文]
B -->|能| E[Environment Engineering]
E --> F[文件 / 搜索 / API / 日志 / 测试 / 数据库]
F --> G[按需提取正确证据]
G --> H[更大工作范围]
这里有一个反直觉点:准备好环境,常常能扩大模型工作范围,却不成比例增加模型工作负荷。原因很简单。模型不需要一次读完整个世界,只需要在正确接口上查到下一步最相关的信息。
这就是 Context7、MCP、repo map、代码搜索、语言服务器、测试框架、日志查询对 AI 编程的重要性。它们本质上都在把外部世界改造成模型可检索、可观察、可调用的环境。
信息获取能力是智能维度
评价模型时,常见指标会看数学、代码、推理、写作、知识问答。这些指标主要衡量内部处理能力。但在真实任务里,获取正确信息本身就是智能的一部分。
一个优秀工程师强,不只是因为脑子里装了更多算法,还因为他知道什么时候看日志、什么时候读源码、什么时候查 issue、什么时候跑最小复现。Agent 也是如此。它的智能水平由两部分相乘:处理信息的能力,获取信息的能力。
后者高度依赖环境假设。一个 API 如果没有机器可读文档,模型只能从旧训练数据里猜;一个项目如果没有测试,模型无法快速判断改动是否正确;一个业务系统如果没有可查询审计日志,模型无法定位状态错在哪里。内部能力无法凭空替代外部可观察性。
这也是 Harness 会长期存在的原因。模型可以越来越强,但“让正确数据以正确形式出现在模型面前”始终是环境工程问题。只要真实世界不是一个天然为模型整理好的文本数组,Harness 就很难消失。
好环境减少随机探索
环境设计的目标不是把所有信息都喂给模型,而是减少无意义探索。
| 环境缺陷 | 模型表现 | 环境修复 |
|---|---|---|
| 文档不可检索 | 编造过时 API | 提供版本化文档检索 |
| 启动方式不稳定 | 反复试命令 | 固定 init / dev / test 脚本 |
| 错误不可观测 | 只能猜原因 | 结构化日志和错误栈 |
| 验收不可执行 | 输出看起来对 | 单测、E2E、schema、截图 |
| 规则只在人脑里 | 破坏隐性约束 | AGENTS.md、spec、decision log |
这些修复看起来不像“智能”,却会直接提高智能体可用性。模型少猜一次,就多一份预算用于有效推理。模型少读一堆无关上下文,就多一份注意力给当前证据。
Harness 是环境的语法
Prompt engineering 关心一句话怎么写。Context engineering 关心这次调用里放什么。Harness engineering 更进一步,关心整个环境怎样被模型反复读取、修改、验证和继承。
OpenAI 的 Harness Engineering 文章有一句很关键的意思:把更多系统拉进 agent 可以 inspect、validate、modify 的形式,会提高杠杆。这里的 inspect、validate、modify 正好对应环境可供性的三个层次。先看得见,再验得出,最后改得动。
未来模型会继续变强,但更强模型不会消灭环境工程。更强模型只会把环境设计做得更重要。因为一旦模型真的能主动探索,它会探索什么、看见什么、相信什么、被什么约束,就成了系统上限。
相关文章
参考资料
- Yao et al.: ReAct: Synergizing Reasoning and Acting in Language Models
- Schick et al.: Toolformer: Language Models Can Teach Themselves to Use Tools
- Yang et al.: SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering
- Anthropic: Introducing the Model Context Protocol
- Anthropic: Writing effective tools for AI agents
- OpenAI: Harness engineering: leveraging Codex in an agent-first world

