第 28 节 · Agent:一个模型不够,一个 agent 也不够¶
给模型配上一个角色、一份职责、一条红线,它才开始像一个员工。这一节讲 agent 到底由什么组成。
一、一个裸模型为什么不是一个员工¶
一个裸模型,像一个没有工牌、没有工位、没有岗位说明书的临时工。你随时能让他算一道题;但你没法"把他安排进一家公司"。
第 24、25 节我们做了两件事:把一台机器上的模型配成十个服务,再拿一条三档路由决定"这活派给谁"。做到这一步,选谁、算得对不对、算得省不省,都有人管了。
但你把对的活派给对的模型之后,模型算完那句话,然后就没了。它不知道自己在给谁干活,不知道干到哪一步算交差,更不知道哪一步不许碰。
我这里有一张清单能说明这个缺口。第 25 节提过的那张 27 条的表格,它列的不是模型,是"人怎么喊 agent":你说一句自然语言,系统把它翻成一个负责人加一个工作目录。模型是算力的单位,agent 是责任的单位——这两件事在系统里占两张表。
安排不进,是因为他缺三样东西:我是谁、我干什么、我不干什么。
这三样东西,就是"调一次 API"和"雇一个人"之间的全部距离。距离不在算力上,在名分上。
图 A-28-1(待出):一个裸模型 → 一张角色卡,"角色 / 职责 / 红线"的三件套
二、一张角色卡里到底写了什么¶
先给数字。我数了一遍磁盘上那份角色清单目录:52 个 Markdown 文件,其中 3 个不是角色——一份协作流程、一份量化协作流程、一份质疑协议。减掉它们,49 个 agent 定义。
这里要说严格一点:"定义了 49 个角色"和"49 个在干活"是两件事。 这份清单是编制表,不是在岗名单。它回答"公司设了哪些岗",不回答"今天谁在上班"。编制写全了,不等于今天有人坐在那把椅子上——那是两套账。
每个定义就是一张角色卡。绝大多数卡的最上面是一段头信息,四五个字段:叫什么名字、这段描述负责什么、允许用哪些工具、配什么颜色、配什么图标(49 张里有两张省掉了这段头信息)。而那段描述的最后一句,几乎是一个固定句式——"用某个名字调用"。
角色名就是调用地址。 你在输入框里打出来的那个名字,不是昵称,是它在系统里的句柄——不是给同事看的称呼,是给系统查的键。
这 49 张卡不是按"人"分的,是按域和线分的:
| 域 / 线 | 角色数 | 卡片举例(都用职能名) |
|---|---|---|
| 量化线 | 10 | 数据、特征、Alpha 实验、回测、组合、风控、执行、合规、运营分析、基础设施 |
| 内容线 | 十几 | 主编、编剧、设定、写手、审稿、发行、商务、复盘、配图、视频剪辑 |
| 治理与支撑 | 若干(这里只举 9 例) | 总经理、财务、法务、架构、项目管理、运维、提交、开源运营、夜班 |
| 个人域 | 4 | 生活管家、主厨、学习教练、考纲拆解师 |
这张表扫一眼就知道公司长什么样:量化线有 10 个岗位,是一条按工序切得很细的线——从数据、特征、Alpha 到回测、组合、风控、执行,一个环节一个岗。个人域只有 4 个岗位,管的是跟公司业务无关的那摊事:吃、学、考。还有一张卡干脆是按钟点排班的——夜里由一个"值班"角色接班,从晚上一直守到第二天早上。
再往卡里看一层,你会发现"职责"只是开头。有的卡还带一张"要管 / 不要碰"的两列表。以那张学术院长卡为例:左边写着课程总纲、主考、学员档案;右边写着研究线日常生产、替学员做题、用"内部达标"这种话给学员放行。一张卡的密度,全在右边那一列。
图 A-28-2(待出):49 张角色卡按域分线:量化 10 / 内容十几 / 治理与支撑若干 / 个人域 4
还有一个细节值得单独说:我翻这 49 张卡,印象最深的是几乎没有"我很重要"这种话——写的都是"你负责什么"和"你不碰什么"。职责和边界,比头衔长。 一张卡好不好用,看右边那一列写得够不够具体。
三、边界是写死的¶
角色卡里最见功夫的一格,是"红线"。
我在一张培养角色的卡里读到过最硬的一条。那是一张"学术院长"性质的卡,管课程的治课与守门。卡里写得非常直白,大意是:所有质量闸门由他把关,为的是杜绝"内部自嗨认证";他存在的意义,是当学员没法给自己当导师时,充当"外部学术对手方"。
还有一条最狠的,意思同样直接:
设岗的人一旦入学,就是学员。闸门判定对他同样执行,不自开绿灯。
这一条把"学员"和"主考"拆成了两个人。不是同一件事没人管,是同一件事不许同一个人管。
另一处红线在量化线。风控和合规两张卡都被标成"人工红线节点"。风控卡自己的说法是:agent 跑监控、报警、给建议,但限额边界和大额止损由人定——"Agent 跑监控,人定生死线"。合规卡更绝:发现问题可以自动,处置资金不行——宁可误报,疑似违规一律交人。
也就是说,agent 能算、能判、能执行前半段,但那个"按下按钮"的动作,被写死在卡外。机器负责把事做对,人负责决定要不要做。 前半段交给机器、最后那一下留给人——这条线划在哪里,是设计出来的,不是默认出来的。
红线还有更细的两层,都藏在头信息和表里。
第一层是工具。带工具行的卡,头信息里都有一行"允许用哪些工具"。多数卡是同一套:可以派子任务、可以读、可以写、可以跑命令。但有一张卡的工具清单里,没有"跑命令"这一项——它只能读、能写、能派子任务。也就是说,同一个系统里,有的员工被明令禁止碰命令行。权限不靠自觉,靠卡上那一行写死。
第二层是"哪些活不许自己干"。财务那张卡有一张强制委派表:记账、现金流预测、支出审查,三行都写着"必须派给子任务";"预算分配决策"和"读取财务记录"两行则标了"不可委派",但两条的理由并不一样——前者是分配权属于核心职责,不该转手;后者是读一份记录本身是轻量操作,自己顺手做完就行,没必要为它单开一个子任务。卡的开头还压着一句铁律,大意是"违反此规则等于失职"。
这些卡不只是岗位说明书,还是作业规程。 一张卡要同时回答三个问题:你是谁、你干什么、以及你怎么干才算合规。
那为什么不把这些留在模型脑子里?因为模型不会替你记住上周说好的那条线。边界不写进卡里,就等于没有边界——它只是一次口头许可,下一个会话就忘干净。写进卡里的,才是每次都会被重新读到的规则。规则落在哪张卡上,那件事就归哪张卡管。
四、有了角色,还要有地方喊它¶
角色卡本身只是文件。要让它们真能干活,还得有个地方把人跟角色连起来。为这个我做了个东西。
先说它自己的定位,产品说明第一句就是:"一个窗口同时跑 N 个 AI 员工。" 怎么喊?打一个 @ 加角色名——就是上面说的那个句柄。三个入口:输入 @ 弹出一个选择框(上下选、回车确认);右边侧栏列着角色,点一下就插进输入框;还有一份直接从磁盘角色目录读来的缓存,负责让列表保持最新。
那为什么非要在桌面端另做一个"调度台"?因为 Web 版是跑在容器里、靠浏览器访问的:多开一个任务就要多开一个标签页——切标签丢现场、标签不持久、后台都常驻不了。桌面版要解决的正是这三件:
- 多终端做成 Tab —— 一个窗口里创建、切换、关掉多个 AI 终端,每个终端是一个常驻员工;
- 关窗不退出 —— 挂到系统托盘上,窗口关了人还在;
- 会话落盘 —— 终端配置自动保存,重启能恢复。顺带说一句诚实的:那个本地数据库只存终端配置,不存内容。
工程上的取舍也记一下:
- 装包 5-8MB,同类 Electron 方案约 200MB;
- 每个终端槽留一块 10MB 的环形缓冲,切 Tab 时把最近输出重放回来;
- 终端输出每 16ms 批量合并一次再渲染,避免高频刷屏;
- 僵尸进程和内存异常每 5 秒扫一次,状态栏报警;
- 代价是它只支持一类机器——Apple Silicon 的 Mac。
图 A-28-3(待出):调度台三入口(@ 弹窗 / 侧栏点选 / 角色缓存)与三个常驻机制(Tab / 托盘 / 会话落盘)
调度台不是界面,是"人怎么把活交给 agent"的那一层。 没有它,49 张角色卡就只是 49 个躺在磁盘上的文件——岗位写得再清楚,也没人喊得动。
五、为什么一个 AI System 需要 agent 这一层¶
回到全书那张图:
Model → Small Model → Model Pool → Router → Context → Knowledge / Memory → Agent → Harness / State → Evaluation / Gate → 闭环 / 反馈 → AI System
前六个零件,解决的都是"模型怎么算得对、算得省、算得着",全是资源问题。到 Agent 这一格,问题第一次从"算力"变成了"责任"。
一个 AI System 里,模型是资源,agent 是岗位。 资源可以被调度,岗位只能被定义——定义它是谁、它交什么、它不许碰什么。资源算错了可以重跑,岗位没定义清楚,连"重跑"该找谁都不知道。
这也就顺带解释了标题的后半句。一个 agent 也不够,不是因为它干得慢,是因为一个岗位的边界只管得住它自己:谁指挥谁、活怎么往下传、跑到一半崩了谁接——这三件事都不落在任何单张卡里。
所以这一节的答案只有三样东西:
一个角色,一份职责,一条红线。 少一样,它都还是个裸模型。
但编制表只解决了"岗位写清楚了没有"。上面点出的那三件事都不落在任何一张卡里——那是接下来两节的事。
数据与出处¶
- 磁盘上的角色定义清单:52 份 Markdown,扣除 3 份流程/协议文档 = 49 张角色卡
- 一张学术院长角色卡原文("外部学术对手方"、"闸门对设岗人同样执行、不自开绿灯"、"内部自嗨认证"、"要管 / 不要碰"两列表)
- 一张考纲拆解角色卡的头信息(工具白名单里没有命令行)
- 财务角色卡原文(强制委派表:"预算分配决策不可委派"、"读取财务记录不可委派(轻量操作)"、"违反此规则 = 失职")
- 量化线风控与合规角色卡原文("人工红线节点"、"Agent 跑监控,人定生死线"、"不自动处置资金")
- 一张夜班角色卡(按钟点排班:接班、交班)
- 桌面版产品说明(一个窗口跑 N 个员工、@ 调用三入口、多终端 Tab、托盘常驻、会话持久化且只存配置、健康检测 5 秒轮询、装包 5-8MB 对比 Electron 约 200MB、终端槽缓冲 10MB、16ms 批量合并、仅 Apple Silicon)
- 第 25 节的"人怎么喊 agent"路由清单(27 条)