ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

GitHub Copilot CLI 装了 context-mode 但 hook 路由不生效怎么排查?

GitHub Copilot CLI 装了 context-mode 但 hook 路由不生效怎么排查? GitHub Copilot CLI 装了 context-mode 但 hook 路由不生效怎么排查【免费下载链接】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你在 GitHub Copilot CLIcopilot里装了 context-mode但路由没有生效agent 照样用原始 Bash/Read 把大输出直接灌进上下文ctx stats看不到 session 事件统计或者干脆ctx_*工具根本没出现。context-mode 在 Copilot CLI 上的路由靠两样东西MCP 注册提供ctx_*工具和hooks 注册preToolUse拦截 sessionStart路由块两者都装在用户目录下~/.copilot/可用COPILOT_HOME覆盖。这篇排查路径只针对这两个注册点按“先分症状、再查 hooks、再查 MCP、最后查版本与环境”的顺序走每一步都有文档给出的判断依据。适用前提Node.js 22.5或 Bun且已全局安装过 context-mode。两类症状排查起点不同先在 Copilot CLI 会话里输入ctx statsctx stats无响应或ctx_*工具不出现MCP server 没注册成功从下面第 3 节开始查。工具能正常响应但路由/捕获不生效agent 不走ctx_executesession 事件没记录MCP 是通的问题在 hooks从第 2 节开始查。两个症状的总入口都是context-mode doctor终端直接运行它逐项检查 runtimes、hooks 注册、FTS5 和 MCP 注册返回带[OK]/[FAIL]/[WARN]前缀的明文报告见 ctx-doctor skill。哪一项[FAIL]就按对应章节修。检查 hook 文件注册context-mode 对 Copilot CLI 的 hook 配置写在~/.copilot/hooks/context-mode.json设置COPILOT_HOME时为$COPILOT_HOME/hooks/context-mode.json。doctor 会做两类检查实现见 CopilotCliAdapter.validateHooksschema version文件是否有顶层version: 1六个 hook 是否都存在preToolUse、postToolUse、preCompact、sessionStart、userPromptSubmitted、agentStop。正确的文件形状是扁平的{ type: command, command: ... }条目事件键用 camelCase与仓库中的 configs/copilot-cli/hooks.json 一致{ version: 1, hooks: { preToolUse: [{ type: command, command: context-mode hook copilot-cli pretooluse }], postToolUse: [{ type: command, command: context-mode hook copilot-cli posttooluse }], preCompact: [{ type: command, command: context-mode hook copilot-cli precompact }], sessionStart: [{ type: command, command: context-mode hook copilot-cli sessionstart }], userPromptSubmitted: [{ type: command, command: context-mode hook copilot-cli userpromptsubmit }], agentStop: [{ type: command, command: context-mode hook copilot-cli stop }] } }几个容易踩的点均见 docs/platform-support.md 的 GitHub Copilot CLI 一节version: 1是可选字段——Copilot CLI 接受省略它的 hook 配置文件但 doctor 在缺失时会标记 fail修复命令是context-mode upgrade每个事件键的 hook 条目不能为空数组doctor 只认“存在且非空”的数组事件键大小写有一份文档冲突platform-support.md 引用 Copilot CLI changelog 称 CLI 同时接受 PascalCase 事件名而 configs/copilot-cli/README.md 则记录验证结果是 PascalCase 键“silently ignored and never fire”。如果你手写过 hook 文件用了 PascalCase 键按后者视为故障源改回上面的 camelCase 键。修复 hooksupgrade 重写或手工修正doctor 报告某项 hook[FAIL]时最省事的修复是让它自己重写这份文件context-mode upgrade注意它的行为边界upgrade只写 hooks 文件不会注册 MCP serverMCP 要用 Copilot CLI 自己的命令见下节。另外从纯终端运行时它不知道宿主平台需要在 Copilot CLI 上下文里跑或显式带上平台变量CONTEXT_MODE_PLATFORMcopilot-cli context-mode upgrade如果你不想跑 upgrade也可以直接把~/.copilot/hooks/context-mode.json手工改成上面的内容事件名或命令字符串任一写错对应事件就不会触发doctor 的检查项和文件一一对应改完重跑 doctor 核对。插件方式安装的用户bundle 自带的 hooks.json 与 upgrade 写入的内容等价configs/copilot-cli/README.mddoctor 在插件运行时会改去校验 bundle 内的 hooks.json修复命令相应换成copilot plugin install mksglu/context-mode:configs/copilot-cli。检查 MCP 注册ctx stats无响应时doctor 的 MCP 检查会读~/.copilot/mcp-config.json$COPILOT_HOME/mcp-config.json看mcpServers里是否有context-mode条目。缺失时的修复命令是 Copilot CLI 原生的注册命令它会替你写好这份配置文件copilot mcp add context-mode -- context-mode手动安装不走插件时这一步必须做插件安装则由 bundle 的.mcp.json自动完成无需再跑。两条路径装完后都在会话里输入ctx stats工具应该出现并返回 context 节省统计README 的 Verify 一节即以此为验证方式。全局版本过旧hooks 静默失效一个文档明确列出的“装了但路由不生效”原因是hook 命令跑的是全局context-mode二进制而全局版本太旧、不含 Copilot CLI 支持。此时 hooks 处于 inert 状态——不路由、不捕获但不会阻塞你的正常工具context-mode 是 fail-open 设计所以现象就是“一切照旧、路由像没装一样”。处理方式npm install -g context-modelatest装完重跑context-mode doctor。如果你用的是插件安装MCP server 跑的就是这个全局二进制因此插件路径同样受此影响。COPILOT_HOME与平台识别剩下两个低频但文档明确的条件COPILOT_HOME重定位它会同时移动 hook 配置、MCP 配置以及 context-mode 的 session 数据库根目录adapter 的getSessionDir()会跟随它见 src/adapters/copilot-cli/index.ts。adapter 特意这样做是因为如果 hook 运行时写$COPILOT_HOME/...而 server 还读~/.copilot/...两边会劈开表现为 session 数据“空的/孤立的”。如果你设过COPILOT_HOME先确认 hook 文件和 session 目录都在同一个根下。平台误判context-mode 对 Copilot CLI 的自动识别靠 MCP 握手的clientInfo.nameGitHub Copilot CLI/copilot-cli或 context-mode 自己写下的 marker 文件~/.copilot/mcp-config.json或~/.copilot/hooks/context-mode.json——注意不是光有~/.copilot/目录就算。插件 bundle 直接 pin 了CONTEXT_MODE_PLATFORMcopilot-cli所以同机还装了 Claude Code 时~/.claude/会优先被通用回退命中也不会误判手动安装路径若遇到识别结果不对可以用同一个环境变量覆盖。收尾验证与深度诊断全部修完后按两条线确认context-mode doctor报告中 hook 各检查项与 MCP registration 均为 pass在 Copilot CLI 会话里输入ctx statsctx_*工具出现并正常返回统计。如果 doctor 全绿但行为仍不对用仓库自带的诊断脚本收集完整报告OS、运行时版本、better-sqlite3 状态、adapter 检测、配置文件、hook 校验、FTS5 测试、executor 测试、进程与环境变量bash scripts/ctx-debug.sh最后一条边界提醒Copilot CLI 的postToolUsehook 是 capture-only 的输出修改不支持路由拦截发生在preToolUse、路由块注入发生在sessionStart——所以“工具输出被改写”这类效果本来就不在 Copilot CLI 平台的能力范围内不属于“路由不生效”故障能力矩阵见 docs/platform-support.md 的 Capability Matrix。【免费下载链接】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),仅供参考
返回列表