ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

get-shit-done 的 STATE.md 与文件系统不同步时怎么用 state validate 和 state sync 修复

2026/9/10 8:08:07 拓冰建站 浏览量
get-shit-done 的 STATE.md 与文件系统不同步时怎么用 state validate 和 state sync 修复 get-shit-done 的 STATE.md 与文件系统不同步时怎么用 state validate 和 state sync 修复【免费下载链接】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 规范驱动开发流程时.planning/STATE.md记录着当前阶段、计划数和进度。如果 STATE.md 显示的阶段状态或进度位置不对——通常是手动编辑过 STATE.md、执行中途退出、跨会话续做后状态没跟上——依赖 STATE.md 的后续流程就会被带偏。GSD 从 v1.32 起提供了一对状态一致性命令state validate检测 STATE.md 与磁盘实际状态之间的偏差state sync按磁盘状态重建 STATE.md替代手工编辑。这两条命令目前仍是CJS-only尚未移植到 query 层所以要用传统的gsd-tools.cjsCLI 调用而不是gsd-sdk query见 USER-GUIDE.md 的 Troubleshooting 章节和 CLI-TOOLS.md。修复前的前提条件项目已经初始化过 GSD即存在.planning/目录state validate要求.planning/STATE.md存在state sync要求.planning/目录存在。在项目根目录即包含.planning/的目录执行命令GSD 的规划文件都在.planning/下STATE.md 就在.planning/STATE.md。版本不低于 v1.32——state validate/state sync是 v1.32 新增命令用来取代手工编辑 STATE.md见 FEATURES.md 中 STATE.md Consistency Gates 一节。第 1 步用 state validate 检测偏差node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs state validate这是只读检查它会读取 STATE.md 中的Status、Current Phase、Total Plans in Phase字段逐阶段对照.planning/phases/目录下的实际文件plan 文件、SUMMARY 文件、VERIFICATION 文件。命令输出一个 JSON 验证报告关键字段valid是否没有检测到任何偏差布尔值warnings人类可读的告警列表drift结构化记录哪些字段不一致。state validate会给出三类告警实现见 state-mutation.ts 中的stateValidatePlan count mismatch—— STATE.md 里Total Plans in Phase记的 plan 数量与当前阶段目录下的实际数量对不上Status drift—— STATE.md 的Status还在 executing但阶段目录下某个VERIFICATION*.md文件的 frontmatter 里已经是status: passed提示该阶段可能已完成Ready for verification—— 当前阶段所有 plan 都已有 SUMMARY 文件但Status仍写着 executing提示阶段可能已可以进入验证。STATE.md 缺失时命令不会崩溃而是返回{error: STATE.md not found}。state validate的输出形态以 tests/state.test.cjs 中的断言为准一致时返回valid: true且warnings为空数组有偏差时warnings里会出现对应告警文本。第 2 步用 state sync --verify 预览重建结果validate 发现偏差后先用干运行模式预览state sync会改什么不写入文件node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs state sync --verifystate sync以磁盘实际状态为准重建 STATE.md。--verify模式返回dry_run: true、synced: false和一份changes列表告诉你哪些字段会被修改。它只调整三个字段字段修改规则Total Plans in Phase改为磁盘上最高未完成阶段的实际 plan 数Progress按磁盘上的 SUMMARY / plan / 阶段完成情况重新计算写成[█░] N%格式Last Activity刷新为当天日期changes列表为空说明没有字段需要改动无需继续。第 3 步执行 state sync 实际写入预览确认无误后去掉--verify正式重建node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs state sync成功后返回synced: true、dry_run: false和本次修改的changes列表。STATE.md 被重建为反映文件系统真实状态的内容对应 FEATURES.md 中 REQ-STATE-02/03 的要求。验证修复结果sync 完成后再跑一次 validate 确认node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs state validate输出valid: true且warnings为空表示 STATE.md 与.planning/phases/下的实际状态已经一致修复完成。限制与排查validate 的覆盖面有限它只检查Status、Current Phase、Total Plans in Phase三类字段与磁盘的偏差。如果 validate 显示valid: true但你觉得 STATE.md 某处仍不对检查的是其他字段validate 不会替你发现这类漂移。路径前缀$HOME/.claude/get-shit-done/bin/gsd-tools.cjs是 Claude Code 下的传统 CLI 安装位置其他运行时或本地安装的实际路径可能不同按你机器上的安装位置替换。STATE.md 缺失validate/sync 都会返回{error: STATE.md not found}而不是崩溃此时先确认项目确实初始化过 GSD。如果同步后进度数字与 ROADMAP 里的进度表对不上可以对照 STATE-MD-LIFECYCLE.md 理解STATE.md的 frontmatter 字段语义与 status-line 渲染场景frontmatter 采用正则解析---必须从文件第一个字符开始progress:等嵌套块内不支持注释。命令的完整说明见 COMMANDS.md 的 State Management Commands 一节。【免费下载链接】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),仅供参考