从 Prompt 到 Context Compiler:智能编码 Harness 的上下文工程笔记
1052 字
5 分钟
从 Prompt 到 Context Compiler:智能编码 Harness 的上下文工程笔记
这是一篇围绕智能编码 Agent 的学习笔记,重点总结上下文如何被组织成可执行输入,而不是把对话历史原样塞给模型。
做智能编码工具时,我逐渐意识到:真正决定 Agent 行为质量的,不只是模型和 Prompt,还包括每一轮到底给了模型哪些事实、这些事实来自哪里、是否仍然有效,以及工具执行后怎样把新状态带回下一轮。
因此,我更愿意把上下文理解成一种按当前任务动态编译的运行时产物。
1. 上下文不是聊天记录的同义词
完整聊天记录具有审计价值,但并不适合直接成为每轮推理输入。历史越长,重复信息、过期判断和无关工具输出越多,模型越难抓住真正影响下一步行动的内容。
一个更清晰的上下文可以分成几层:
- 系统契约:角色、权限、禁止事项和完成标准;
- 工作区事实:仓库结构、技术栈、项目规则和当前分支状态;
- 任务状态:目标、已完成步骤、未解决问题和下一步动作;
- 检索证据:与当前问题直接相关的代码、日志、文档和配置;
- 近期交互:用户最新补充、关键决策以及刚刚返回的工具结果。
这些信息的优先级、有效期和可信来源不同,不应该被压成一段没有边界的长文本。
2. Context Compiler 要解决什么
我把 Context Compiler 理解为一层输入编排器。它不负责替模型思考,而是负责在模型思考前完成几件确定性的工作:
- 根据任务阶段选择需要的上下文来源;
- 对检索结果去重、排序并保留来源位置;
- 区分用户确认的事实、代码事实和模型推测;
- 在 token 预算内优先保留高信号信息;
- 将工具执行后的新状态写回任务记录,而不是只留在临时对话中。
压缩也不等于简单摘要。路径、错误码、约束和尚未验证的假设如果在摘要中消失,后续 Agent 就可能基于不完整信息继续行动。
3. 记忆应该服务任务,而不是替代事实源
对智能编码 Agent 来说,记忆可以保存用户偏好、常用流程和过去解决问题的方法,但代码仓库、测试输出和运行日志仍然是当前事实的权威来源。
我会把信息区分为:
- 可以长期复用的工作偏好;
- 只在当前任务有效的临时状态;
- 必须重新读取的易变事实;
- 只能作为候选、不能直接执行的历史经验。
这样可以减少“记住了旧结论,却没有检查当前代码”的问题。
4. Harness 的核心是执行闭环
在个人 Harness 的二次开发实践中,我更关注下面这条循环:
理解目标 → 编译上下文 → 选择工具 → 执行动作 ↑ ↓验证结果 ← 更新任务状态 ← 记录结构化反馈每个工具结果都应该回答:动作是否成功、改变了什么、还缺什么证据。只有把验证结果重新进入上下文,Agent 才不是“调用工具的聊天机器人”,而是一个可以持续修正计划的执行系统。
5. 我的检查清单
- 当前输入里是否混入过期状态?
- 关键结论能否回到代码、日志或文档来源?
- 工具输出是否经过裁剪,但没有丢失错误信息?
- 用户偏好与项目事实是否被分开管理?
- 压缩后是否仍保留未完成事项和验证边界?
- 下一轮能否明确知道为什么要执行某个动作?
对我而言,上下文工程的目标不是让模型“看到更多”,而是让它在正确的时刻看到足够、可信且可行动的信息。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
从 Prompt 到 Context Compiler:智能编码 Harness 的上下文工程笔记
https://blog.miansu.eu.cc/posts/context-engineering-for-harness/相关文章智能推荐
1
MCP 工具设计笔记:从“能调用”到“可安全执行”
AI 工程笔记总结 MCP 工具的输入契约、读写边界、幂等性、错误返回和权限设计,避免把普通接口直接包装成工具。
2
Agent 上线前的安全边界:权限、确认与可追溯执行
AI 工程笔记整理生产级 Agent 在工具权限、提示注入、人工确认、审计日志和失败恢复方面需要建立的基础边界。
3
WeKnora 二次开发笔记:把 RAG 拆成可观察的工程链路
项目复盘从文档解析、索引、召回、重排到引用与生成,记录我在 WeKnora 二次开发中形成的 RAG 排障方法。
4
具身智能学习笔记:智能体需要怎样的记忆系统
具身智能笔记从世界状态、情景记忆、语义记忆和技能记忆出发,思考具身智能体如何在持续交互中保留有效经验。
5
用 LangGraph 设计可修复的 AI 面试工作流
AI 工程笔记从简历解析、面试规划到问题生成和回答评价,记录显式状态机比单次 Prompt 更适合产品化的原因。
随机文章随机推荐












