用途
openspec-bulk-archive-change 用于一次性批量归档多个已完成的变更,适用于同时存在多个并行变更且需要集中归档的场景。该技能会智能处理规格冲突,通过检查代码库判断实际已实现的内容。
主要能力
- 批量归档:在单次操作中归档多个变更。
- 规格冲突检测:识别多个选中变更是否触及同一能力。
- 基于代码库的冲突解决:阅读各变更增量规格并搜索实现证据,决定应用顺序或跳过。
- 状态汇总:以表格展示构件状态、任务完成度、增量规格、冲突与状态。
- 确认与结果报告:单次确认整批操作,并报告成功、跳过、失败。
使用方式
- 获取活跃变更:运行
openspec list --json。若没有活跃变更,提示用户并停止。 - 选择变更:使用 AskUserQuestion 工具多选,展示每个变更及其 schema,提供“全部变更”选项,允许任意数量选择(1+ 可用,2+ 为典型场景)。重要:不要自动选择,始终由用户选择。
- 批量校验:对每个选中变更收集:
- 构件状态:运行
openspec status --change "<name>" --json,解析 schemaName 与 artifacts 列表,记录已完成与其他状态。 - 任务完成度:读取
openspec/changes/<name>/tasks.md,统计- [ ]与- [x]。若无任务文件,记录为“No tasks”。 - 增量规格:检查
openspec/changes/<name>/specs/目录,列出存在的能力规格,并提取需求名(匹配### Requirement: <name>的行)。
- 构件状态:运行
- 检测规格冲突:构建 capability -> [changes] 映射。当 2 个及以上选中变更对同一能力有增量规格时,视为冲突。
- 以智能体方式解决冲突:对每个冲突调查代码库:阅读各冲突变更的增量规格;搜索实现证据(相关文件、函数或测试);确定解决方案:仅一个变更已实现则同步该变更规格;两者均已实现则按时间顺序应用(较旧先,较新覆盖);均未实现则跳过规格同步并警告用户;记录每个冲突的解决方式(应用哪个变更的规格、顺序、依据)。
- 展示整合状态表:包含 Change、Artifacts、Tasks、Specs、Conflicts、Status 列。对冲突展示解决说明;对不完整变更展示警告。
- 确认批量操作:使用 AskUserQuestion 单次确认“Archive N changes?”,选项可包括“归档全部 N 个变更”“仅归档 N 个就绪变更(跳过不完整)”“取消”。若不完整,明确说明将带警告归档。
- 逐个执行归档:按确定顺序处理;若存在增量规格则先同步规格(采用 openspec-sync-specs 的智能合并方式,冲突按解决顺序应用,并记录是否同步);执行归档:
mkdir -p openspec/changes/archive与mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>;记录每个变更的结果(成功/失败/跳过)。 - 展示摘要:报告归档、跳过、失败数量,以及规格同步摘要。
冲突解决示例
- 仅一个已实现:
specs/auth/spec.md被 [add-oauth, add-jwt] 触及。检查 add-oauth 发现src/auth/oauth.ts实现 OAuth 流程;检查 add-jwt 未发现 JWT 实现。结论:仅同步 add-oauth 规格。 - 两者均已实现:
specs/api/spec.md被 [add-rest-api, add-graphql] 触及。add-rest-api(创建于 2026-01-10)发现src/api/rest.ts;add-graphql(创建于 2026-01-15)发现src/api/graphql.ts。结论:先应用 add-rest-api 规格,再应用 add-graphql 规格(按时间顺序,较新优先)。
输出
- 成功:列出已归档变更及目标路径,并给出规格同步摘要(同步数量、冲突解决情况)。
- 部分成功:列出已归档、跳过、失败变更及失败原因。
- 无变更:提示未发现活跃变更,并可使用
/opsx:new创建新变更。
约束与守卫
- 允许任意数量变更(1+ 可用,2+ 为典型)。
- 始终提示选择,绝不自动选择。
- 尽早检测规格冲突并通过检查代码库解决。
- 两者均已实现时按时间顺序应用规格。
- 仅当实现缺失时跳过规格同步并警告用户。
- 确认前展示清晰的逐变更状态。
- 整批使用单次确认。
- 跟踪并报告所有结果(成功/跳过/失败)。
- 移动到归档时保留 .openspec.yaml。
- 归档目录目标使用当前日期:YYYY-MM-DD-。
- 若归档目标已存在,则该变更失败但继续处理其他变更。
限制
该技能依赖 OpenSpec 命令与 openspec/changes 目录结构;具体支持的平台、收费、价格与效果暂未提供。