2026年10月24日 1 分钟阅读

从最小 Agent 循环到完整 Harness:用开源课程拆解编码 Agent 工程

tinyash 0 条评论

一个能调用工具的 Agent,核心循环可能只有几十行;但要让它在真实代码库里稳定工作,还得处理权限、上下文、失败恢复、评测和部署。把这些环节统称为 harness(运行支撑层),有助于把“模型够不够强”和“系统是否可靠”分开讨论。

《Building a Coding Agent From Scratch》是 Decoding AI 发布的开源课程,仓库采用 Apache-2.0,包含 8 篇文章、6 段视频和一套 Python 代码。课程从最小 Agent 循环出发,逐步加入沙箱、权限、上下文工程、子 Agent、远程运行、评测与轨迹回放。它不是 Claude Code 的官方课程,也不是对其内部实现的逐行复刻;项目说明是借鉴 Claude Code、OpenCode、Pi 和 Aider 等工具的工程经验,构建自己的 decode 编码 Agent。

先理解:Agent 是循环,Harness 是边界

一个简化的工具调用循环可以写成这样:

async with agent.iter(prompt, message_history=history) as run:
    async for node in run:
        stream_events(node)

这段是架构示意,不是完整可运行程序:agent、prompt 和 history 需要由应用初始化。课程采用 Pydantic AI 构建 Agent;仓库展示的循环负责推进模型请求与工具调用,而工具注册、权限门、沙箱、记忆、上下文压缩、会话记录和评测等,才是让它适应真实工作流的支撑层。读者可以先把“调用工具”视作能力,再追问每个能力的边界由谁控制。

按风险逐步加能力

课程安排值得借鉴的地方,是不一开始就堆功能。先搭建 headless 核心,再接入 TUI 等交互入口;之后为 bash 等工具增加本地 Docker 或远程 Modal 沙箱,以及权限控制。这样,交互界面和执行环境不会与 Agent 核心循环紧密耦合。

随后再处理上下文问题:记忆、压缩和 Skills 解决的不是同一件事。记忆保存跨轮次有价值的信息;压缩是在上下文窗口紧张时整理历史;Skills 则提供可按需加载的任务知识。加入子 Agent 后,还要明确任务拆分与结果汇总方式,避免把并行当作自动提质。

把失败变成回归测试

Agent 具有随机性,单次演示成功不能证明修改可靠。课程后段专门覆盖基准评估、回归测试,以及把失败轨迹转成测试案例。实用做法是:记录输入、工具调用、权限决定和最终结果;发现失败后,将触发条件整理为可重复的评测,再修改 harness 并比较前后结果。模型或提示词变化时,重放旧轨迹也能帮助发现行为回退。

这并不意味着每个团队都要照搬完整平台。可以先从只读工具与确定性测试开始,再逐步开放写操作;高影响动作应要求明确授权,沙箱应限制文件和网络访问。评测集则优先覆盖真实故障,而非只堆容易通过的演示任务。

快速试读与实践边界

仓库给出的基本流程是:

git clone https://github.com/decodingai-magazine/building-a-coding-agent-from-scratch-course.git
cd building-a-coding-agent-from-scratch-course
make install
cp .env.example .env
uv run decode

按项目说明,需要在 .env 中配置模型服务所需的密钥;随后可在 TUI 中输入 /demo- 浏览示例。不要把真实密钥提交到仓库,也不要在未检查权限和沙箱配置前,让演示 Agent 处理敏感目录。课程描述了远程 Modal 运行模式,但那是项目示例路径,不代表所有步骤都能零成本运行;README 将代码运行成本标为零,同时课程也注明由 Modal、Opik 与 Kitaru 赞助。依赖外部服务的具体费用仍应以各服务当前方案为准。

这套材料最适合想弄清编码 Agent“模型之外还有什么”的开发者。它提供了清晰的学习路线,而不是生产系统认证或安全审计结论。读者若只做个人原型,可以先完成循环、权限和本地评测;若要团队部署,再把隔离、密钥管理、审计、回归门禁与成本控制纳入上线检查。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。