用途
context-mode 是一个可移植的 MCP 服务器加宿主适配器系统。它把选定的命令、文件、网页和会话数据保存在子进程与 SQLite 中,然后返回选定的输出或 FTS5 全文检索结果。
需要明确的是,它并不是操作系统或安全沙箱,也不是代理、shell 输出包装器、工作区索引、图谱或持久化 wiki。子进程代码仍保留普通用户的文件系统与网络权限,后台子进程可能比调用本身存活更久。
主要能力
- 通过 MCP 服务器与宿主适配器在子进程中执行临时脚本。
- 将选定的命令、文件、网页和会话数据保存在子进程与 SQLite 中。
- 返回选定输出或 FTS5 检索结果。
- 提供钩子捕获与 ctx_search 能力,可保留工具/会话输出。
使用方式
该技能适用于以下场景:
- 审计安装、运行时、MCP 注册、宿主适配器、存储根目录、重复条目或恢复路径。
- 规划或执行一次经明确批准的安装、升级、清理、钩子/配置变更或固定负载测量。
- 解释各宿主在 MCP、插件、钩子、路由及无钩子方面的限制。
操作前建议先运行非变更型预检脚本:
python3 .agent-skills/context-mode/scripts/preflight.py --json
python3 "$SKILLS_ROOT/context-mode/scripts/preflight.py" --json
第一条命令用于仓库检出,第二条用于已安装的技能根目录。该脚本会盘点 Node/npm/npx/Bun/context-mode 路径与宿主事实,但不执行这些工具,也不读取 Claude/Codex 设置、缓存、会话、凭据或环境文件。使用 --repo PATH 时,它可能只检查公开源码形态和有界的本地 Git HEAD;--expect-commit FULL_SHA 需要配合 --repo,且是唯一的提交比较锚点。它从不调用 context-mode/npm、不写配置、不发起网络请求。
JSON 输出为单个对象,包含 skill、scope: "offline-preflight"、status(ok、blocked 或 error)、checks 和 runtime_verified: false。退出码 0 表示离线盘点检查通过,1 表示缺少或不匹配的前置条件,2 表示输入无效。status 为 ok 并不证明 Node >=22.5.0、钩子可信、宿主已激活、就绪或节省效果;运行时版本始终明确标记为未验证,因为该脚本从不执行宿主工具。
适用场景
- 需要将命令、文件、网页和会话数据放入子进程/SQLite 并做 FTS5 检索时。
- 需要审计或规划 context-mode 的安装、升级、清理与配置变更时。
- 需要理解不同宿主在 MCP、插件、钩子、路由方面的差异与限制时。
限制与安全边界
- 不是 OS/安全沙箱:子进程继承普通用户的文件系统与网络权限。
- 后台子进程可能比调用本身存活更久。
- 钩子捕获与 ctx_search 可能保留敏感的工具/会话输出。启用捕获前,需批准范围、敏感度、存储根目录与权限、共享、保留与清除策略。未经审查的处理方案,绝不要索引凭据、令牌、密钥或私有数据。
- ctx_execute 是任意代码执行,不是沙箱。代码执行、文件访问、网络抓取/索引、后台进程、钩子/配置/状态栏写入、安装、升级或清理,均需明确批准。
- 固定的 npm postinstall 可能改动跨宿主 Claude 插件/设置状态、修复缓存参数、删除过期缓存文件并创建符号链接;这些路径需预览/备份并作为写入批准。
- ELv2 仅允许在其条款范围内再分发;禁止大规模托管/管理功能暴露、绕过许可证密钥,以及移除或遮蔽受保护声明。
路由说明
- 代理压缩或持久路由 → headroom。
- Shell 输出/token 包装器 → rtk。
- 工作区混合/向量/BM25 搜索 → zvec-grep。
- 代码/语料图谱 → graphify。
- 持久项目记忆/wiki → opencontext 或 llm-wiki。
最佳实践
- 保持一个宿主、一个安装面、一个钩子所有者;重复注册是已知的失败模式。
- 保持 CONTEXT_MODE_DIR 为绝对路径、可写且隔离;在启用钩子前定义捕获保留与清除策略。
- 将 doctor、宿主注册、会话冒烟测试和测量作为独立的证据门。
- 仅将节省归因于固定负载并捕获字节与钩子状态,绝不归因于徽章或握手。
- 将宿主特定命令和所有固定引用保留在 references/upstream.md。
参考
- references/upstream.md — 固定的宿主矩阵、安装/工具/存储/版本契约、安全边界、命令、基准分类、ELv2 说明和来源引用。
- 上游提交:abb104847cbb66c2182816a72bb69455bc778b5e(package/plugin 1.0.169)。