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