← 全部极客知识库

主流 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 接入第三方工具。