ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

get-shit-done context monitor 在上下文剩余低于 35% 与 25% 时分别触发什么行为

get-shit-done context monitor 在上下文剩余低于 35% 与 25% 时分别触发什么行为 get-shit-done context monitor 在上下文剩余低于 35% 与 25% 时分别触发什么行为【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done在 Claude Code 或 Gemini CLI 中使用 get-shit-done 时statusline 上的上下文进度条只展示给用户agent 本身对上下文余量没有感知——上下文耗尽时它可能还在任务中间。context monitor 就是为了解决这个问题它是一个 post-tool hookClaude Code 注册为PostToolUseGemini CLI 注册为AfterTool在每次工具调用之后检查上下文剩余比例当剩余低于 35% 或 25% 时分别向 agent 的会话注入不同级别的警告。下文基于 docs/context-monitor.md 与 hook 源码 hooks/gsd-context-monitor.js、hooks/gsd-statusline.js 说明两个阈值触发的具体行为、去抖规则以及如何验证 monitor 是否在工作。数据链路monitor 从哪里读到剩余百分比monitor 自己不计算上下文用量它依赖 statusline hook 写出的桥接文件statusline hookhooks/gsd-statusline.js在每次渲染时把指标写入/tmp/claude-ctx-{session_id}.jsoncontext monitor 在每次工具调用之后读取该文件剩余比例低于阈值时monitor 以additionalContext的形式把警告注入 agent 的对话。桥接文件是一个简单的 JSON 对象以下为文档示例数值会随会话变化{ session_id: abc123, remaining_percentage: 28.5, used_pct: 71, timestamp: 1708200000 }remaining_percentage是判断阈值的依据。两条边界规则来自 docs/context-monitor.md 的 Safety 一节与源码timestamp距今超过 60 秒的指标视为过期直接忽略桥接文件不存在时静默退出子 agent、全新会话属于这种情况。一个容易混淆的点statusline 进度条显示前会扣掉 auto-compact 缓冲默认约 16.5%可通过环境变量CLAUDE_CODE_AUTO_COMPACT_WINDOW覆盖详见 hooks/gsd-statusline.js而写入桥接文件的used_pct是原始值100 - remaining_percentage不做缓冲归一化对应 issue #2451 的修复。因此警告消息里的百分比与 statusline 条上的数字可能不一致这是预期行为。两个阈值分别触发什么行为docs/context-monitor.md 给出的阈值表如下级别剩余agent 行为Normal 35%不告警WARNING 35%收尾当前任务避免开始新的复杂工作CRITICAL 25%立即停止保存状态/gsd-pause-work两个阈值的触发对象都是 agent 的会话monitor 把警告文本作为additionalContext输出agent 在下一轮就能看到。具体注入的文案区分「当前目录是 GSD 项目」与「非 GSD 项目」两种情况GSD 项目以工作目录存在.planning/STATE.md判定源码中的isGsdActive。以下是源码 hooks/gsd-context-monitor.js 中的消息模板{used_pct}与{remaining}取自桥接文件中的used_pct和remaining_percentage# WARNING剩余 35%GSD 项目 CONTEXT WARNING: Usage at {used_pct}%. Remaining: {remaining}%. Context is getting limited. Avoid starting new complex work. If not between defined plan steps, inform the user so they can prepare to pause. # CRITICAL剩余 25%GSD 项目 CONTEXT CRITICAL: Usage at {used_pct}%. Remaining: {remaining}%. Context is nearly exhausted. Do NOT start new complex work or write handoff files — GSD state is already tracked in STATE.md. Inform the user so they can run /gsd:pause-work at the next natural stopping point.非 GSD 项目下的 WARNING 提示 agent 减少不必要的探索、不要开新的复杂工作CRITICAL 则提示 agent 告知用户上下文不足并询问如何继续且除非用户要求不自主保存状态或写交接文件。也就是说/gsd-pause-work的触发建议只在 GSD 项目中出现。去抖规则警告不会每次工具调用都重复为避免刷屏monitor 内置了去抖状态记录在/tmp/claude-ctx-{session_id}-warned.json第一次警告立即触发之后的警告要求中间至少间隔 5 次工具调用严重度升级WARNING → CRITICAL绕过去抖立即触发。CRITICAL 时 GSD 项目还有一个自动记录动作当剩余 25% 且当前是 GSD 项目时hook 除了注入警告还会以「fire-and-forget」子进程方式执行一次状态记录对应 issue #1974见 CHANGELOG.md 中 Context exhaustion auto-recording 条目node gsd-tools.cjs state record-session --stopped-at context exhaustion at {used_pct}% ({日期})该记录每次 CRITICAL 会话只触发一次由去抖状态文件中的criticalRecorded标志保护作用是为/gsd:resume-work留下「崩溃时刻」的面包屑它以分离进程运行不阻塞 hook 也不阻塞 agent。对用户侧的衔接动作是/gsd:pause-workCRITICAL 警告会建议用户在下一个自然停顿点执行它。按 commands/gsd/pause-work.md该命令创建.continue-here.md交接文件保存当前位置、已完成/剩余工作、决策与阻塞项并以 WIP 提交到 Git随后给出恢复步骤。验证 monitor 是否在工作按顺序做以下检查确认 hook 已注册。通过npx get-shit-done-cc安装时两个 hook 会自动写入settings.jsonstatusline 注册为statusLinecontext monitor 注册为PostToolUsehookGemini 为AfterTool。手动注册时须使用运行安装器的绝对 Node 可执行路径Windows PowerShell 下路径带引号时命令前加。文档给出的 Claude Code 示例其中/usr/local/bin/node与/Users/me/...是文档示例路径替换为你的实际安装路径{ statusLine: { type: command, command: \/usr/local/bin/node\ \/Users/me/.claude/hooks/gsd-statusline.js\ }, hooks: { PostToolUse: [ { hooks: [ { type: command, command: \/usr/local/bin/node\ \/Users/me/.claude/hooks/gsd-context-monitor.js\ } ] } ] } }检查桥接文件。会话进行中查看/tmp/claude-ctx-{session_id}.json是否存在remaining_percentage是否随上下文增长变化timestamp是否为近 60 秒内。这是 monitor 唯一的数据来源——文件不存在或过期时monitor 不会发出任何警告属于正常行为而非故障。观察警告注入。当剩余比例落到 35% 及以下时agent 的会话中应出现以CONTEXT WARNING:开头的附加上下文落到 25% 及以下时变为CONTEXT CRITICAL:并在 GSD 项目中额外触发上文所述的自动状态记录。如果希望关闭该功能可在.planning/config.json中设置hooks: { context_warnings: false }docs/CONFIGURATION.md 中该键默认为true描述为 Show context window usage warnings via context monitor hook。边界与限制monitor 全程包裹在 try/catch 中出错时静默退出永远不阻塞工具执行——损坏的 monitor 不会打断 agent 工作流阈值判定只看remaining_percentage与 statusline 进度条的缓冲归一化无关子 agent 和全新会话没有桥接文件时 monitor 静默跳过不会出现警告警告是建议性的advisory源码注释明确说明消息不使用命令式措辞去覆盖用户偏好对应 issue #884。【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进