context-mode Kimi Code安装完全教程:TOML hooks配置逐行讲解
2026/8/29 9:00:37 网站建设 项目流程

context-mode Kimi Code安装完全教程:TOML hooks配置逐行讲解

【免费下载链接】context-modeContext window optimization for AI coding agents. Sandboxes tool output (98% reduction), persists session memory, and enforces routing across 17 platforms via MCP + hooks.项目地址: https://gitcode.com/GitHub_Trending/cl/context-mode

context-mode是一款开源 AI 编码代理上下文优化工具:它以 MCP 服务器 + hooks 的形式运行,能把工具输出沙箱化(最高节省 98% 上下文窗口)、持久化会话记忆,并跨 17 个平台强制路由。本文是context-mode 在 Kimi Code CLI 的安装完全教程,重点把~/.kimi-code/config.toml里的 TOML hooks 配置逐行讲清楚——零基础也能一次装对。

一、为什么 Kimi Code 需要 context-mode?

如果你用过 AI 编码 CLI,应该都遇到过这个痛点:

  • 一次网页快照、一份日志文件,动辄几十 KB 涌进上下文窗口;
  • 会话一长,压缩(compact)时 Agent 就"忘记"了自己在改哪个文件、做到哪一步;
  • 上下文烧完了,token 账单也跟着烧。

context-mode 的思路是:原始数据不进上下文,只进本地 FTS5 索引库。Agent 需要时再搜索召回。配合 hooks,它还能在会话开始、工具调用前后、压缩前等关键节点自动介入,实现"断点续作"的会话连续性。

二、安装前准备(先检查这 2 项)

检查项要求验证命令
Kimi Code CLI已安装,kimi命令在 PATH 中kimi --version
Node.js>= 22.5(或使用 Bun)node -v

两项都满足后,进入正式安装。

三、一键安装:全局安装 context-mode

一条命令搞定:

npm install -g context-mode

安装成功后,系统里会出现一个context-mode命令,后面所有 hooks 命令都是它的子命令。建议顺手验证一下:

context-mode --version

💡 这一步只需要执行一次。它和 Claude Code 的插件市场安装方式不同——Kimi Code 没有插件市场,所以走的是"全局 npm 包 + 手动配置"路线。

四、第 1 步:注册 MCP 服务器

Kimi Code 读取 MCP 配置的文件是~/.kimi-code/mcp.json,写入以下 3 行核心配置:

{ "mcpServers": { "context-mode": { "command": "context-mode", "args": [] } } }

这告诉 Kimi Code:启动会话时,把context-mode作为 MCP 服务器拉起来。装好后,Agent 就能调用ctx_executectx_searchctx_index等 11 个 MCP 工具。

五、第 2 步:TOML hooks 配置逐行讲解(核心)

打开(或新建)~/.kimi-code/config.toml,粘贴以下内容:

[[hooks]] event = "PreToolUse" matcher = "Bash|Shell|Read|Edit|Write|WebFetch|Agent|ctx_execute|ctx_execute_file|ctx_batch_execute|ctx_fetch_and_index|ctx_search|ctx_index|mcp__" command = "context-mode hook kimi pretooluse" timeout = 30 [[hooks]] event = "PostToolUse" command = "context-mode hook kimi posttooluse" timeout = 30 [[hooks]] event = "SessionStart" command = "context-mode hook kimi sessionstart" timeout = 30 [[hooks]] event = "PreCompact" command = "context-mode hook kimi precompact" timeout = 30 [[hooks]] event = "UserPromptSubmit" command = "context-mode hook kimi userpromptsubmit" timeout = 30 [[hooks]] event = "Stop" command = "context-mode hook kimi stop" timeout = 30 [[hooks]] event = "SessionEnd" command = "context-mode hook kimi sessionend" timeout = 30

下面逐行拆解。📌

5.1 什么是[[hooks]]

TOML 语法里,[[hooks]]表示往hooks数组中新增一个元素。上面一共 7 个[[hooks]]块,就是注册了 7 个钩子,分别挂在会话生命周期的 7 个事件上。每块的字段含义:

字段必填含义
event触发事件,如PreToolUse(工具调用前)
matcher正则,匹配哪些工具名才触发(仅PreToolUse用)
command事件触发时要执行的 shell 命令
timeout超时秒数,超时则放弃该钩子

5.2 逐行讲:PreToolUse块(最重要的一个)

event = "PreToolUse"

事件类型:工具执行前触发。这是路由强制的核心——context-mode 在这里判断"这次工具调用是否应该被改道"。

matcher = "Bash|Shell|Read|Edit|Write|WebFetch|Agent|ctx_execute|..."

matcher是一个正则表达式,|表示"或"。含义是:只有当以下工具被调用时才触发本钩子——

  • Bash/Shell:命令执行(比如curl抓网页);
  • Read/Edit/Write:文件读写操作;
  • WebFetch:抓取网页;
  • Agent:子代理调用;
  • ctx_executectx_search等:context-mode 自家的 MCP 工具(需要放行并识别);
  • mcp__:前缀匹配所有 MCP 工具。

