从 0 实现一个 Agent
这是百科里的动手路径,不是全部词条。先做出能聊天的机器人,再给它套上 Harness,然后才挂本地工具、MCP、Skill 和 RAG。
阶段一 · 聊天机器人
只会说话。先把 API、多轮、人设和流式输出做稳,作为后面所有能力的底板。
-
00
Chatbot:对话底板
只会说话、默认不行动。先把对话协议和边界讲清楚。
-
01
Responses API
另一套信封:input、output 条目。流式事件见 Responses SSE。后面的例子仍按 chat/completions。
-
02
多轮对话
把历史带上。为什么不能每次都开一个新聊天。
-
03
System prompt
人设、边界、输出习惯。后面 Skill 会按需覆盖或补充它。
-
04
流式输出
打字机效果,为 Harness 的事件流做准备。
-
05
撰写中
本阶段产物:CLI 聊天机器人
一条命令能聊。还不会用工具,但会话是完整的。
阶段二 · Harness
给聊天套上运行时:会话托管、取消与超时、日志和轨迹。后面的循环、MCP、Skill、RAG 都注册进这个壳,而不是各写一套。
-
06
撰写中
什么是 Harness
模型和 Harness 的分工。为什么「智能」很大一块其实在运行时。
-
07
撰写中
会话、取消、超时
一次 run 的生命周期:开始、打断、结束、落盘。
-
08
撰写中
事件与轨迹
把文本、工具、错误打成统一事件,给人和调试看。
-
09
撰写中
权限位先留好
谁能读文件、谁能上网。工具章再接线,概念先放进 Harness。
阶段三 · 循环与工具
在 Harness 里先挂上进程内工具和 Agent Loop。MCP 下一阶段再接,避免一开始就把协议和循环缠在一起。
-
10
从聊天到办事
工具和聊天回复的差别。模型如何「伸手」。
-
11
第一次 function calling
工具清单、参数 Schema、解析 tool_calls。
-
12
Agent Loop
执行工具,把观察写回 messages,再请求。步数到顶就停。
-
13
撰写中
实用工具与安全
读文件、HTTP、计算。白名单、超时、参数校验。
-
14
撰写中
失败与死循环
工具报错、编造工具名、同一工具空转。重试和人工确认。
阶段四 · MCP
本地工具写在进程里;MCP 把工具、资源和提示放到另一个进程,用同一套协议给 Harness 调用。先当客户端接进去,再自己写一个最小 server。
-
15
撰写中
MCP 是什么
和本地 function calling 的差别:进程外、可插拔、tools / resources / prompts。
-
16
撰写中
写一个最小 MCP Server
stdio 起一个服务,暴露一两个 tool。先能被别人连上。
-
17
撰写中
Harness 当 MCP Client
握手、列出工具、调用工具,合并进同一份清单和同一套 Loop。
-
18
撰写中
资源、提示与权限
resources、prompts 怎么用。哪些 server 能连、工具能不能写。
阶段五 · Skill
Skill 不是新工具,也不是 MCP。它是按需加载的专项说明书(可附脚本)。Harness 负责发现、挑选、读入。
-
19
撰写中
Skill 是什么
和 system prompt、本地工具、MCP、RAG 的边界。
-
20
撰写中
发现与加载
SKILL.md 的名字和说明先给模型看,真正用到再读全文。
-
21
撰写中
写第一个 Skill
例如「整理会议纪要」或「按仓库规范改代码」。让 Harness 在匹配时注入。
-
22
撰写中
Skill 里的脚本
纯指令 vs 附带可执行步骤。脚本仍走工具或 MCP 通道。
阶段六 · RAG
让 Harness 能查你自己的材料。检索是一种能力,不是另起一个机器人。
-
23
撰写中
为什么要 RAG
模型没读过你的文件。检索和微调、加长上下文的差别。
-
24
撰写中
最小切片与向量检索
切块、嵌入、取回 top-k。先跑通,不追求花哨。
-
25
撰写中
检索接进 Harness
作为本地工具、MCP 工具,或在进模型前注入。
-
26
撰写中
引用与防编造
答案必须能指回片段。材料里没有的要说未提及。
阶段七 · 合成
聊天、Harness、本地工具、MCP、Skill、RAG 拼成一个 Agent。用固定题做回归。
-
27
撰写中
组装最终 Agent
同一套 Harness 上同时挂本地工具、MCP、Skill、RAG。配置和开关。
-
28
撰写中
评测
会不会停、选对工具、连对 MCP、加载对 Skill、不瞎编资料。
-
29
撰写中
附录:框架是别人的 Harness
什么时候才值得换现成框架,以及对照我们自己写过的零件。