
get-shit-done v1.39.0-rc.4 技术解读--minimal瘦身安装与 Codexconfig.toml防损坏修复【免费下载链接】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本指南以 docs/RELEASE-v1.39.0-rc.4.md 为骨架面向需要在本地小上下文窗口大模型上运行 GSDget-shit-done基于 Claude Code 的元提示词 / 上下文工程 / 规格驱动开发系统的开发者深入讲解 v1.39.0-rc.4 两个关键改动用于压缩冷启动系统提示词开销的--minimal安装模式以及让 Codex 安装不再破坏~/.codex/config.toml的四层防御修复。读完你将掌握如何针对自身模型上下文窗口选择合适的安装模式、如何在 minimal/full 之间无损切换以及 GSD 安装器如何通过原子写 结构校验 快照回滚保护既有 TOML 配置。版本定位npmnext标签下的预发布候选v1.39.0-rc.4 是发布候选Release Candidate发布在 npm 的nextdist-tag 下。它包含两项核心内容新增--minimal安装开关别名--core-onlyissue #2762修复Codex 安装不再损坏~/.codex/config.tomlissue #2760。同一仓库的后续文档如 docs/RELEASE-v1.39.0-rc.5.md、docs/RELEASE-v1.39.0-rc.7.md会持续追踪该版本分支上的修复进展可对照阅读以了解完整演进脉络。安装预发布版本RC 版本只发布到next标签因此安装命令必须显式带上next# npm 全局安装 npm install -g get-shit-done-ccnext # npx 一次性执行 npx get-shit-done-ccnext如需精确定位到本 RC可锁定完整版本号npm install -g get-shit-done-cc1.39.0-rc.4特性一--minimal/--core-only瘦身安装模式#2762它解决什么问题安装器默认写入 GSD 的全量技能面full skill surface。问题是Claude Code、opencode 等运行时每一轮都会把所有已安装技能的描述枚举进available_skills即技能即常驻提示词 token。技能与子代理越多冷启动系统提示词开销越大甚至在小上下文窗口中挤占真正可用的推理空间。从 get-shit-done/bin/lib/install-profiles.cjs 的源码注释可看到量级背景当插件叠加到 66 个技能 33 个子代理时仅技能描述列表就会消耗默认的 1% 上下文技能预算中的约 60%导致技能被运行时丢弃。这正是本版本引入瘦身安装模式的根本动机。--minimal安装了什么--minimal别名--core-only只写入支撑主工作流闭环所需的少量核心技能不安装任何gsd-*子代理new-project、discuss-phase、plan-phase、execute-phase、help、update该模式的收益在冷启动系统提示词开销上有数量级差异模式冷启动系统提示词开销full默认约 12k tokensminimal约 700 tokens适用场景与默认值取舍本地大模型用户32K–128K 上下文窗口minimal 模式是明显更合适的选择把上下文预算留给真正的项目讨论与规划内容云端模型用户Sonnet / Opus 系列上下文窗口充足full 全量技能面才是正确默认无需使用--minimal。源码视角标志解析与清单记录在安装器入口 bin/install.js 中两个开关被统一识别并归一到同一个内部模式const hasMinimal args.includes(--minimal) || args.includes(--core-only); // --profilename 或 --profilen1,n2可组合与 --minimal 互斥 // 1. --minimal / --core-only → core向后兼容别名安装清单会记录本次安装的模式mode: minimal | full落盘逻辑见 bin/install.jsmode: options.mode minimal ? minimal : full,演进提示六技能到八技能的仓库现状需要注意一个版本漂移事实rc.4 发布说明中列出的 core 技能是六个而本仓库当前代码中的--minimal已被重构为--profilecore的向后兼容别名技能集由PROFILES.core定义见 get-shit-done/bin/lib/install-profiles.cjs目前共八个技能const PROFILES Object.freeze({ core: Object.freeze([ new-project, discuss-phase, plan-phase, execute-phase, phase, help, update, surface, ]), ... });即在new-project、discuss-phase、plan-phase、execute-phase、help、update之上后来的重构技能表面预算见 docs/adr/0011-skill-surface-budget-module.md 与 docs/research/2026-05-12-skill-surface-budget.md又纳入了phase与surface。测试 tests/install-minimal-hooks.test.cjs 通过assert.deepStrictEqual精确锁定了这 8 个技能、0 个代理的契约assert.deepStrictEqual( [...MINIMAL_SKILL_ALLOWLIST].sort(), [discuss-phase, execute-phase, help, new-project, phase, plan-phase, surface, update], );因此在实际使用中以当前仓库/发布版本的实际清单为准rc.4 文档中的 12k/700 token 对比是当时的测量口径用来评估收益量级仍是有效的。从 minimal 回到 fullminimal 不是单向门。安装清单记录了模式后随时可以扩容扩容运行gsd update不带--minimal即可扩展到完整技能集降级/切换以--minimal重装会清掉此前的gsd-*代理与技能残留但保留用户自建的代理与技能——测试 tests/install-minimal-hooks.test.cjs 明确断言 full → minimal 降级后my-custom-agent.md这类用户文件仍然存在而所有gsd-*残留被移除。从实现上看minimal 安装会先把源commands/gsd/目录按白名单暂存stage到一个临时目录再做拷贝见 get-shit-done/bin/lib/install-profiles.cjs 中stageSkillsForProfile与stageAgentsForProfile并注册了进程退出与 SIGINT/SIGTERM/SIGHUP 清理钩子避免中途中断留下垃圾目录测试还覆盖了拷贝中途磁盘写满时删除半成品暂存目录并重新抛错的场景。这种先暂存、后落盘、失败即清理的设计保证了瘦身安装本身不会污染源目录。特性二Codex 安装不再损坏~/.codex/config.toml#2760问题背景此前有四位用户确认了同一类故障旧版安装器把~/.codex/config.toml改写成 Codex 启动即拒绝的状态唯一的自救手段是手动清理文件。rc.4 从源头重构了 Codex 配置的写入路径采用如下策略组合。修复一无条件剥离两类非法agents块当前 Codex TOML schema 只接受[agents.name]struct 表单结构。旧版安装器曾先后写入过单括号的[agents]与数组序列形式的[[agents]]——无论文件里有没有 GSD 标记这两类块在现行 schema 下都是非法且会导致 Codex 启动失败的。因此安装器现在无条件剥离它们使重装具备自愈能力覆盖到标记被第三方工具改掉或从未写过的文件。相关回归测试见 tests/bug-2760-codex-install-defensive.test.cjs如strips bare[agents]single-bracket block (no GSD marker)与strips[[agents]]sequence-form block两条用例并验证了用户的[model]、[projects./tmp/x]等无关段落在剥离后结构完整保留。修复二按用户既有形态写出 GSD Hook安装器会先探测用户配置里已存在的 Hook 写法再决定自己用哪种形态落地若已有任何 Hook 使用带事件命名空间的[[hooks.Event]]数组表单则 GSD 跟随使用[[hooks.Event]]形式共存否则退回顶层[[hooks]]形式写入过程中把旧的[hooks.Event]map 表单迁移为[[hooks.Event]]数组表单。检测逻辑对应实现中的hasUserNamespacedAotHooks等辅助函数可从 bin/install.js 导出并直接在 tests/bug-2760-codex-install-defensive.test.cjs 中单测。需要说明的是后续 Codex 0.124.0 进一步要求两层嵌套的[[hooks.SessionStart.hooks]]结构这部分迁移加固被记录在 rc.5见 docs/RELEASE-v1.39.0-rc.5.md并同样落在 tests/bug-2760-codex-install-defensive.test.cjs 的用例集中——这也展示了每个 Schema 修正都必须配回归测试的工程纪律。修复三临时文件 renameSync的原子写写入不再直接覆盖config.toml而是先写target.tmp-pid-n临时文件再renameSync原子替换实现见 bin/install.js。原子写的意义在于即使进程在写入中途崩溃或被杀目标文件要么是旧内容、要么是新内容绝不会出现半截截断的中间态。修复四写后严格 TOML 校验 快照回滚落盘之后安装器用自研的严格 TOML 解析器parseTomlToObject见 bin/install.js对最终字节做结构校验会拒绝重复 key重复的表头 / 形状冲突的表头如先[[arr]]再[arr]值之后的尾随垃圾字节不支持的取值类型。关键语义变化是任何写前或写时失败都不再警告后继续而是恢复写前快照restoreCodexSnapshot会把config.toml、hooks.json、skills/agents 目录中gsd-*内容还原到安装前字节级状态并清理本次新建的目录以清晰的错误中止安装绝不打印Done!成功横幅。这一点在 tests/bug-2760-codex-install-defensive.test.cjs 中有完整故障注入验证分别模拟fs.renameSync抛错、临时文件写入抛错、以及校验器返回失败/抛错四种场景逐字节断言用户安装前的[model] name o3内容被原样恢复、无 GSD 块泄漏、无.tmp-*残留、且安装进程确实抛出异常。给你的实操建议如果你正在使用 Codex 且此前装过 GSD 旧版rc.4 之后重跑一次安装即可触发上述剥离 迁移 校验的自愈路径若遇到异常中止请保留错误输出其中会包含校验失败原因并确认~/.codex/config.toml已被回滚到安装前状态——这正是新语义所保证的行为。版本计划rc 之后如何推进按 rc.4 的发布计划若在最终定稿前仍有修复落地会基于 release 分支再出 rc.5后续实际发生见 docs/RELEASE-v1.39.0-rc.5.md当 RC 稳定后执行发布工作流的finalize把1.39.0提升到latest标签。RC 序列本身就是 GSD 发布流程的一部分社区用户可通过next提前验证上述瘦身安装与 Codex 修复再决定是否等待latest。延伸阅读若想继续深入本仓库的实现细节推荐按以下路径阅读docs/RELEASE-v1.39.0-rc.4.md本文骨架、docs/RELEASE-v1.39.0-rc.5.md、docs/RELEASE-v1.39.0-rc.7.md同一 release 分支的修复演进docs/adr/0011-skill-surface-budget-module.md 与 docs/adr/0010-skill-surface-budget-module.md技能表面预算与 core/standard/full 三档 profile 的架构决策get-shit-done/bin/lib/install-profiles.cjsprofile 解析、技能/代理暂存、.gsd-profile标记持久化的单一事实源bin/install.js安装器的完整入口包括 Codex TOML 解析、原子写与回滚快照tests/install-minimal-hooks.test.cjs 与 tests/bug-2760-codex-install-defensive.test.cjs上述两项特性的可执行契约可直接作为行为规格阅读。【免费下载链接】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),仅供参考