如果 Agent 想直接curl下载大网页,这个钩子就会拒绝(Kimi Code 的PreToolUse只支持 deny 一种决策——见 5.3),并引导它改用ctx_fetch_and_index:内容进本地索引,不进上下文。

command = "context-mode hook kimi pretooluse"

实际执行的命令。kimi是平台名,pretooluse是事件名。对应的源码实现在 hooks/kimi/pretooluse.mjs,它从 stdin 读取 Kimi 传来的 JSON,做路由判定,再输出 JSON 决策。

timeout = 30

30 秒超时。hooks 是同步阻塞的,防止某个钩子卡死整个会话。

5.3 其他 6 个事件块各管什么?

事件触发时机context-mode 在此做什么
PostToolUse每次工具调用完成后记录工具输出摘要、更新节省统计
SessionStart新会话启动时加载会话连续性数据库(SQLite)
PreCompact上下文压缩发生前把关键事件快照进 FTS5 索引,防止压缩后失忆
UserPromptSubmit你提交每轮消息时注入路由指令(Kimi 无additionalContext通道,走此通道)
Stop每一轮助手回答结束时记录本轮统计
SessionEnd整个会话真正关闭时(Kimi 独有,区别于Stop持久化/清理会话数据

两个容易混淆的点,专门提醒一下:

  • StopSessionEndStop是你每问一句它答完就触发一次;SessionEnd是退出kimi时才触发一次。两者都要配,缺一不可。
  • Kimi 的PreToolUse只认"拒绝":它的运行器会静默丢弃askupdatedInput(改参数)等字段,只有permissionDecision: "deny"或退出码 2 能拦截工具调用。所以 context-mode 对 Kimi 做的是"拒绝 + 引导改道",而不是直接改写你的命令。完整能力矩阵见官方文档 docs/adapters/kimi-code.md。

5.4 命令规律:好记不手抖

7 条命令其实是一个模板:

context-mode hook kimi <事件名小写>

平台固定为kimi,后面跟小写事件名(pretoolusesessionstart……)。配置模板可以直接参考仓库里的 configs/kimi/hooks.json(JSON 版清单,TOML 版见上面)。

六、验证安装是否成功

重启 Kimi Code CLI,开始新会话后输入:

ctx doctor

ctx doctor会运行完整诊断(运行时、hooks、FTS5 索引、版本一致性),全部显示[x]即安装成功。

接着输入ctx stats,能正常返回节省统计,说明MCP 服务器也连通了

不想靠对话验证的话,也可以在终端手动测一个钩子:

echo '{"tool_name":"Bash","tool_input":{"command":"curl https://example.com"}}' \ | context-mode hook kimi pretooluse

预期输出:一段 JSON,路由指引会引导改用ctx_execute/ctx_fetch_and_index

七、常见问题速查

Q1:hooks 配了但没生效?先确认context-mode命令在 PATH 里(which context-mode)。Kimi 的 hooks 命令走 shell 解析,命令找不到会静默失败。

Q2:会话数据存在哪里?默认在~/.kimi-code/context-mode/sessions/。如果你设置了环境变量KIMI_CODE_HOME,则跟随它迁移到$KIMI_CODE_HOME/context-mode/sessions/——与 Kimi Code 自己的数据根目录解析方式一致。

Q3:为什么UserPromptSubmitSessionStart看起来功能重叠?Kimi 没有additionalContext注入通道(上游运行器不解析该字段),所以上下文注入统一改由UserPromptSubmitmessage通道完成;SessionStart只负责打开会话连续性数据库。

Q4:能否让钩子直接改写我的工具参数?不能。Kimi Code 的运行器会静默丢弃updatedInput字段,只能"拒绝 + 引导"。

八、写在最后:3 步回顾

  1. npm install -g context-mode(全局装一次)
  2. ~/.kimi-code/mcp.json加 MCP 服务器,往~/.kimi-code/config.toml加 7 个 hooks 块
  3. 重启kimi,用ctx doctor验证

完成后,你的 Kimi Code 会话就有了:大输出自动沙箱、压缩不失忆、PreToolUse路由强制改道。完整的平台差异说明和源码引用,可查阅 docs/adapters/kimi-code.md;Kimi 适配器的实现代码在 src/adapters/kimi/,hooks 实现(含platform.mjs平台标记、pretooluse.mjs路由拦截)在 hooks/kimi/,想看"路由判定到底怎么写的"可以直接翻源码。🚀

【免费下载链接】context-modeContext window optimization for AI coding agents. Sandboxes tool output (98% reduction), persists session memory, and enforces routing across 17 platforms via MCP + hooks.项目地址: https://gitcode.com/GitHub_Trending/cl/context-mode

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询