第3部分:Context Engineering Agent 的 Prompt 到底是怎么拼出来的?

前两部分,我们已经把 Agent 的“运行骨架”和“工具能力”都搭出来了。

到目前为止,Agent 已经会:

Main Loop
  ↓
State
  ↓
Provider
  ↓
Tool Calling
  ↓
Tool Registry
  ↓
Tool Schema
  ↓
Tool Execution
  ↓
Error Recovery
  ↓
Parallel Tool Calling

但随着 Tool 越来越多、运行步骤越来越长,一个新的问题开始变得特别明显,每一轮调用模型时,到底应该把什么东西发给它?

很多最小 Demo 会这样做:

messages = [
    {
        "role": "system",
        "content": "你是一个 Agent"
    },
    {
        "role": "user",
        "content": user_message
    }
]

然后觉得 Prompt 已经完成了。

真实 Agent 远远不是这样。

一个真正能处理项目、规则、历史、工具结果和长期任务的 Agent,每一轮输入可能来自:

System Prompt
+
Agent Rules
+
AGENTS.md
+
Skills
+
Memory
+
Conversation
+
Tool Results
+
Current Task

这些信息不是简单“拼接字符串”就结束。

你还要处理:

谁的优先级更高?
哪些信息会变化?
哪些信息每轮都要带?
哪些只在需要时加载?
哪些太长要压缩?
哪些已经过期?
哪些和当前任务无关?
规则冲突时听谁的?

所以这一节,我们正式进入第3部分,Context Engineering。

这一节的核心组件就是:

ContextBuilder

它会成为后面整个 Agent Harness 非常重要的中间层。

开场引入

我们先看一个很常见的 Coding Agent 失败案例。

用户说,“帮我修复这个项目里的测试失败问题。”

模型拿到的输入只有:

System Prompt:
你是一个专业 Coding Agent。

User:
帮我修复这个项目里的测试失败问题。

看起来没什么问题。

Agent 开始:

list_files
read_file
run_test

然后它发现某个测试失败。

接着模型决定,“那我改一下 tests/test_api.py。”

于是修改测试文件,让测试通过。

从结果看:

pytest passed

好像完成任务了。

但项目根目录其实有一个:

AGENTS.md

内容写着:

项目规则:
1. 不允许修改 tests/ 目录
2. 所有修复必须修改业务代码
3. 修改后必须运行 pytest
4. 不允许新增第三方依赖

问题来了。

Agent 根本没看到这份规则。

它不是“故意违规”。

而是 Context 根本没把项目规则放进去。

再举一个例子。

用户之前在同一个 Session 里已经说过,“这个项目固定使用 Python 3.9,不要升级运行版本。”

但十几轮以后,这句话埋在大量 Tool Result 里。

模型又生成,“建议升级 Python 版本。”

这不是模型突然失忆。

更准确地说,我们没有把真正重要的上下文稳定地放在模型眼前。

再比如,Agent 已经运行了 20 步。

它前面发现:

根因不是数据库,而是环境变量缺失。

但后面 Context 被大量 Shell 输出淹没。

模型又回头查数据库。

很多“Agent 变笨”的问题,最后并不完全是模型能力问题。

而是,Context Engineering 没做好。

这也是为什么我们说,真实 Agent 的 Prompt 绝对不只是:

System Prompt + 用户问题

更真实的输入是:

System Prompt
+
Agent Rules
+
Project Rules
+
Relevant Skills
+
Working / Long-term Memory
+
Conversation History
+
Recent Tool Results
+
Current Task

而且这份输入不是任务开始时构建一次。

而是,Main Loop 每一轮都可能重新构建。

因为每轮都在发生变化:

State 变了
Tool Result 变了
当前 Focus 变了
Memory 可能更新
Skills 可能重新选择
Conversation 变长

所以 ContextBuilder 不是“Prompt 模板工具”。

它更像,Agent 每一轮做决策前的上下文编译器。

我们这一节会亲手把它实现出来。

知识地图

图片[1]-第3部分:Context Engineering Agent 的 Prompt 到底是怎么拼出来的?-大赛人网

ContextBuilder 在整个 Harness 中的位置:

图片[2]-第3部分:Context Engineering Agent 的 Prompt 到底是怎么拼出来的?-大赛人网
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容