主流 Agent 入门教程 / Kimi Code
10. 扩展生态
原文备份 · 第 11 / 14 篇 · 查看极客时间原知识库 ↗
本篇目录 · 5 节
来源:Kimi Code
上一章我们学会了 Skill——用一份 Markdown 就能给 Kimi 加能力,这是最"轻"的扩展方式。Kimi Code 还有四种更"重"的扩展机制:子代理、MCP、Hooks、插件。新手期可以暂时不用它们,但你早晚会遇到需要它们的场景,这一章先把地图给你,每种都配一个能上手的小实战。
| 机制 | 一句话理解 | 什么时候用 |
|---|---|---|
| 子代理 | 让它"分身",并行处理独立子任务 | 大规模调查、多方案对比、不想污染主会话上下文 |
| MCP | 接入外部工具和服务的标准协议 | 想让它操作自带工具之外的东西(数据库、内部系统、第三方服务) |
| Hooks | "每当 X 发生,就自动跑这个脚本" | 安全拦截、完成提醒、自动检查 |
| 插件 | 把 Skill / agent / MCP 等打包成可安装的单元 | 团队内分发工作流,安装官方或第三方扩展 |
10.1 子代理:让它学会"分身"
到目前为止,一直是一个 Kimi 在和你对话。其实每个会话背后是一个主代理,它还可以把聚焦的子任务派给子代理(sub-agent)去做。
子代理的关键特性是上下文隔离:它只看到主代理写给它的任务描述,看不到你们的对话历史;它干活时的中间过程(搜索、读文件的记录)也不会倒灌回主对话,只有最终结论会回来。这带来两个好处——主会话的上下文保持干净,多个子代理还可以并行工作、互不干扰。
Kimi Code 内置了三种子代理,开箱即用:
| 子代理 | 特点 | 适合 |
|---|---|---|
coder |
默认的全能型,能读写文件、跑命令 | 具体的开发任务 |
explore |
只读,专门探索代码库,绝不修改文件 | "先摸清情况"的调查类任务 |
plan |
只做方案设计,连 shell 都不能跑 | 架构设计、实施规划 |
多数时候,主代理会根据任务复杂度和子任务的独立性,自己判断什么时候该派子代理。你也可以直接在对话里点名:
先派一个 explore 子代理,摸清这个项目里和数据读写相关的文件,只调查不修改
每次派遣会以审批请求的形式出现(/yolo 模式下自动批准),你能看到它给子代理写的任务描述。
来个实战,体会"分身并行"的感觉:
我要做两件事,派两个子代理并行处理:
1. 用 explore 分析这个项目的数据流:数据从哪进、怎么存、怎么渲染到页面
2. 联网调研 30 种常见食物的热量参考值,整理成清单,为扩充 foods.js 做准备
最后把两份结论汇总给我
它会同时启动两个子代理——一个在本地只读分析代码,一个联网做调研——然后汇总两份报告。如果让主代理串行做,耗时取决于任务长度、启动和汇总开销,不能预设翻倍。
两个提醒:一是每个子代理都独立消耗额度,简单任务没必要分身,主代理自己干更经济;二是子代理继承主代理的权限规则,你批准过的"始终允许"对它们同样生效,不需要重新批准。
本章以 10.2 的一个 MCP 连接为必做;子代理、Hooks 和插件制作是选读。每次只增加一个能力,验证成功后再继续。
MCP 前先运行 node --version、npx --version。没有 Node 时按 Node.js 官方安装说明安装后重开终端。创建 kimi-mcp-lab 目录并放一个 hello.txt,配置中的占位绝对路径必须替换;Windows JSON 路径写作 C:\\Users\\你的用户名\\kimi-mcp-lab。连接后先列工具,再读取 hello.txt,最后在授权范围内创建 probe.txt 并由终端核对内容;连接图标正常不等于工具调用成功。
10.2 MCP:接上外部世界的工具
Kimi 自带的工具(读写文件、跑命令、联网搜索)已经很全,但总有覆盖不到的角落:查公司内部系统的数据、操作某个 SaaS 服务、读一个特殊格式的存储……**MCP(Model Context Protocol,模型上下文协议)**就是为此而生的开放标准——外部进程或服务按这个协议暴露工具,Kimi Code 作为客户端连上去,那些工具就和内置工具一样供它调用。
三种连接方式:stdio(CLI 在本地启动一个子进程,适合本地命令行工具)、HTTP(连接一个已在运行的远程服务)、SSE(旧式协议,新服务优先用 HTTP)。
配置写在哪里:一个 mcp.json 文件,分两级——用户级 ~/.kimi-code/mcp.json(对所有项目生效),项目级 <项目>/.kimi-code/mcp.json(只对当前仓库生效,同名条目覆盖用户级)。也可以在会话里输入 /mcp-config 用交互界面增删改,输入 /mcp 查看各服务器的连接状态。
来配一个最小的例子(官方示例的文件系统服务,需要机器上有 Node 环境的 npx;没有的话读懂原理即可):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/ABSOLUTE/PATH/kimi-mcp-lab"]
}
}
}
把它写进 ~/.kimi-code/mcp.json,然后新开一个会话(改配置对已经打开的会话不生效),输入 /mcp 就能看到 filesystem 服务已连接。之后 Kimi 就能调用 mcp__filesystem__read_file 这类工具读写已明确创建的 kimi-mcp-lab 练习目录中的文件——注意 MCP 工具的命名规律是 mcp__<服务器名>__<工具名>,审批面板里看到这个名字,你就知道它来自哪个外部服务。
安全上的四条纪律,请务必记住:
- 只连接你信任来源的 MCP 服务;
- 项目级
mcp.json里的 stdio 服务会在会话启动时执行本地命令——打开含有项目级 MCP 配置的陌生仓库时,Kimi 会弹出信任提示并列出将启动的命令,看清楚再点信任; - 审批 MCP 工具调用时,留意工具名和参数是否合理;高风险工具(写文件、执行命令)保持手动批准,别用
mcp__*通配符一次性放行; /yolo模式下 MCP 工具调用会自动批准——只有你完全信任所连接的服务时才敢这么用。
10.3 Hooks:事件驱动的自动触发
第 8 章的定时任务是"到点触发",Hooks 则是"出事触发":你预先告诉 CLI"每当某个事件发生,就自动运行这个脚本",脚本在你的本机执行,里面写什么都行。
典型用途有三类:安全拦截(它执行 shell 命令前,脚本检查有没有危险操作,有就拦下)、完成提醒(后台任务完成时弹个系统通知叫你回来)、自动检查(每次你发消息时,自动往上下文里附加当前 git 分支之类的背景信息)。
配置写在 ~/.kimi-code/config.toml 的 [[hooks]] 数组里,每条规则四个字段:
event:事件名(必填);matcher:可选的正则,过滤事件目标(比如只匹配某个工具);command:要执行的命令(必填);timeout:超时秒数,可选,默认 30 秒。
常用事件挑几个认识一下:
| 事件 | 触发时机 | 能否拦截 |
|---|---|---|
PreToolUse |
工具调用之前 | 能 |
PostToolUse |
工具成功执行之后 | 不能(纯观察) |
Stop |
模型即将结束当前回合 | 能 |
UserPromptSubmit |
你发送消息时 | 能 |
Notification |
后台任务状态变化 | 不能 |
SubagentStop |
子代理完成时 | 不能 |
脚本的返回规则很简单:退出码 0 表示放行,2 表示拦截(拦截原因通过 stderr 传给 Kimi),其他退出码、超时、崩溃都默认放行——这种"出错也放行"的设计叫 fail-open。所以 Hooks 适合做提醒和轻量拦截,不要把它当成唯一的安全屏障,真正的高危操作还是要靠权限审批。
实战一个立刻用得上的:让它改完代码后自动提醒我们跑测试。在 ~/.kimi-code/config.toml 里加:
[[hooks]]
event = "PostToolUse"
matcher = "Write|Edit"
command = "echo '提醒:代码有改动——如果动了 calc.js,请打开 tests.html 跑一遍测试'"
matcher 里的 Write|Edit 是正则,匹配"写入文件"和"编辑文件"两类工具。脚本的 stdout 会附加到上下文里,所以这句提醒 Kimi 自己也看得到——它收到提醒后,很可能主动就把测试跑了。保存配置后新开一个会话生效。
如果想做拦截(比如拦下包含 rm -rf 的命令),思路是:监听 PreToolUse、matcher 设为 Bash,脚本从 stdin 读事件 JSON、检查命令内容,发现危险就 exit 2。完整的示例脚本在官方文档的 Hooks 页面里有,需要时照抄改造即可。
10.4 插件:把能力打包带走
Skill 是一个文件,只能静静躺在你的目录里。如果想把一套工作流分享给别人——团队成员、其他项目的自己——就需要插件:把 Skill、自定义 agent、MCP 服务声明、Hooks 等打包成一个可安装的单元。
先看管理界面。 在会话里输入 /plugins,打开插件管理器,四个标签页用 Tab 切换:Installed(已安装)、Official(官方插件)、Curated(精选第三方)、Custom(从 URL 安装)。也可以用命令直接操作:/plugins install <路径或URL> 安装、/plugins list 查看、/plugins remove <id> 删除。改动插件后,运行 /reload 或 /new 才会生效。
官方插件值得知道,目前有三个,都能在 Official 标签页直接安装:
- Kimi Datasource:用自然语言查询金融行情、宏观经济、企业信息、学术论文、法律法规等专业数据(消耗会员额度);
- Kimi Browser Extension:让 AI 驱动你自己的浏览器完成网页任务(还需在浏览器里装配套扩展);
- Kimi Computer Use:让 AI 直接操作你的桌面应用(macOS / Windows)。
再动手打一个自己的插件,把第 9 章做的 weekly-review 技能包装起来。目录结构:
weekly-review-plugin/
├── kimi.plugin.json
└── skills/
└── weekly-review/
└── SKILL.md ← 第 9 章写好的那个文件,复制过来
kimi.plugin.json 的内容:
{
"name": "weekly-review",
"version": "1.0.0",
"description": "体重管理周回顾工作流",
"skills": "./skills/",
"interface": {
"displayName": "Weekly Review",
"shortDescription": "体重管理周回顾工作流"
}
}
然后在会话里运行 /plugins install ./weekly-review-plugin(换成你的实际路径),/plugins list 确认安装成功,再 /new 开个新会话,/skill:weekly-review 就能用了——只不过这次它是以"插件提供的技能"的身份出现的。
两个注意事项:本地安装时插件会被复制到 ~/.kimi-code/plugins/managed/,之后修改源目录不生效,要重新安装;插件目前是用户级安装,对所有项目生效。
理清 Skill 和插件的关系:Skill 是内容,插件是包装和分发方式。自己用,写 Skill 就够;要给别人用,就打成插件。
本章小结
这一章我们补齐了 Kimi Code 的扩展版图:
- 子代理:主代理可以把独立子任务派给
coder/explore/plan,上下文隔离、可并行,但每个子代理独立消耗额度; - MCP:通过
mcp.json(用户级/项目级)接入外部工具服务,工具名形如mcp__服务__工具;改配置要新开会话,安全四纪律别忘; - Hooks:在
config.toml的[[hooks]]里配置"事件 → 脚本",退出码 0 放行、2 拦截、出错默认放行(fail-open);适合做提醒和轻量拦截; - 插件:把 Skill 等打包成可安装单元,
/plugins管理,官方有 Datasource、浏览器扩展、Computer Use 三个插件;我们也把 weekly-review 打成了插件。
到这里,"怎么让 Kimi 更顺手"这个话题就讲透了。下一章我们换个"战场":把 Kimi 装进你的编辑器(VS Code、Zed、JetBrains),以及用 API Key 接入第三方工具。