深入解析 get-shit-done 的 MCP Token 预算:为什么工具 Schema 才是每个回合最大的隐形成本
深入解析 get-shit-done 的 MCP Token 预算为什么工具 Schema 才是每个回合最大的隐形成本【免费下载链接】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导读在 get-shit-doneGSD这一基于 Claude Code 的元提示meta-prompting与上下文工程context engineering系统中上下文预算context budget是编排器orchestrator与子代理能否高质量完成长阶段任务的生命线。本指南聚焦于其中常被忽略、却常是单个最大的每回合开销来源每个已启用的 MCP 服务器都会把其工具 Schema 注入每一轮对话。读完本文你将掌握 MCP 每回合成本的形成机制、为何它是“GSD 控制不了的最大成本杠杆”、如何在.claude/settings.json中用enabledMcpjsonServers/disabledMcpjsonServers做阶段前审计与开关以及它与model_profile调优如何叠加生效。本文主体依据仓库中的 context-budget.md 与 USER-GUIDE.md 相关章节展开并结合实现与回归测试佐证。对应变更记录见 .changeset/mcp-token-budget-docs.md类型AddedPR #3032issue #3025。一、先把背景讲清楚GSD 的上下文预算纪律GSD 的工作流会持续派生子代理并读取大量内容规划、研究、验证等阶段都会展开成多个子代理因此系统在 context-budget.md 中固化了一组“保持编排器上下文精简”的通用规则绝不读取代理定义文件agents/*.md——subagent_type会自动加载它们绝不把大文件内联进子代理提示词——让代理自己从磁盘读文件读取深度与上下文窗口成正比——检查.planning/config.json中的context_window低于 500k token默认 200k时只读 frontmatter、状态字段或摘要达到 500k1M 模型时才允许在需要时读取完整子代理输出体把重活委托给子代理——编排器只做路由不亲自执行主动预警——当上下文消耗已显著大文件读取、多个子代理结果返回时提醒用户“Context budget is getting heavy. Consider checkpointing progress.”对应的读取深度矩阵如下Context Window子代理输出读取SUMMARY.mdVERIFICATION.mdPLAN.md其它阶段 500k200k 模型仅 frontmatter仅 frontmatter仅 frontmatter仅当前阶段 500k1M 模型允许完整正文允许完整正文允许完整正文仅当前阶段系统还定义了四级“上下文退化档位”PEAK 0-30% 全量操作 / GOOD 30-50% 优先 frontmatter 与积极委托 / DEGRADING 50-70% 精简模式并预警 / POOR 70% 紧急模式立即检查点以及质量退化前的早期信号静默性部分完成、回答愈发含糊、跳过既定步骤。就在这套纪律的语境下context-budget.md 引入了“MCP Tool Schema Cost (Harness Concern)”章节——它提醒我们上面所有这些节流手段都是在模型上下文、提示词与对话历史同一份预算内做文章而 MCP 工具 Schema 每一轮都在消费这份预算却往往游离于 GSD 用户的注意力之外。二、核心问题每个已启用 MCP 服务器都会把 Schema 注入每一轮对话2.1 机制与是否调用工具无关从源码文档的表述看这一开销的机制非常直接每个已启用的 MCP 服务器会把它携带的全部工具 Schema 注入到每一轮every turn——无论当轮是否实际调用了它的任何一个工具。也就是说Schema 是“挂在嘴边”的结构性开销而非“用才付费”的按次开销。在 ARCHITECTURE.md 的“MCP token-budget interaction”一节中系统把这个成本与另一项每回合固定开销并列为两种“周期性每回合 token 成本”recurring per-turn token costs其一是eager skill listing路由层对技能清单的主动罗列其二就是MCP 工具 Schema 注入。2.2 量级重型服务器单回合 20k token文档明确给出了量级判断重型 MCP 服务器browser/playwright、Mac-tools、Windows-tools每台每个回合就可能花费20k token其量级常常超过 GSD 自身通过model_profile调优所能节省的全部成本。context-budget.md 还给出一个放大估算示例如果一个项目启用了 5 个闲置 MCP 服务器、平均每份 Schema 约 5k token那么每一轮在模型读到任何项目文件之前就要先支付 25k token 的“过路税”。2.3 为什么它是“你控制不了的最大成本杠杆”context-budget.md 用了一个很有信息量的标题概括这一点“Why this is the biggest cost lever you dont own”为什么这是你不拥有的最大成本杠杆。关键在于职责边界的划定MCP 的启用与禁用开关位于Claude Code harness宿主层——它存在于 Claude Code 的settings.json而不是GSD 的功能。GSD不管理MCP 启用状态也不该越俎代庖。GSD 能掌控的是它自己配置体系内的model_profile、models.phase_type、dynamic_routing、model_overrides等分层路由手段MCP 开关则是 harness 的领域。因此文档把 MCP 裁剪定位为“GSD 用户例行忽略的一个上下文预算杠杆”并建议在所有长阶段尤其会扩散到大量子代理的/gsd:execute-phase、/gsd:plan-phase开始之前优先执行一次 MCP 审计。三、实操开关.claude/settings.json中的两个键开关位置非常明确它位于.claude/settings.json项目级或~/.claude/settings.json全局级而不是GSD 的.planning/config.json。{ enabledMcpjsonServers: [context7], disabledMcpjsonServers: [playwright, mac-tools] }两种写法的语义配置键语义适用场景enabledMcpjsonServers显式允许清单allow-list只启用列表中列出的 MCP 服务器希望默认关闭、仅白名单放行少量服务器的严格场景disabledMcpjsonServers相对默认集合的黑名单block-list禁用列表中列出的服务器大部分服务器可用、只屏蔽个别的日常场景两条均可独立工作enabledMcpjsonServers是显式白名单disabledMcpjsonServers是针对默认启用的黑名单。关于两份设置各自的权威参考语义应以 Claude Code 官方 MCP 文档为准这里只需把它当作上下文预算杠杆来使用即可。每禁用一项该项 Schema 就会从本次会话余下每一轮的上下文中消失——收益即时且持续。值得强调的是context-budget.md 明确提醒这与 GSD 自身的配置是两个世界。GSD 的模型解析层不会也不应替你管理 MCP 的启用状态——即便 GSD 把model_profile调得再精细也无法抵消一个被遗忘在.claude/settings.json里的重型 MCP 服务器。四、阶段前 MCP 审计清单Pre-Phase MCP Audit在开始长阶段前尤其是/gsd:execute-phase、/gsd:plan-phase这类会向大量子代理扩散的任务文档建议按以下清单逐一核对浏览器 / Playwright 工具是否启用了如果当前阶段没有 UI 相关工作请禁用它们——它们属于每回合 Schema 最重的几类之一平台特定工具是否启用了Mac-tools / Windows-tools / OS-specific 辅助工具在阶段不需要时应禁用跨项目 / 过期的 MCP 是否残留为另一个项目添加、但仍在此处启用的服务器是常见“遗忘税”零收益却每回合都在付费是否有重复或影子shadow服务器两个提供相似工具的 MCP例如两个不同的文件系统助手保留一个即可。USER-GUIDE.md 的配套任务小节把审计浓缩成三个问题供快速自检当前阶段没有 UI 工作时是否有 browser / playwright 工具仍被启用当前阶段用不到平台特性时是否有平台特定工具Mac-tools、Windows-tools、OS 相关仍被启用是否有来自其它项目、仍在此处启用的项目专属 MCP可以看到二者要求是一致的只是颗粒度不同。这里把该清单收敛为四条以便核对。五、与model_profile的乘法叠加两个杠杆都要拉这是容易被忽略、却被文档反复强调的关键结论裁剪 MCP 与调优model_profile是两个独立且会叠加compound的杠杆。禁用一台 25k-token 的 MCP无论你跑的是qualityopus 全覆盖还是budgetsonnet/haiku画像每个回合都能省下这 25k收益是加性的而不是替代模型调优MCP 的节省会立即显现并会跨编排器派生的每一个子代理叠加——也就是说它天然带杠杆效应multiplier effect与所选model_profile无关地压低每回合的固定开销。context-budget.md 的建议顺序是先审计并裁剪 MCP再做model_profile调优——因为 MCP 的收益当下即兑现且能在每次子代理展开时成倍放大。5.1 背景GSD 的model_profile是什么为理解“叠加”的含义需要知道model_profile在 GSD 中的位置。根据 CONFIGURATION.md 的参数表model_profile是一个枚举配置取值说明quality/balanced/budget/adaptive/inherit各代理的模型层级策略默认balancedGSD 的模型解析采用分层组合CONFIGURATION.mdmodel_profile是基础层级 →models.phase_type在阶段级覆盖六种槽位planning/discuss/research/execution/verification/completionPR #3030 / issue #3023→dynamic_routing默认关闭失败时按层级升级issue #3024→model_overrides[agent]在最顶层做逐代理例外。这正是本变更#3025与其姊妹变更的关系issue #3023按阶段类型模型映射、#3024动态路由与 #3025MCP 工具预算三者合在一起覆盖了 GSD 语境下三个最大的成本杠杆。前两个杠杆由 GSD 的配置系统掌控见 CONFIGURATION.md第三个则握在 Claude Code harness 手里。三者叠加起来才构成完整的成本治理视图model_profile/models.phase_type——模型层级的全局与阶段级选择dynamic_routing——低层级起步、软失败再升级的动态路由MCP 启用裁剪——harness 层每回合固定开销的压减。六、源码级佐证这条文档是被“契约测试”钉死的规范值得说明的是这段 MCP 预算指导在仓库中并非孤立的“软文”而是一组由回归测试保护的语义契约。feat-3025-mcp-token-budget-docs.test.cjs 以解析式断言typed section record / flag booleans而非文本匹配验证两处文档必须表达如下不变量将 MCP / 工具 Schema 表述为上下文预算问题同时出现“MCP / tool schema”与“token / context budget / per-turn / cost”类措辞点名 harness 侧开关键enabledMcpjsonServers与disabledMcpjsonServers必须逐字出现并指明.claude/settings.json为开关位置包含三类的阶段前审计browser/playwright、平台特定mac-tools/windows-tools/OS-specific、跨项目/过期 MCP且要有“phase”语境明确“GSD 不拥有此开关”文档必须写出 GSD 不管理 MCP 启用、这是 harness 关切说明与model_profile的叠加关系提到model_profile并用 compound / multiplier / stack / per-turn / regardless of model 等词框定语义交叉引用USER-GUIDE.md的任务小节必须交叉链接到context-budget.md引导读者去读完整审计清单。该测试文件还顺带执行 markdownlint 预检MD040每个围栏代码块必须有语言标记MD056表格行与表头列数一致并把“描述不变量而非措辞”作为遵循 CONTRIBUTING 的no-source-grep约束的实现方式——即只要语义存活措辞可自由改写。也就是说当你阅读 context-budget.md 的 MCP 章节与 USER-GUIDE.md 的配套任务小节时你面对的不是一次性补丁而是被持续守卫的既定产品行为。此外 ARCHITECTURE.md 的 “MCP token-budget interaction” 一节从架构视角再次确认了这条职责边界——并把它与 two-stage routing layereager skill listing并列为每回合最大的两个成本杠杆。七、落地建议把这些规则变成可执行的阶段惯例综合 context-budget.md、USER-GUIDE.md 与 ARCHITECTURE.md 三处的表述可以把最佳实践归纳为如下四步操作序列阶段开始前执行一次 MCP 快照claude mcp list类命令查看当前启用的服务器对照上文四项审计清单browser/playwright、平台特定、跨项目残留、重复/影子逐条过一遍就地裁剪编辑项目级.claude/settings.json若影响所有项目再考虑全局~/.claude/settings.json用disabledMcpjsonServers黑名单禁用重型闲置服务器或用enabledMcpjsonServers白名单收紧到本阶段真正需要的集合再调model_profile在 MCP 裁剪之后才进入 GSD 自身的模型分层调优CONFIGURATION.md两者收益叠加而非互斥会话中途复核当上下文进入 DEGRADING50-70%档位时优先怀疑是否仍有关联度低的 MCP 在持续注入 Schema——禁用它的收益会立刻作用于之后每一轮及每一个被派生的子代理。{ enabledMcpjsonServers: [context7], disabledMcpjsonServers: [playwright, mac-tools] }结语认清“谁掌控哪个成本杠杆”才能做好上下文工程get-shit-done 的上下文工程体系context-budget.md 全篇覆盖了读取深度、退化档位、委托纪律等大量精细节流手段而 MCP 预算这一课的核心认知是成本杠杆的归属model_profile、阶段级模型、动态路由是 GSD 的领地MCP 开关是 Claude Code harness 的领地。真正的高效配置是在两片领地内同时发力——先清掉那些每回合都在“空转付费”的 MCP Schema再精调模型分层。正如文档所说不要二选一两件事都要做而且先审计 MCP——因为它的每回合节省立竿见影并会随着编排器派生的每一个子代理逐层放大。【免费下载链接】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),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →