context-mode
context-mode 是一款专为 AI 代理设计的隐私优先型上下文管理工具,旨在解决大模型在长对话中因工具调用导致上下文窗口迅速耗尽的痛点。当 AI 频繁调用外部工具(如抓取网页、读取日志)时,原始数据往往占用大量令牌空间,迫使系统在压缩对话时丢失关键任务状态。
context-mode 通过两层机制巧妙化解这一难题:一是“沙盒化”工具调用,将原始数据隔离在上下文窗口之外,仅保留极小的摘要信息,可实现高达 98% 的上下文节省;二是利用 SQLite 数据库持续追踪文件编辑、Git 操作及用户决策等会话状态。即使对话历史被压缩,它也能通过全文检索技术精准召回相关信息,确保 AI 能无缝接续之前的工作进度,同时支持会话结束后自动清除数据以保障隐私。
该工具特别适合依赖 MCP 协议进行复杂开发的程序员、需要长时间维持任务状态的 AI 工程师以及重度使用 Claude Code 等智能编码助手的开发者。其独特之处在于不仅大幅降低了 Token 消耗,更通过结构化存储与语义检索的结合,让 AI 代理拥有了真正的“长期记忆”,在保护隐私的前提下显著提升了多轮交互的连贯性与效率。
使用场景
资深后端工程师正在利用 AI 助手排查一个涉及多个微服务日志和 GitHub Issue 的复杂生产事故,需要频繁调用工具获取大量原始数据。
没有 context-mode 时
- 上下文迅速耗尽:每次调用 Playwright 截图或拉取数十个 GitHub Issue,都会将几十 KB 的原始数据直接堆入对话窗口,短短半小时就占用了 40% 的上下文额度。
- 关键记忆丢失:当系统被迫压缩对话以节省空间时,AI 会“遗忘”之前编辑过哪些文件、哪些任务正在进行中,导致重复劳动或逻辑断层。
- 隐私与噪音风险:敏感的访问日志和无关的原始数据明文暴露在上下文中,既增加了隐私泄露风险,又干扰了模型对核心问题的判断。
- 会话无法延续:一旦开启新对话,之前的排查进度和决策记录全部清零,无法实现跨会话的知识继承。
使用 context-mode 后
- 极致压缩上下文:context-mode 将 315 KB 的原始工具数据沙箱化处理,仅保留 5.4 KB 的索引引用,实现了 98% 的上下文节省,让长程任务成为可能。
- 智能状态回溯:所有文件修改、Git 操作和用户决策被自动存入 SQLite 索引;即使对话被压缩,AI 也能通过 BM25 搜索精准召回相关片段,无缝接续工作流。
- 隐私优先架构:原始敏感数据始终隔离在沙箱中,只有经过筛选的相关信息才会按需呈现,从源头保障了数据安全。
- 灵活的会话管理:支持“断点续传”式的深度协作,同时也提供“一键清空”选项,确保新任务能在完全干净的环境中启动,互不干扰。
context-mode 通过虚拟化上下文层,彻底解决了 AI 代理在处理海量数据时的记忆丢失与资源瓶颈问题,让长周期复杂开发任务变得连续且高效。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
上下文模式
上下文问题的另一半。
问题
每次调用MCP工具时,原始数据都会被直接塞进你的上下文窗口。一个Playwright快照就要占用56 KB。二十个GitHub问题则占59 KB。而一份访问日志就有45 KB。仅仅30分钟后,你40%的上下文就消失了。当代理为了腾出空间而压缩对话时,它会忘记你正在编辑哪些文件、有哪些任务正在进行,以及你上次请求了什么。
上下文模式是一个MCP服务器,它解决了这个问题的两个方面:
- 上下文保存 — 沙盒工具将原始数据隔离在上下文窗口之外。原本315 KB的数据现在只需5.4 KB,减少了98%。
- 会话连续性 — 每一次文件编辑、Git操作、任务、错误以及用户决策都会被记录在SQLite数据库中。当对话被压缩时,上下文模式并不会把这些数据重新放回上下文中——而是将这些事件索引到FTS5中,并通过BM25搜索只检索相关的内容。这样模型就能从你上次中断的地方继续工作。如果你没有使用
--continue选项,之前的会话数据会被立即删除——这意味着新会话将从一张白纸开始。
https://github.com/user-attachments/assets/07013dbf-07c0-4ef1-974a-33ea1207637b
安装
平台按照安装复杂度分组。支持钩子的平台可以自动执行路由规则。而不支持钩子的平台则需要手动复制一次路由配置文件。
Claude Code — 插件市场,全自动
先决条件: Claude Code v1.0.33及以上版本(claude --version)。如果系统无法识别/plugin命令,请先更新:brew upgrade claude-code 或 npm update -g @anthropic-ai/claude-code。
安装:
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode
重启Claude Code(或运行/reload-plugins)。
验证:
/context-mode:ctx-doctor
所有检查项都应显示[x]。该诊断工具会验证运行时环境、钩子、FTS5以及插件注册情况。
路由: 自动。SessionStart钩子会在运行时注入路由指令——无需向你的项目中写入任何文件。该插件会注册所有钩子(PreToolUse、PostToolUse、PreCompact、SessionStart)以及6个沙盒工具(ctx_batch_execute、ctx_execute、ctx_execute_file、ctx_index、ctx_search、ctx_fetch_and_index)。
| 斜杠命令 | 功能 |
|---|---|
/context-mode:ctx-stats |
上下文节省情况——按工具细分、消耗的token数量、节省比例。 |
/context-mode:ctx-doctor |
诊断信息——运行时环境、钩子、FTS5、插件注册情况、版本号。 |
/context-mode:ctx-upgrade |
拉取最新版本、重建、迁移缓存、修复钩子。 |
注意: 斜杠命令是Claude Code插件的功能。在其他平台上,你可以在聊天中输入
ctx stats、ctx doctor或ctx upgrade——模型会自动调用MCP工具。详情请参阅实用命令。
替代方案——仅MCP安装(无钩子或斜杠命令)
claude mcp add context-mode -- npx -y context-mode
这将为你提供6个沙盒工具,但不会自动进行路由设置。模型仍然可以使用这些工具,只是不会优先选择它们而不是原始的Bash/Read/WebFetch等工具。这对于在决定是否完整安装插件之前进行试用非常合适。
Gemini CLI — 一个配置文件,包含钩子
先决条件: Node.js 18+,已安装Gemini CLI。
安装:
全局安装context-mode:
npm install -g context-mode将以下内容添加到
~/.gemini/settings.json中。这个单一的配置文件会注册MCP服务器和全部四个钩子:{ "mcpServers": { "context-mode": { "command": "context-mode" } }, "hooks": { "BeforeTool": [ { "matcher": "run_shell_command|read_file|read_many_files|grep_search|search_file_content|web_fetch|activate_skill|mcp__plugin_context-mode", "hooks": [{ "type": "command", "command": "context-mode hook gemini-cli beforetool" }] } ], "AfterTool": [ { "matcher": "", "hooks": [{ "type": "command", "command": "context-mode hook gemini-cli aftertool" }] } ], "PreCompress": [ { "matcher": "", "hooks": [{ "type": "command", "command": "context-mode hook gemini-cli precompress" }] } ], "SessionStart": [ { "matcher": "", "hooks": [{ "type": "command", "command": "context-mode hook gemini-cli sessionstart" }] } ] } }重启Gemini CLI。
验证:
/mcp list
你应该能看到context-mode: ... - 已连接。
路由: 自动。SessionStart钩子会在运行时注入路由指令——不会向你的项目中写入GEMINI.md文件。所有四个钩子(BeforeTool、AfterTool、PreCompress、SessionStart)都会以编程方式处理路由规则的执行。
为什么要有BeforeTool匹配器? 它只针对那些会产生大量输出的工具(
run_shell_command、read_file、read_many_files、grep_search、search_file_content、web_fetch、activate_skill),再加上context-mode自己的工具(mcp__plugin_context-mode)。这样做可以避免对轻量级工具不必要的钩子开销,同时拦截所有可能使你的上下文窗口爆满的工具。
VS Code Copilot — 带有SessionStart钩子
先决条件: Node.js 18+,安装了Copilot Chat v0.32及更高版本的VS Code。
安装:
全局安装context-mode:
npm install -g context-mode在你的项目根目录下创建
.vscode/mcp.json文件:{ "servers": { "context-mode": { "command": "context-mode" } } }创建
.github/hooks/context-mode.json文件:{ "hooks": { "PreToolUse": [ { "type": "command", "command": "context-mode hook vscode-copilot pretooluse" } ], "PostToolUse": [ { "type": "command", "command": "context-mode hook vscode-copilot posttooluse" } ], "SessionStart": [ { "type": "command", "command": "context-mode hook vscode-copilot sessionstart" } ] } }重启 VS Code。
验证: 打开 Copilot Chat,输入 ctx stats。Context-mode 工具应该会显示并作出响应。
路由: 自动路由。SessionStart 钩子会在运行时注入路由指令——无需在你的项目中生成 copilot-instructions.md 文件。
完整的钩子配置(包括 PreCompact)请参阅:configs/vscode-copilot/hooks.json
Cursor — 带停止支持的钩子
先决条件: Node.js 18+,启用代理模式的 Cursor。
安装:
全局安装 context-mode:
npm install -g context-mode在你的项目根目录下创建
.cursor/mcp.json文件(或在~/.cursor/mcp.json中进行全局配置):{ "mcpServers": { "context-mode": { "command": "context-mode" } } }创建
.cursor/hooks.json文件(或在~/.cursor/hooks.json中进行全局配置):{ "version": 1, "hooks": { "preToolUse": [ { "command": "context-mode hook cursor pretooluse", "matcher": "Shell|Read|Grep|WebFetch|Task|MCP:ctx_execute|MCP:ctx_execute_file|MCP:ctx_batch_execute" } ], "postToolUse": [ { "command": "context-mode hook cursor posttooluse" } ], "stop": [ { "command": "context-mode hook cursor stop" } ] } }preToolUse匹配器是可选的——如果没有它,钩子会对所有工具生效。stop钩子会在代理回合结束时触发,并可以发送后续消息以继续循环。此外还提供afterAgentResponse钩子(一次性调用,接收完整响应文本)。复制路由规则文件。由于 Cursor 缺少 SessionStart 钩子,模型需要一个规则文件来了解路由信息:
mkdir -p .cursor/rules cp node_modules/context-mode/configs/cursor/context-mode.mdc .cursor/rules/context-mode.mdc重启 Cursor 或打开一个新的代理会话。
验证: 打开 Cursor 设置 > MCP,确认“context-mode”已连接。在代理聊天中输入 ctx stats。
路由: 钩子通过 preToolUse、postToolUse 和 stop 程序化地强制执行路由。由于 Cursor 的 sessionStart 钩子目前被其验证器拒绝(论坛报告),因此 .cursor/rules/context-mode.mdc 文件会在会话开始时提供路由指导。项目级别的 .cursor/hooks.json 会覆盖 ~/.cursor/hooks.json。
完整配置:configs/cursor/hooks.json | configs/cursor/mcp.json | configs/cursor/context-mode.mdc
OpenCode — 带钩子的 TypeScript 插件
先决条件: Node.js 18+,已安装 OpenCode。
安装:
全局安装 context-mode:
npm install -g context-mode将以下内容添加到你项目根目录下的
opencode.json文件中(或在~/.config/opencode/opencode.json中进行全局配置):{ "$schema": "https://opencode.ai/config.json", "mcp": { "context-mode": { "type": "local", "command": ["context-mode"] } }, "plugin": ["context-mode"] }mcp条目用于注册 6 个沙盒工具。plugin条目则启用钩子——OpenCode 会在每次工具执行之前和之后直接调用插件的 TypeScript 函数,从而阻止危险命令并强制执行沙盒路由。(可选) 复制路由规则文件。由于 OpenCode 缺少 SessionStart 钩子,模型需要一个
AGENTS.md文件来了解路由信息:cp node_modules/context-mode/configs/opencode/AGENTS.md AGENTS.md这将告诉模型应使用哪些工具以及哪些命令会被阻止。如果没有这个文件,钩子仍然会强制执行路由——但模型将不知道为什么某个命令会被拒绝。
重启 OpenCode。
验证: 在 OpenCode 会话中输入 ctx stats。Context-mode 工具应该会显示并作出响应。
路由: 钩子通过 tool.execute.before 和 tool.execute.after 程序化地强制执行路由。可选的 AGENTS.md 文件为模型提供了路由意识所需的指导。experimental.session.compacting 钩子会在对话压缩时构建恢复快照。
注意: OpenCode 的 SessionStart 钩子尚未可用(#14808),因此不支持启动或恢复会话。不过,通过插件可以完全实现压缩后的恢复功能。
完整配置:configs/opencode/opencode.json | configs/opencode/AGENTS.md
KiloCode — 带钩子的 TypeScript 插件
先决条件: Node.js 18+,已安装 KiloCode。
安装:
全局安装 context-mode:
npm install -g context-mode将以下内容添加到你项目根目录下的
kilo.json文件中(或在~/.config/kilo/kilo.json中进行全局配置):{ "$schema": "https://app.kilo.ai/config.json", "mcp": { "context-mode": { "type": "local", "command": ["context-mode"] } }, "plugin": ["context-mode"] }mcp条目用于注册 6 个沙盒工具。plugin条目则启用钩子——KiloCode 会在每次工具执行之前和之后直接调用插件的 TypeScript 函数,从而阻止危险命令并强制执行沙盒路由。(可选) 复制路由规则文件。由于 KiloCode 采用与 OpenCode 相同的插件架构且同样缺少 SessionStart 钩子,模型需要一个
AGENTS.md文件来了解路由信息:cp node_modules/context-mode/configs/opencode/AGENTS.md AGENTS.md重启 KiloCode。
验证: 在 KiloCode 会话中输入 ctx stats。Context-mode 工具应该会显示并作出响应。
路由: 钩子通过 tool.execute.before 和 tool.execute.after 程序化地强制执行路由。可选的 AGENTS.md 文件为模型提供了路由意识所需的指导。experimental.session.compacting 钩子会在对话压缩时构建恢复快照。
注意: KiloCode 与 OpenCode 共享相同的插件架构,使用 OpenCodeAdapter,并采用平台特定的配置路径(
kilo.json代替opencode.json,~/.config/kilo/代替~/.config/opencode/)。SessionStart 钩子是否可用取决于 KiloCode 的实现。
OpenClaw / Pi Agent — 原生网关插件
先决条件: 运行中的 OpenClaw 网关(>2026.1.29),Node.js 22+。
context-mode 作为原生 OpenClaw 网关插件运行,针对的是 Pi Agent 会话(读取/写入/编辑/Bash 工具)。与其他平台不同,这里没有单独的 MCP 服务器——该插件直接通过 OpenClaw 的 插件 API 注册到网关运行时中。
安装:
克隆并安装:
git clone https://github.com/mksglu/context-mode.git cd context-mode npm run install:openclaw安装程序会使用您环境中的
$OPENCLAW_STATE_DIR(默认:/openclaw)。若要指定自定义路径:npm run install:openclaw -- /path/to/openclaw-state常见位置:Docker —
/openclaw(默认)。本地 —~/.openclaw或您设置OPENCLAW_STATE_DIR的任何位置。安装程序会完成所有操作:
npm install、npm run build、better-sqlite3原生重建、在runtime.json中注册扩展,并通过 SIGUSR1 重启网关。打开一个 Pi Agent 会话。
验证: 插件会通过 api.on()(生命周期)和 api.registerHook()(命令)注册 8 个钩子。输入 ctx stats 确认工具已加载。
路由: 自动。所有工具拦截、会话跟踪和压缩恢复钩子都会自动激活——无需手动配置钩子或路由文件。
最低版本: OpenClaw >2026.1.29——此版本包含来自 PR #9761 的
api.on()生命周期修复。在较旧版本上,生命周期钩子会静默失败。适配器会回退到数据库快照重建(精度较低,但能保留关键状态)。
Codex CLI — 钩子 + MCP
先决条件: Node.js 18+,已安装 Codex CLI。
安装:
全局安装 context-mode:
npm install -g context-mode添加到
~/.codex/config.toml:[mcp_servers.context-mode] command = "context-mode"添加用于强制执行路由和会话跟踪的钩子。创建
~/.codex/hooks.json:{ "hooks": { "PreToolUse": [{ "hooks": [{ "type": "command", "command": "context-mode hook codex pretooluse" }] }], "PostToolUse": [{ "hooks": [{ "type": "command", "command": "context-mode hook codex posttooluse" }] }], "SessionStart": [{ "hooks": [{ "type": "command", "command": "context-mode hook codex sessionstart" }] }] } }PreToolUse强制执行沙箱路由(阻止危险命令,重定向至 MCP 工具)。PostToolUse捕获会话事件。SessionStart在压缩后恢复状态。复制路由说明(即使使用钩子,也建议复制以获得完整的路由意识):
cp node_modules/context-mode/configs/codex/AGENTS.md ./AGENTS.md若需全局使用:
cp node_modules/context-mode/configs/codex/AGENTS.md ~/.codex/AGENTS.md。全局配置适用于所有项目。如果两者都存在,Codex CLI 会将它们合并。重启 Codex CLI。
验证: 启动一个会话并输入 ctx stats。Context-mode 工具应显示并响应。
路由: 钩子通过 PreToolUse 以编程方式强制执行路由。PostToolUse 跟踪会话事件。SessionStart 恢复状态。可选的 AGENTS.md 文件为模型提供路由说明。Codex CLI 的钩子系统使用与 Claude Code 相同的 JSON stdin/stdout 通信协议,但不支持参数或输出修改。
Antigravity — 仅 MCP,无钩子
先决条件: Node.js 18+,已安装 Antigravity。
安装:
全局安装 context-mode:
npm install -g context-mode添加到
~/.gemini/antigravity/mcp_config.json:{ "mcpServers": { "context-mode": { "command": "context-mode" } } }复制路由说明(Antigravity 不支持钩子):
cp node_modules/context-mode/configs/antigravity/GEMINI.md ./GEMINI.md重启 Antigravity。
验证: 在 Antigravity 会话中,输入 ctx stats。Context-mode 工具应显示并响应。
路由: 手动。GEMINI.md 文件是唯一的强制手段(约 60% 的合规性)。没有程序化拦截。通过 MCP 协议握手自动检测(clientInfo.name),无需手动配置平台。
完整配置:configs/antigravity/mcp_config.json | configs/antigravity/GEMINI.md
Kiro — 带转向文件的钩子
先决条件: Node.js 18+,Kiro 已启用 MCP(设置 > 搜索“MCP”)。
安装:
全局安装 context-mode:
npm install -g context-mode添加到您项目的
.kiro/settings/mcp.json(或~/.kiro/settings/mcp.json用于全局配置):{ "mcpServers": { "context-mode": { "command": "context-mode" } } }创建
.kiro/hooks/context-mode.json:{ "name": "context-mode", "description": "用于保护上下文窗口的 Context-mode 钩子", "hooks": { "preToolUse": [ { "matcher": "*", "command": "context-mode hook kiro pretooluse" } ], "postToolUse": [ { "matcher": "*", "command": "context-mode hook kiro posttooluse" } ] } }复制路由说明。由于 Kiro 的
agentSpawn(相当于 SessionStart)尚未实现,因此模型在会话开始时需要一份路由文件:cp node_modules/context-mode/configs/kiro/KIRO.md ./KIRO.md重启 Kiro。
验证: 打开 Kiro 面板 > MCP 服务器选项卡,确认“context-mode”显示绿色状态指示灯。在聊天中输入 ctx stats。
路由: 钩子通过 preToolUse/postToolUse 以编程方式强制执行路由。KIRO.md 文件提供了路由说明,因为 agentSpawn(SessionStart 的等效物)尚未连接。工具名称显示为 @context-mode/ctx_batch_execute、@context-mode/ctx_search 等。通过 MCP 协议握手自动检测。
完整配置文件:configs/kiro/mcp.json | configs/kiro/agent.json | configs/kiro/KIRO.md
Zed — 仅支持MCP,无钩子
先决条件: Node.js 18+,已安装Zed。
安装:
全局安装context-mode:
npm install -g context-mode将以下内容添加到
~/.config/zed/settings.json(Windows:%APPDATA%\Zed\settings.json):{ "context_servers": { "context-mode": { "command": { "path": "context-mode" } } } }注意:Zed使用
"context_servers"和"command": { "path": "..." }的语法,而不是其他平台使用的"mcpServers"或"command": "..."。复制路由指令(Zed不支持钩子):
cp node_modules/context-mode/configs/zed/AGENTS.md ./AGENTS.md重启Zed(或保存
settings.json— Zed会在配置更改时自动重启上下文服务器)。
验证: 打开代理面板(Cmd+Shift+A),进入设置,检查“context-mode”旁边的指示灯——绿色表示已激活。在代理聊天中输入 ctx stats。
路由: 手动。AGENTS.md 文件是唯一的执行手段(约60%的合规率)。没有程序化的拦截机制。工具名称显示为 mcp:context-mode:ctx_batch_execute、mcp:context-mode:ctx_search 等。通过MCP协议握手自动检测。
Pi Coding Agent — 具有完整钩子支持的扩展
先决条件: Node.js 18+,已安装Pi Coding Agent。
安装:
克隆扩展:
git clone https://github.com/mksglu/context-mode.git ~/.pi/extensions/context-mode cd ~/.pi/extensions/context-mode npm install npm run build将以下内容添加到
~/.pi/agent/mcp.json(或项目级别的.pi/mcp.json):{ "mcpServers": { "context-mode": { "command": "node", "args": ["/home/youruser/.pi/extensions/context-mode/node_modules/context-mode/start.mjs"] } } }注意: JSON不会展开
~。请将/home/youruser替换为你的真实主目录(运行echo $HOME查看)。重启Pi。
验证: 在Pi会话中输入 ctx stats。Context-mode工具应出现并响应。
路由: 自动。该扩展注册了所有关键生命周期事件(tool_call、tool_result、session_start、session_before_compact),从而提供完整的会话连续性和路由执行。
构建先决条件 (CentOS、RHEL、Alpine)
Context Mode在Node.js上使用better-sqlite3,它为大多数平台提供了预编译的原生二进制文件。在glibc >= 2.31的系统上(Ubuntu 20.04+、Debian 11+、Fedora 34+、macOS、Windows),只需运行 npm install 即可,无需任何构建工具。
Bun用户: 无需进行原生编译。Context Mode会自动检测Bun,并通过兼容性适配器使用内置的 bun:sqlite 模块。better-sqlite3 及其所有构建依赖项都会被完全跳过。
在较旧的glibc系统上(CentOS 7/8、RHEL 8、Debian 10),预编译的二进制文件无法加载,better-sqlite3会自动回退到从源代码编译,即通过 prebuild-install || node-gyp rebuild --release 进行编译。这需要C++20编译器(GCC 10+)、Make和带有setuptools的Python。
CentOS 8 / RHEL 8(glibc 2.28):
dnf install -y gcc-toolset-10-gcc gcc-toolset-10-gcc-c++ make python3 python3-setuptools
scl enable gcc-toolset-10 'npm install -g context-mode'
CentOS 7 / RHEL 7(glibc 2.17):
yum install -y centos-release-scl
yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ make python3
pip3 install setuptools
scl enable devtoolset-10 'npm install -g context-mode'
Alpine Linux:
Alpine的预编译二进制文件(musl)在better-sqlite3 v12.8.0+中可用。如果使用 ^12.6.2 的依赖范围,npm install 会解析到最新的12.x版本,在Alpine上无需构建工具即可正常工作。如果你锁定较旧的版本:
apk add build-base python3 py3-setuptools
npm install -g context-mode
工具
| 工具 | 功能 | 保存的上下文 |
|---|---|---|
ctx_batch_execute |
在一次调用中执行多个命令并搜索多个查询。 | 986 KB → 62 KB |
ctx_execute |
以11种语言运行代码。只有标准输出会进入上下文。 | 56 KB → 299 B |
ctx_execute_file |
在沙箱中处理文件。原始内容永远不会离开。 | 45 KB → 155 B |
ctx_index |
将Markdown分块并使用BM25排名索引到FTS5中。 | 60 KB → 40 B |
ctx_search |
在一次调用中使用多个查询检索索引内容。 | 按需检索 |
ctx_fetch_and_index |
获取URL、分块并索引。24小时TTL缓存——重复调用会跳过网络。使用 force: true 可绕过缓存。 |
60 KB → 40 B |
ctx_stats |
显示上下文节省量、调用次数和会话统计信息。 | — |
ctx_doctor |
诊断安装情况:运行时、钩子、FTS5、版本等。 | — |
ctx_upgrade |
从GitHub升级到最新版本,重新构建并重新配置钩子。 | — |
沙箱的工作原理
每次调用 ctx_execute 都会启动一个独立的子进程,拥有自己的进程边界。脚本之间无法访问彼此的内存或状态。子进程会运行你的代码,捕获标准输出,而只有这部分输出会进入对话上下文。原始数据——日志文件、API响应、快照——永远不会离开沙箱。
目前支持11种语言运行时:JavaScript、TypeScript、Python、Shell、Ruby、Go、Rust、PHP、Perl、R和Elixir。Bun会被自动检测到,使JS/TS的执行速度提升3至5倍。
经过身份验证的CLI可以通过凭据传递工作——gh、aws、gcloud、kubectl、docker 会继承环境变量和配置路径,而不会将其暴露给对话。当输出超过5 KB且提供了意图时,Context Mode会切换到基于意图的过滤模式:它会将完整输出索引到知识库中,搜索与你的意图匹配的部分,并仅返回相关结果,同时提供可用于后续查询的可搜索术语词汇表。
知识库的工作原理
ctx_index 工具会按照标题对 Markdown 内容进行分块,同时保持代码块完整,然后将这些内容存储在一个 SQLite FTS5(全文搜索 5)虚拟表中。搜索使用 BM25 排序——一种基于概率的相关性算法,它根据词频、逆文档频率以及文档长度归一化来为文档打分。在索引时应用了 Porter 词干提取,因此“running”、“runs”和“ran”都会匹配到同一个词干。为了精确的导航查询,标题和各级标题在 BM25 打分中会被赋予 5 倍权重。
当你调用 ctx_search 时,它会返回围绕匹配查询词的相关内容片段——不是完整的文档,也不是近似结果,而是实际被索引的内容,并且会在你所寻找的关键信息周围进行智能提取。ctx_fetch_and_index 将这一功能扩展到了 URL:抓取网页、将 HTML 转换为 Markdown、分块并建立索引。原始页面永远不会进入上下文。你可以使用 contentType 参数按类型过滤结果(例如 code 或 prose)。
排序:倒数排名融合
搜索会运行两种并行策略,并通过 倒数排名融合(RRF) 将它们合并:
- Porter 词干提取 — 使用 FTS5 MATCH 和 Porter 分词器。“caching”会匹配“cached”、“caches”、“cach”。
- 三元子串 — FTS5 的三元组分词器可以匹配部分字符串。“useEff”会找到“useEffect”,“authenticat”会找到“authentication”。
RRF 将这两个排序列表合并成一个单一的结果集,因此在两种策略中都排名靠前的文档,会比只在其中一种策略中排名靠前的文档更靠前。这取代了旧的级联回退方法,在该方法中,只有当 Porter 分词器没有返回任何结果时,才会使用三元子串的结果。
近邻重新排序
多词查询会进行额外的重新排序。查询词出现得越接近,结果就会被提升——例如,“session continuity”会让那些查询词相邻出现的段落排名高于“session”和“continuity”相隔数段才出现的页面。
模糊纠错
在重新搜索之前,Levenshtein 距离会纠正拼写错误。“kuberntes”会被修正为“kubernetes”,“autentication”会被修正为“authentication”。
智能片段
搜索结果采用智能提取,而不是简单的截断。与其返回前 N 个字符(可能会错过重要内容),Context Mode 会找到你的查询词在内容中出现的位置,并返回这些匹配点周围的窗口。
TTL 缓存
索引后的内容会持久化到每个项目的 SQLite 数据库中,路径为 ~/.context-mode/content/。当调用 ctx_fetch_and_index 处理一个在过去 24 小时内已经索引过的 URL 时,抓取过程会被完全跳过。模型会直接从现有的索引中进行搜索。
- 新鲜(<24 小时): 返回缓存提示(0.3KB),而不是重新抓取(48KB+)。模型继续执行
ctx_search。 - 过时(>24 小时): 会静默地重新抓取。无需用户操作。
force: true: 忽略缓存,无论 TTL 如何都会重新抓取。- 14 天清理: 启动时会删除超过 14 天的内容数据库和来源。
这意味着使用 --continue 继续会话时,索引过的文档会在重启后仍然保留。无需重新抓取,也不会浪费上下文 token。
ctx_stats 会分别报告缓存性能:命中次数、避免的数据量、节省的网络请求数量,以及包括缓存在内的总上下文节省量。
渐进式限流
- 调用 1–3 次: 正常结果(每次查询 2 条)
- 调用 4–8 次: 减少结果(每次查询 1 条)并发出警告
- 调用 9 次及以上: 被阻止——重定向到
ctx_batch_execute
会话连续性
当上下文窗口满载时,代理会压缩对话——丢弃较旧的消息以腾出空间。如果没有会话跟踪,模型就会忘记它正在编辑哪些文件、正在进行哪些任务、解决了哪些错误,以及你上次询问了什么。
Context Mode 会捕获你在会话期间发生的每一个有意义事件,并将其持久化到每个项目的 SQLite 数据库中。当对话被压缩(或你使用 --continue 恢复会话)时,你的工作状态会自动重建——模型会从你上次的提示继续,而不需要你重复任何内容。
会话连续性需要 4 个钩子协同工作:
| 钩子 | 作用 | Claude Code | Gemini CLI | VS Code Copilot | Cursor | OpenCode | KiloCode | OpenClaw | Codex CLI | Antigravity | Kiro | Zed | Pi |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PreToolUse | 在工具执行前强制执行沙盒路由 | 是 | -- | -- | 是 | -- | -- | -- | 是 | -- | 是 | -- | ✓(通过 tool_call 事件) |
| PostToolUse | 捕捉每次工具调用后的事件 | 是 | 是 | 是 | 是 | 插件 | 插件 | 插件 | 是 | -- | 是 | -- | ✓(通过 tool_result 事件) |
| UserPromptSubmit | 捕捉用户的决策和修正 | 是 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
| PreCompact | 在压缩前构建快照 | 是 | 是 | 是 | -- | 插件 | 插件 | 插件 | -- | -- | -- | -- | ✓(通过 session_before_compact 事件) |
| SessionStart | 在压缩或恢复后恢复状态 | 是 | 是 | 是 | -- | -- | -- | 插件 | 是 | -- | -- | -- | ✓(通过 session_start 事件) |
| 会话完整性 | 完整 | 高 | 高 | 部分 | 高 | 高 | 高 | 部分 | -- | 部分 | -- | 高 |
注意: 完整的会话连续性(捕获 + 快照 + 恢复)适用于 Claude Code、Gemini CLI 和 VS Code Copilot。OpenCode 提供 高 会话连续性:它会捕捉工具事件并通过插件注入压缩快照,但目前尚未提供 SessionStart 功能(#14808),因此不支持启动或恢复时的状态还原。KiloCode 通过 OpenCodeAdapter 共享与 OpenCode 相同的插件架构,因此其连续性水平取决于 KiloCode 是否支持 SessionStart 功能。Cursor 通过
preToolUse/postToolUse捕捉工具事件,但目前 Cursor 的验证程序拒绝接受session_start钩子(论坛报告),因此尚无法实现压缩后的会话恢复。OpenClaw 使用原生网关插件钩子(api.on())来实现完整的会话连续性。Pi Coding Agent 通过扩展钩子(tool_call、tool_result、session_start、session_before_compact)提供高会话连续性。Codex CLI 通过 PreToolUse/PostToolUse/SessionStart 提供基于钩子的会话跟踪,使用与 Claude Code 相同的 JSON stdin/stdout 协议。Antigravity、Kiro 和 Zed 在当前版本中没有钩子支持,因此无法进行会话跟踪。
捕获的内容
每次工具调用都会经过钩子,从中提取结构化的事件:
| 类别 | 事件 | 优先级 | 捕获时机 |
|---|---|---|---|
| 文件 | 读取、编辑、写入、glob、grep | 关键 (P1) | 工具使用后 |
| 任务 | 创建、更新、完成 | 关键 (P1) | 工具使用后 |
| 规则 | CLAUDE.md / GEMINI.md / AGENTS.md 的路径 + 内容 | 关键 (P1) | 会话开始时 |
| 决策 | 用户修正、偏好(“改用 X”、“不要做 Y”) | 高 (P2) | 用户提示提交时 |
| Git | checkout、commit、merge、rebase、stash、push、pull、diff、status | 高 (P2) | 工具使用后 |
| 错误 | 工具失败、非零退出码 | 高 (P2) | 工具使用后 |
| 环境 | 当前工作目录变更、venv、nvm、conda、包安装 | 高 (P2) | 工具使用后 |
| MCP 工具 | 所有 mcp__* 工具调用及其使用次数 |
普通 (P3) | 工具使用后 |
| 子代理 | 代理工具调用 | 普通 (P3) | 工具使用后 |
| 技能 | 斜杠命令调用 | 普通 (P3) | 工具使用后 |
| 角色 | 人物设定/行为指令(“扮演高级工程师”) | 普通 (P3) | 用户提示提交时 |
| 意图 | 会话模式分类(调查、实现、调试) | 低 (P4) | 用户提示提交时 |
| 数据 | 大量用户粘贴的数据引用(>1 KB) | 低 (P4) | 用户提示提交时 |
| 用户提示 | 每条用户消息(用于恢复最后一条提示) | 关键 (P1) | 用户提示提交时 |
会话如何在压缩后保持完整
PreCompact 触发
→ 从 SQLite 中读取所有会话事件
→ 构建按优先级分层的 XML 快照(≤2 KB)
→ 将快照存储在 session_resume 表中
SessionStart 触发(来源:“compact”)
→ 检索存储的快照
→ 写入结构化事件文件 → 自动索引到 FTS5
→ 构建包含 15 个类别的会话指南
→ 将 <session_knowledge> 指令注入上下文
→ 模型从上次用户提示处继续,保持完整的工作状态
快照按优先级分层构建——如果 2 KB 的预算紧张,低优先级事件(如意图、MCP 工具调用次数)会首先被舍弃,而关键状态(如当前文件、任务、规则、决策)则始终保留。
压缩后,模型会收到一份 会话指南——一个结构化的叙述性文档,包含可操作的部分:
- 最后请求——用户的最后一条提示,这样模型可以继续工作,而无需询问“我们刚才在做什么?”
- 任务——以复选框形式列出,标注完成状态(已完成标记为
[x],未完成为[ ]) - 关键决策——用户修正和偏好(“改用 X”、“不要做 Y”)
- 修改过的文件——会话期间涉及的所有文件
- 未解决的错误——尚未修复的错误
- Git——执行的操作(checkout、commit、push、status)
- 项目规则——CLAUDE.md / GEMINI.md / AGENTS.md 的路径
- 使用的 MCP 工具——工具名称及调用次数
- 子代理任务——委派工作的摘要
- 使用的技能——调用的斜杠命令
- 环境——工作目录、环境变量
- 数据引用——会话期间粘贴的大段数据
- 会话意图——模式分类(实现、调查、评审、讨论)
- 用户角色——会话期间设定的行为指令
详细的事件数据也会被索引到 FTS5 中,以便通过 search() 函数随时检索。
各平台的具体情况
Claude Code — 完整会话支持。所有 5 种钩子都会触发,捕获工具事件、用户决策,构建压缩快照,并在压缩或 --continue 后恢复状态。
Gemini CLI — 覆盖率较高。PostToolUse(工具使用后)、PreCompact(压缩前)和 SessionStart 都会触发。缺少 UserPromptSubmit,因此无法捕获用户决策和修正——但文件编辑、Git 操作、错误和任务都被完整记录。
VS Code Copilot — 覆盖率较高。与 Gemini CLI 相同——PostToolUse、PreCompact 和 SessionStart 都会触发。虽然无法捕获用户决策,但所有工具级别的事件都会被记录。
Cursor — 部分覆盖。原生的 preToolUse 和 postToolUse 钩子会捕获工具事件。sessionStart 在 Cursor 文档中有所说明,但目前被其验证器拒绝,因此无法实现会话恢复。路由指令改由 MCP 服务器启动时传递。
OpenCode — 部分覆盖。TypeScript 插件通过 tool.execute.after 捕获 PostToolUse 事件,但 SessionStart 尚未实现(#14808)。事件会被存储,但在压缩后不会自动恢复。
KiloCode — 部分覆盖。与 OpenCode 共享相同的插件架构,通过 OpenCodeAdapter 实现。TypeScript 插件通过 tool.execute.after 捕获 PostToolUse 事件,但 SessionStart 是否可用取决于 KiloCode 的实现。事件会被存储,但可能不会在压缩后自动恢复。
OpenClaw / Pi Agent — 覆盖率较高。所有工具生命周期钩子(after_tool_call、before_compaction、session_start)都通过原生网关插件触发。虽然无法捕获用户决策,但文件编辑、Git 操作、错误和任务都被完整记录。如果较旧版本的网关不支持压缩钩子,则会回退到数据库快照重建。详情请参阅 docs/adapters/openclaw.md。
Codex CLI — 基于钩子的会话跟踪。PreToolUse 强制执行路由,PostToolUse 捕获事件,SessionStart 在压缩后恢复状态。与 Claude Code 使用相同的通信协议。PreCompact 和 UserPromptSubmit 尚未实现,因此压缩快照依赖于数据库重建。
Antigravity — 不支持会话功能。与 Codex CLI 相同——没有钩子,无法捕获事件。需要手动将 GEMINI.md 复制到项目根目录。可通过 MCP 协议握手(clientInfo.name)自动检测。
Zed — 不支持会话功能。与 Codex CLI 相同——没有钩子,无法捕获事件。同样需要手动将 AGENTS.md 复制到项目根目录。可通过 MCP 协议握手(clientInfo.name)自动检测。
Kiro — 部分覆盖。原生的 preToolUse 和 postToolUse 钩子会捕获工具事件并强制执行沙箱路由。agentSpawn(Kiro 版本的 SessionStart)尚未实现,因此无法在压缩后恢复会话。需要手动将 KIRO.md 复制到项目根目录。可通过 MCP 协议握手(clientInfo.name)自动检测。
Pi 编程代理 — 覆盖率较高。该扩展注册了所有关键生命周期事件:tool_call(PreToolUse)、tool_result(PostToolUse)、session_start(SessionStart)以及 session_before_compact(PreCompact)。文件编辑、Git 操作、错误和任务都被完整记录。压缩后的会话恢复可以通过该扩展的事件钩子实现。
平台兼容性
| 功能 | Claude Code | Gemini CLI | VS Code Copilot | Cursor | OpenCode | KiloCode | OpenClaw | Codex CLI | Antigravity | Kiro | Zed | Pi |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MCP 服务器 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
| 工具调用前钩子 | 是 | 是 | 是 | 是 | 插件 | 插件 | 插件 | — | — | 是 | — | 是(扩展) |
| 工具调用后钩子 | 是 | 是 | 是 | 是 | 插件 | 插件 | 插件 | — | — | 是 | — | 是(扩展) |
| 会话开始钩子 | 是 | 是 | 是 | — | — | — | 插件 | — | — | — | — | 是(扩展) |
| 压缩前钩子 | 是 | 是 | 是 | — | 插件 | 插件 | 插件 | — | — | — | — | 是(扩展) |
| 可修改参数 | 是 | 是 | 是 | 是 | 插件 | 插件 | 插件 | — | — | — | — | 是(扩展) |
| 可阻止工具 | 是 | 是 | 是 | 是 | 插件 | 插件 | 插件 | — | — | 是 | — | 是(扩展) |
| 实用命令(ctx) | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是(/ctx-stats、/ctx-doctor) |
| 斜杠命令 | 是 | — | — | — | — | — | — | — | — | — | — | — |
| 插件市场 | 是 | — | — | — | — | — | — | — | — | — | — | — |
OpenCode 使用 TypeScript 插件范式——钩子通过
tool.execute.before、tool.execute.after和experimental.session.compacting以进程内函数的形式运行,提供与基于 Shell 的钩子相同的路由强制和会话连续性。SessionStart 尚不可用(#14808),但压缩恢复可通过插件的压缩钩子实现。KiloCode 通过 OpenCodeAdapter 共享与 OpenCode 相同的 TypeScript 插件架构,具有平台特定的配置路径(
kilo.json代替opencode.json,~/.config/kilo/代替~/.config/opencode/)。钩子功能取决于 KiloCode 对插件接口的实现。OpenClaw 以原生网关插件的形式在 Pi Agent 会话中运行上下文模式。钩子通过
api.on()(工具/生命周期)和api.registerHook()(命令)注册。所有工具拦截和压缩钩子均受支持。请参阅docs/adapters/openclaw.md。Codex CLI、Antigravity 和 Zed 不支持钩子。它们仅依赖手动复制的路由指令文件(
AGENTS.md/GEMINI.md)进行强制执行(约 60% 的合规性)。有关复制说明,请参阅各平台的安装部分。Antigravity 和 Zed 通过 MCP 协议握手自动检测——无需手动平台配置。Kiro 支持原生的
preToolUse和postToolUse钩子,用于路由强制和工具事件捕获。agentSpawn(相当于 SessionStart)和stop尚未连接。需要将KIRO.md手动复制到项目根目录。Kiro 通过 MCP 协议握手(clientInfo.name)自动检测。Pi 编码代理 以扩展形式运行上下文模式,完全支持钩子。该扩展注册了
tool_call、tool_result、session_start和session_before_compact事件,提供了高度的会话连续性覆盖。MCP 服务器提供 6 种沙盒工具。
路由强制
钩子以编程方式拦截工具调用——它们可以阻止危险命令,并在执行前将其重定向到沙盒。指令文件通过提示指令引导模型,但无法阻止任何操作。请务必在支持的情况下启用钩子。
注意: 路由指令文件此前会在首次会话启动时自动写入项目目录。为防止污染 Git 树,此功能已被禁用(#158、#164)。支持钩子的平台(Claude Code、Gemini CLI、VS Code Copilot、OpenCode、OpenClaw)通过钩子注入路由,无需文件。不支持钩子的平台(Codex、Zed、Cursor、Kiro、Antigravity)则需要一次性手动复制——请参阅各平台的安装部分。
| 平台 | 钩子 | 指令文件 | 使用钩子 | 不使用钩子 |
|---|---|---|---|---|
| Claude Code | 是(自动) | CLAUDE.md |
节省约 98% | 约节省 60% |
| Gemini CLI | 是 | GEMINI.md |
节省约 98% | 约节省 60% |
| VS Code Copilot | 是 | copilot-instructions.md |
节省约 98% | 约节省 60% |
| Cursor | 是 | context-mode.mdc |
节省约 98% | 约节省 60% |
| OpenCode | 插件 | AGENTS.md |
节省约 98% | 约节省 60% |
| OpenClaw | 插件 | AGENTS.md |
节省约 98% | 约节省 60% |
| Codex CLI | — | AGENTS.md |
— | 约节省 60% |
| Antigravity | — | GEMINI.md |
— | 约节省 60% |
| Kiro | 是 | KIRO.md |
节省约 98% | 约节省 60% |
| Zed | — | AGENTS.md |
— | 约节省 60% |
| Pi | ✓ | AGENTS.md |
节省约 98% | 约节省 60% |
如果没有钩子,一次未被路由的 curl 或 Playwright 截图就可能向上下文中注入 56 KB 数据——从而抹去整个会话的节省成果。
有关完整功能对比,请参阅 docs/platform-support.md。
实用命令
在任何 AI 会话中——只需输入命令即可。LLM 会自动调用 MCP 工具:
ctx stats → 上下文节省量、调用次数、会话报告
ctx doctor → 诊断运行时、钩子、FTS5、版本
ctx upgrade → 从 GitHub 更新、重建、重新配置钩子
在终端中——无需 AI 会话即可直接运行:
context-mode doctor
context-mode upgrade
适用于所有平台。在 Claude Code 中,还提供斜杠命令(/ctx-stats、/ctx-doctor、/ctx-upgrade)。
基准测试
| 场景 | 原始数据 | 上下文 | 节省 |
|---|---|---|---|
| Playwright 截图 | 56.2 KB | 299 B | 99% |
| GitHub Issues(20 条) | 58.9 KB | 1.1 KB | 98% |
| 访问日志(500 次请求) | 45.1 KB | 155 B | 100% |
| Context7 React 文档 | 5.9 KB | 261 B | 96% |
| 分析 CSV(500 行) | 85.5 KB | 222 B | 100% |
| Git 日志(153 次提交) | 11.6 KB | 107 B | 99% |
| 测试输出(30 个测试套件) | 6.0 KB | 337 B | 95% |
| 代码库研究(子代理) | 986 KB | 62 KB | 94% |
在整个会话中:315 KB 的原始输出降至 5.4 KB。会话时间从约 30 分钟延长至约 3 小时。
试一试
这些提示开箱即用。每执行一个提示后,运行 /context-mode:ctx-stats 即可查看上下文节省情况。
深度代码库研究 — 5 次调用,62 KB 上下文(原始:986 KB,节省 94%)
研究 https://github.com/modelcontextprotocol/servers — 架构、技术栈、主要贡献者、未解决的问题以及最近的活动。然后运行 /context-mode:ctx-stats。
Git 历史分析 — 1 次调用,5.6 KB 上下文
克隆 https://github.com/facebook/react,并分析最近 500 次提交:主要贡献者、按月统计的提交频率以及更改最多的文件。然后运行 /context-mode:ctx-stats。
网页抓取 — 1 次调用,3.2 KB 上下文
获取 Hacker News 首页,提取所有帖子的标题、评分和域名,并按域名分组。然后运行 /context-mode:ctx-stats。
大型 JSON API — 原始数据 7.5 MB → 0.9 KB 上下文(节省 99%)
创建一个本地服务器,返回一个包含 20,000 条记录的 7.5 MB 大小的 JSON 文件,其中在索引 13000 处隐藏着一个秘密。获取该端点,找到隐藏的记录,并准确展示其内容。然后运行 /context-mode:ctx-stats。
文档搜索 — 2 次调用,1.8 KB 上下文
获取 React useEffect 的文档,对其进行索引,并查找带有代码示例的清理模式。然后运行 /context-mode:ctx-stats。
会话连续性 — 全状态下的压缩恢复
开始一个多步骤任务:“使用 Express 创建一个 REST API — 添加路由、测试和错误处理。” 在进行了 20 多次工具调用后,输入 ctx stats 查看会话事件数量。当上下文被压缩时,模型会从您上次的提示继续执行,任务、文件和决策均保持不变——无需重新提示。
隐私与架构
Context Mode 并非 CLI 输出过滤器或云端分析仪表盘。它运行在 MCP 协议层——原始数据始终处于沙盒子进程中,绝不会进入您的上下文窗口。网页、API 响应、文件分析、Playwright 截图、日志文件等,所有内容都在完全隔离的环境中处理。
没有任何数据离开您的机器。 无遥测、无云端同步、无使用跟踪、无需注册账号。您的代码、您的提示、您的会话数据——全部本地存储。SQLite 数据库存放在您的主目录中,会话结束后即被销毁。
这是一种刻意的架构选择,而非功能缺失。上下文优化应在源头进行,而不是在需要按用户订阅的仪表盘中完成。隐私优先是我们的理念——每一个设计决策都以此为基础。许可证 →
安全性
Context Mode 强制执行您已使用的相同权限规则——但将其扩展到 MCP 沙盒中。如果您禁止 sudo,那么在 ctx_execute、ctx_execute_file 和 ctx_batch_execute 中同样会被阻止。
无需任何设置。 如果您尚未配置任何权限,则一切保持不变。只有在您添加规则时才会生效。
{
"permissions": {
"deny": [
"Bash(sudo *)",
"Bash(rm -rf /*)",
"Read(.env)",
"Read(**/.env*)"
],
"allow": [
"Bash(git:*)",
"Bash(npm:*)"
]
}
}
将此配置添加到项目的 .claude/settings.json 文件中(或全局规则则添加到 ~/.claude/settings.json)。所有平台都会读取 Claude Code 的设置格式来加载安全策略——包括 Gemini CLI、VS Code Copilot 和 OpenCode。不过,Codex CLI 不支持钩子,因此无法实施安全控制。
规则的格式为 Tool(要匹配的内容),其中 * 表示“任意内容”。
通过 &&、; 或 | 连接的命令会被拆分——每一部分都会单独检查。例如,echo hello && sudo rm -rf /tmp 会被阻止,因为其中的 sudo 部分符合拒绝规则。
deny 总是优先于 allow。更具体的(项目级)规则会覆盖全局规则。
贡献
请参阅 CONTRIBUTING.md,了解开发流程和 TDD 准则。
git clone https://github.com/mksglu/context-mode.git
cd context-mode && npm install && npm test
许可证
根据 Elastic License 2.0 授权(源代码开放)。您可以使用、fork、修改并分发它。但有两点限制:不得将其作为托管/管理服务提供,也不得移除许可声明。我们选择 ELv2 而不是 MIT 许可证,是因为 MIT 允许将代码重新打包成竞争性的闭源 SaaS——而 ELv2 则可以防止这种情况发生,同时仍保持源代码对所有人开放。
版本历史
v1.0.592026/04/02v1.0.582026/04/02v1.0.572026/04/02v1.0.562026/04/01v1.0.542026/03/28v1.0.532026/03/24v1.0.522026/03/24v1.0.512026/03/23v1.0.502026/03/23v1.0.492026/03/22v1.0.472026/03/22v1.0.462026/03/21v1.0.452026/03/21v1.0.442026/03/21v1.0.432026/03/21v1.0.422026/03/21v1.0.412026/03/21v1.0.402026/03/21v1.0.392026/03/20v1.0.382026/03/20常见问题
相似工具推荐
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
OpenHands
OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。