背景
当前 gcop-rs 已经具备 commit、review、stats、hook、alias、project config、fallback provider 等核心能力。下一步不应继续单纯堆命令,而是优先把用户日常路径里的可靠性、可诊断性和自动化集成补齐。
建议先完成公开重构 issue #39,再推进本阶段。#39 可以先降低核心模块维护成本,避免后续继续在大文件里堆功能。
目标
让用户在以下场景里更少猜、更容易排障、更适合接入脚本或 CI:
- provider / 配置 / hook / alias 出问题时,可以一条命令定位。
review 结果可以作为 CI 质量门禁。
commit 生成结果由程序做基础校验,而不是完全相信 LLM。
- 配置默认开启 split 时,用户仍能临时回到普通 commit 流程。
建议范围
1. 新增 gcop-rs doctor
诊断内容建议包括:
- 当前仓库信息:是否在 Git repo 内、repo root、当前分支、是否有 staged changes。
- 配置来源:用户配置、项目配置、环境变量覆盖后的有效配置摘要。
- provider chain:default provider 和 fallback providers 的存在性、可实例化性、可连接性。
- API key 状态:只显示存在/缺失和脱敏信息,不能泄漏密钥。
- network 信息:endpoint、proxy、timeout/retry 配置摘要。
- hook 状态:是否安装
prepare-commit-msg、是否为 gcop-rs 管理、是否存在冲突。
- alias 状态:常用 alias 是否安装、是否被其他命令占用。
- 环境变量影响:
GCOP_SKIP_HOOK、CI、GCOP_CI_*、GCOP__* 等。
建议输出:
- 默认 text 输出,面向人类排障。
--json 输出,方便 issue / CI 收集。
- 不打印敏感值。
2. 增强 review 自动化能力
建议新增:
review --min-severity <info|warning|critical>:CLI 临时覆盖 [review].min_severity。
review --fail-on <warning|critical>:当存在达到阈值的问题时以非 0 退出,方便 CI 使用。
review --output <path>:把 text / markdown / json 写入文件。
review --changed-since <ref>:快捷 review ref..HEAD,减少用户手写 range。
review -v:补齐当前 TODO,输出 provider、prompt 截断、review target、format 等调试信息。
3. 增强 commit 结果校验和可控性
建议新增:
gcop-rs commit --no-split:当 [commit].split = true 时允许临时关闭 split。
- 本地 commit message validator:
- subject 长度检查。
- conventional commit 基础格式检查。
- configured
commit.convention.types 检查。
- 可配置为 warning 或 hard error。
- amend 模式输出更清楚的 diff 来源:HEAD diff、staged diff 是否合并。
commit --dry-run --json 增加元信息:是否截断、summary-only 文件、provider、suggested scope。
非目标
本阶段暂不做:
- 不重写 CLI dispatch。
- 不改变现有配置格式。
- 不引入 provider plugin 架构。
- 不大规模重构 split resume 机制;这放到后续阶段。
- 不改变现有默认行为,除非是明显 bugfix。
验收标准
gcop-rs doctor 在无配置、错误配置、正常配置、Git repo / 非 Git repo 场景都有测试覆盖。
review --fail-on 在 text/json/markdown 输出下退出码行为明确且有测试。
review --output 不污染 stdout 的 machine-readable 输出语义。
commit --no-split 能覆盖 [commit].split = true。
- commit validator 对正常 conventional commit、非法 type、过长 subject 有测试。
- 所有新增错误消息和用户可见文本补齐
en / zh-CN i18n。
建议验证命令:
cargo fmt --all -- --check
cargo test config
cargo test review
cargo test commit
cargo test hook
cargo clippy --all-targets --all-features -- -D warnings
风险
doctor 容易变成信息泄漏点,必须严格脱敏。
review --fail-on 会被 CI 依赖,退出码和 JSON 错误格式要稳定。
- commit validator 不能太激进,否则会误杀用户的 custom convention。
--no-split 和 config 默认值合并逻辑要保持清楚,避免 CLI 行为反直觉。
背景
当前
gcop-rs已经具备 commit、review、stats、hook、alias、project config、fallback provider 等核心能力。下一步不应继续单纯堆命令,而是优先把用户日常路径里的可靠性、可诊断性和自动化集成补齐。建议先完成公开重构 issue #39,再推进本阶段。#39 可以先降低核心模块维护成本,避免后续继续在大文件里堆功能。
目标
让用户在以下场景里更少猜、更容易排障、更适合接入脚本或 CI:
review结果可以作为 CI 质量门禁。commit生成结果由程序做基础校验,而不是完全相信 LLM。建议范围
1. 新增
gcop-rs doctor诊断内容建议包括:
prepare-commit-msg、是否为 gcop-rs 管理、是否存在冲突。GCOP_SKIP_HOOK、CI、GCOP_CI_*、GCOP__*等。建议输出:
--json输出,方便 issue / CI 收集。2. 增强
review自动化能力建议新增:
review --min-severity <info|warning|critical>:CLI 临时覆盖[review].min_severity。review --fail-on <warning|critical>:当存在达到阈值的问题时以非 0 退出,方便 CI 使用。review --output <path>:把 text / markdown / json 写入文件。review --changed-since <ref>:快捷 reviewref..HEAD,减少用户手写 range。review -v:补齐当前 TODO,输出 provider、prompt 截断、review target、format 等调试信息。3. 增强
commit结果校验和可控性建议新增:
gcop-rs commit --no-split:当[commit].split = true时允许临时关闭 split。commit.convention.types检查。commit --dry-run --json增加元信息:是否截断、summary-only 文件、provider、suggested scope。非目标
本阶段暂不做:
验收标准
gcop-rs doctor在无配置、错误配置、正常配置、Git repo / 非 Git repo 场景都有测试覆盖。review --fail-on在 text/json/markdown 输出下退出码行为明确且有测试。review --output不污染 stdout 的 machine-readable 输出语义。commit --no-split能覆盖[commit].split = true。en/zh-CNi18n。建议验证命令:
风险
doctor容易变成信息泄漏点,必须严格脱敏。review --fail-on会被 CI 依赖,退出码和 JSON 错误格式要稳定。--no-split和 config 默认值合并逻辑要保持清楚,避免 CLI 行为反直觉。