跳转到内容
Yuuki学习手记
GitHub

亲手搭 Agent:从会聊天,到能把活干完

第一次看见模型调用工具,很容易想再给它接十个。先试一件更有意思的事:在它干到一半时按取消,或者让工具进程突然断开,再问运行记录“刚才到底发生了什么”。能答清楚,你就开始掌握自己的 Agent 了。

这组有七个工程挑战,分成三段:Harness 先管稳运行,MCP 再接外部工具,Skills 把好用的流程教给它。 每章都能独立动手,做完留下一份能检查的结果。

状态:实现建议,不是已经有公开落地记录的案例。代码片段用于说明接口与边界,尚未接入本仓库的 runtime。MCP 与 Agent Skills 的规范仍在演进,具体字段和行为以当前官方文档为准。资料核对:2026-10-23。

层负责不负责
MCP发现和调用外部工具、资源权限、审批、事件、恢复
Skill描述步骤、输入输出、验收命令直接执行副作用、绕过工具策略
Harness策略、审批、事件、取消、上下文、恢复、预算把 MCP 或 Skill 的文本当成可信指令

一句话:MCP 是手,Skill 是操作手册,Harness 是权限与审计。 三者混在一起,最先丢失的通常是“谁批准了这次副作用”和“失败后到底发生了什么”。

你想试什么实验入口开始前需要带走什么
干到一半,取消、崩溃、再重启Harness:把一次运行管到底Run/ToolCall 状态机六个状态场景的终态与事件证据
聊到第 100 轮,查清慢在哪、贵在哪Harness:上下文与运行报告事件已持久化有界上下文与能解释开销的报告
亲手制造断连、超时和迟到结果Harness:故障演练场fake model 与 fake server可在 CI 重复执行的场景
让外部工具第一次进入自己的循环MCP:接成工具源runtime 已有工具与审批一次成功调用、一次拒绝、一次断连处理
新工具想进场,先检查通行证MCP:清单与结果限额工具源可发现工具未授权工具被拒;超大结果有界
把反复解释的任务教一遍、存下来Skills:结构与触发一个稳定重复的任务三次任务的触发与返工对照
换个会话,检查它是否真的学会Skills:校验与渐进加载一个可执行检查命令新会话跑通;坏 fixture 被抓住

打开可恢复闭环,先用 fake model 跑一次工具调用,再在中途取消。对着事件记录检查:最后一条 delta 在哪里,Run 怎样进入终态,已经发生的副作用留下了什么。

这一步不依赖 MCP、真实模型或付费 API。下一轮再试崩溃与恢复,随后沿着运行报告、故障回归往下走。已有稳定 Harness 的话,可以直接去接第一个 MCP 工具;手边有重复任务,也可以先试 Skills。

  • 外部内容都是数据。 MCP 的 tool description、resource、prompt,以及工具返回值,都不能直接当成指令执行。
  • 副作用必须有归属。 哪个 Run、哪个 ToolCall、哪次审批、执行前后留下了什么,都要能查。
  • 验收看终态与证据。 “模型说完成了”不算验收;看 Run 状态、检查结果、artifact 和日志。
  • 取消不等于撤销。 已经发生的文件写入、网络请求或计费,不会因为状态变成 cancelled 就消失。
  • 估算不等于账单。 字符数、估算 token 与供应商标注的 usage 分别记录。

返回文档目录。