数据截至 (上游 commit 0004b748b71c)
工具层与权限闸门:模型的手能伸到哪
30 秒导读: 模型本身只会输出文本。让它真能改文件、跑命令、上网,靠的是一层「工具」。 这一章讲 Kilo Code 里 agent 有哪些手(工具怎么定义、从哪来、怎么合成给模型的那张表), 以及 每只手怎么被拴住(一次调用要过几道闸、谁决定放行)。
本章是 会话主循环 的下半身:主循环负责「转圈」,本章负责「转圈时模型伸出来的那只手」。 edit 工具内部的九级降级匹配算法不在这里,见 落到磁盘。
1. 先建立直觉:一只手,一道闸
一个编码 agent 想干活,最少需要两样东西。
第一样是手。 模型说「我要读 src/index.ts」,得有人真的去读磁盘、把内容塞回对话里。
这就是工具(tool):一段带名字、带参数 schema、带 execute 函数的代码。
第二样是闸。 模型也可能说「我要 rm -rf /」。所以每只手前面都得有个门卫,问一句
「这个动作放不放行?要不要先问用户?」这就是权限(permission)。
Kilo Code 把这两件事拆得非常干净:
| 角色 | 白话 |
|---|