ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

深蓝词库转换(imewlconverter)中的 OpenSpec 批量归档实战:用 Agent 智能处理多变更归档与规格说明冲突

深蓝词库转换(imewlconverter)中的 OpenSpec 批量归档实战:用 Agent 智能处理多变更归档与规格说明冲突 桌面应用CLI开发工具【免费下载链接】imewlconverter”深蓝词库转换“ 一款开源免费的输入法词库转换程序项目地址https://gitcode.com/gh_mirrors/im/imewlconverter点击查看免费下载本篇技术指南聚焦于开源仓库 gh_mirrors/im/imewlconverter 中使用的 OpenSpec 规范驱动开发流程里的批量归档技能openspec-bulk-archive-change。它回答一个具体问题当多个并行变更change同时完成、需要一次性收尾时如何通过 Agent 自动化地验证产出物、统计任务、检测并解决规格说明冲突最终安全归档到openspec/changes/archive/。读完本文你将掌握这套九步批量归档工作流、openspecCLI 的关键命令、规格说明冲突的三种判定与解决策略并能直接复用到自己基于 OpenSpec 的仓库中。一、背景OpenSpec 工作流中的变更生命周期与本仓库的实际应用OpenSpec 是一种规范驱动spec-driven的变更管理方式其核心理念是任何代码改动都先以变更change为单位记录在openspec/changes/下包含提案proposal.md、设计design.md、任务tasks.md以及增量规格说明incremental specs实现完成后变更被归档到openspec/changes/archive/同时增量规格说明被**同步sync**进openspec/specs/下的主规格说明。在本仓库深蓝词库转换一款支持超过 20 种输入法词库格式转换的开源工具技术栈为 .NET 8.0 / C#中这套流程已经被真实使用并留下完整痕迹可作为批量归档的活教材归档目录 openspec/changes/archive/ 下已存在四个按YYYY-MM-DD-name命名约定归档的变更例如2026-01-31-refactor-cmd-args-format/命令行参数 GNU 化重构、2026-01-31-refactor-version-automation/版本号自动化、2026-02-03-replace-search-word-freq-with-llm/以 LLM 替换搜索词频、2026-05-12-export-scel/新增 scel 导出主规格说明目录 openspec/specs/ 下保存着同步后的能力规格说明cmd-args-parsing/、llm-configuration-cli/、llm-configuration-ui/、llm-word-rank-generation/、word-rank-management/——它们与2026-02-03-replace-search-word-freq-with-llm归档变更中的四个增量规格说明一一对应正是同步进主规格说明后再归档这一步骤的直接证据仓库根目录的 openspec/config.yaml 声明了schema: spec-driven并提供了项目上下文技术栈、约定、领域知识供 Agent 在创建和校验产出物时参考openspec/project.md 则维护了项目级上下文说明。也就是说本文讲解的技能不是纸上谈兵本仓库已经完整走过了一遍变更 → 同步 → 归档的闭环。二、批量归档技能定位与单变更归档、规格同步的分工在 .codebuddy/skills/ 与 .claude/skills/ 两套同名技能集中归档相关技能各司其职技能文件职责openspec-archive-change/SKILL.md单变更归档验证一个变更的产出物、任务、增量规格说明同步状态后归档openspec-bulk-archive-change/SKILL.md本文主角批量归档一次处理多个已完成变更核心增值在于跨变更的规格说明冲突检测与代理式解决openspec-sync-specs/SKILL.md规格说明同步把变更中的增量规格说明智能合并进主规格说明Agent 驱动批量归档本质上是对单变更归档的循环 冲突管理增强单变更只需要逐个检查产出物与任务而批量场景下多个变更可能同时修改同一个能力capability的规格说明因此必须引入冲突检测环节。与技能配套的还有命令入口 .codebuddy/commands/opsx/bulk-archive.mdOPSX: 批量归档两者的步骤内容完全一致技能文件侧重 Agent 行为约束命令文件侧重交互入口。三、九步批量归档工作流详解整个技能将批量归档拆解为九个明确步骤下面结合命令与源码级细节逐一展开。步骤 1获取活动变更列出候选运行以下命令获取所有**活动未归档**变更openspec list --json该命令输出 JSON 格式的变更列表。如果返回为空说明当前没有可归档的变更Agent 应当通知用户并停止——对应的输出模板是## 无需归档的变更 未找到活动变更。使用 /opsx:new 创建新变更。步骤 2提示变更选择必须由用户决定Agent 使用AskUserQuestion 工具进行多选让用户勾选要归档的变更。界面上需要显示每个变更及其使用的 Schema工作流类型提供所有变更选项允许任意数量选择1 可用2 是典型用例。技能反复强调一条重要提示不要自动选择始终让用户选择。这是一条强护栏归档操作会移动目录并可能改写主规格说明绝不能由 Agent 擅自决定取舍。步骤 3批量验证——收集每个选定变更的状态对每个选定的变更需要收集三类状态信息a. 产出物状态artifacts——运行openspec status --change name --json解析输出中的schemaName使用的工作流和artifacts列表特别注意哪些产出物是done状态、哪些不是。在本仓库中产出物一般对应提案、设计、任务、增量规格说明等文件其完成度由图artifact graph驱动判定。b. 任务完成度tasks——读取openspec/changes/name/tasks.md统计- [ ]未完成与- [x]已完成的数量如果任务文件不存在标注为无任务。可以对照仓库中的真实任务文件查看格式例如 2026-01-31-refactor-cmd-args-format/tasks.md。c. 增量规格说明incremental specs——检查openspec/changes/name/specs/目录列出存在哪些能力规格说明并逐一提取需求名称匹配### 需求 name格式的行。以 2026-02-03-replace-search-word-freq-with-llm/specs/ 为例其下就有llm-configuration-cli/、llm-configuration-ui/、llm-word-rank-generation/、word-rank-management/四个增量规格说明目录。步骤 4检测规格说明冲突批量归档的核心价值构建capability - [涉及它的变更]映射auth - [change-a, change-b] - 冲突2 个变更 api - [change-c] - 正常仅 1 个变更判定规则当 2 个及以上的选定变更对同一能力提供了增量规格说明时即判定为冲突。这一步之所以放在归档之前是为了避免多个变更的增量规格说明在同步到主规格说明时互相覆盖、丢失需求。步骤 5代理式解决冲突基于代码库证据对每个冲突Agent 需要用证据说话调查代码库读取增量规格说明从每个冲突变更中了解各自声称添加/修改的内容搜索代码库寻找实现证据查找实现了该增量规格说明中需求的代码、相关文件、函数或测试确定解决方案三种情形只有一个变更实际实现了需求 →仅同步该变更的规格说明两个变更都实现了 →按时间顺序应用旧的先应用新的覆盖/追加两个变更都未实现 →跳过规格说明同步并警告用户记录解决方案记录应用了哪个变更的规格说明、应用顺序、以及在代码库中找到了什么作为原理依据。技能内置了两个典型的冲突解决示例示例 1仅一个已实现。冲突为specs/auth/spec.md被[add-oauth, add-jwt]涉及。检查add-oauth的增量中要求添加OAuth 提供商集成在代码库中找到src/auth/oauth.ts实现了 OAuth 流程检查add-jwt要求添加JWT 令牌处理但代码库中未找到 JWT 实现。结论仅同步add-oauth的规格说明。示例 2两者都已实现。冲突为specs/api/spec.md被[add-rest-api, add-graphql]涉及且两者都能在src/api/rest.ts与src/api/graphql.ts中找到实现证据。结论先应用add-rest-api创建于 2026-01-10再应用add-graphql创建于 2026-01-15按时间顺序、较新的优先。这个以代码库为准的原则把归档从机械的文件搬移提升为一次基于实现事实的规格说明对账——这正是该技能区别于普通脚本归档的本质所在。步骤 6显示合并状态表归档前透明汇报将汇总结果以表格形式呈现给用户| 变更 | 产出物 | 任务 | 规格说明 | 冲突 | 状态 | |---------------------|-----------|-------|---------|-----------|--------| | schema-management | 完成 | 5/5 | 2 增量 | 无 | 就绪 | | project-config | 完成 | 3/3 | 1 增量 | 无 | 就绪 | | add-oauth | 完成 | 4/4 | 1 增量 | auth (!) | 就绪* | | add-verify-skill | 剩余 1 | 2/5 | 无 | 无 | 警告 |对于冲突附上解决方案说明例如* 冲突解决方案auth 规格说明将先应用 add-oauth 然后 add-jwt两者都已实现按时间顺序对于未完成的变更显示警告例如警告add-verify-skill1 个未完成产出物3 个未完成任务。表格中的就绪*星号表示有冲突但已给出解决方案警告表示存在未完成项。这张表让用户在点击确认前对整批变更的状态一目了然。步骤 7确认批量操作单次确认使用 AskUserQuestion 工具进行单次确认问题形如归档 N 个变更选项可能包括归档所有 N 个变更仅归档 N 个就绪变更跳过未完成的取消。如果存在未完成的变更必须明确说明它们将带着警告被归档技能不阻止带警告归档但必须告知并取得确认。步骤 8对每个确认的变更执行归档按步骤 5 确定的顺序处理变更遵循冲突解决方案a. 如果存在增量规格说明则先同步规格说明——使用 openspec-sync-specs 方法Agent 驱动的智能合并详见 openspec-sync-specs/SKILL.md对于冲突按已解决的顺序依次应用并跟踪同步是否完成。同步的本质是读取openspec/changes/name/specs/capability/spec.md中的新增需求 / 修改需求 / 移除需求 / 重命名需求四个区块智能地应用到openspec/specs/capability/spec.md主规格说明上而不是机械覆盖。b. 执行归档——核心命令为mkdir -p openspec/changes/archive mv openspec/changes/name openspec/changes/archive/YYYY-MM-DD-name其中YYYY-MM-DD取当前日期name为变更名。注意移动到归档时保留.openspec.yaml它随目录一起移动是该变更的元数据配置。c. 跟踪每个变更的结果——三类结果成功成功归档、失败归档期间出错并记录错误、跳过用户选择不归档如适用。步骤 9显示摘要展示最终结果包含已归档/跳过/失败的变更明细以及规格说明同步摘要。完整模板见下文输出模板一节。四、冲突解决与输出模板速查成功时的输出## 批量归档完成 已归档 N 个变更 - change-1 - archive/YYYY-MM-DD-change-1/ - change-2 - archive/YYYY-MM-DD-change-2/ 规格说明同步摘要 - N 个增量规格说明已同步到主规格说明 - 无冲突或M 个冲突已解决部分成功时的输出## 批量归档完成部分 已归档 N 个变更 - change-1 - archive/YYYY-MM-DD-change-1/ 跳过 M 个变更 - change-2用户选择不归档未完成的 失败 K 个变更 - change-3归档目录已存在没有变更时的输出## 无需归档的变更 未找到活动变更。使用 /opsx:new 创建新变更。失败情形的处理如果归档目标目录已存在例如同一天对同名变更重复归档该变更标记为失败并记录错误如归档目录已存在但继续处理其他变更不因单个失败中断整个批次。五、防护措施九条硬性约束技能文件在末尾列出了九条防护措施是整个工作流安全性的保障值得完整列出允许任意数量的变更1 可以2 是典型用例始终提示选择永不自动选择及早检测规格说明冲突并通过检查代码库解决当两个变更都已实现时按时间顺序应用规格说明仅当实现缺失时跳过规格说明同步必须警告用户在确认前显示清晰的每个变更状态对整个批次使用单次确认跟踪并报告所有结果成功/跳过/失败移动到归档时保留.openspec.yaml归档目录目标使用当前日期YYYY-MM-DD-name如果归档目标已存在该变更失败但继续处理其他变更。第 2 条与第 7 条共同构成了人机协作的边界Agent 负责调查、验证、给出建议与执行但选择与确认权始终在用户手中。六、实战观察本仓库中的批量归档痕迹本仓库的 openspec/changes/archive/ 目录本身就是批量归档技能的落地证据读者可以对照验证命名约定归档目录增量规格说明同步后的主规格说明2026-01-31-refactor-cmd-args-format/specs/cmd-args-parsing/spec.mdopenspec/specs/cmd-args-parsing/spec.md2026-02-03-replace-search-word-freq-with-llm/4 个增量规格说明openspec/specs/ 下对应 4 个能力目录2026-05-12-export-scel/specs/scel-export/spec.md已同步2026-01-31-refactor-version-automation/无specs/为空无增量规格说明其中2026-02-03-replace-search-word-freq-with-llm是最典型的批量归档样本一个变更携带 4 个能力增量规格说明llm-configuration-cli、llm-configuration-ui、llm-word-rank-generation、word-rank-management归档后这 4 个能力全部出现在主规格说明目录 openspec/specs/ 中——这正是先同步、后归档流程的结果。而2026-01-31-refactor-version-automation的specs/为空对应技能中无增量规格说明则直接归档的分支。再结合 openspec/config.yaml 中的schema: spec-driven声明与项目上下文技术栈、Git 工作流、版本号管理约定可以看到 OpenSpec 的配置驱动 Agent 产出物机制Agent 在创建提案、设计、任务等产出物时会自动加载这份上下文作为约束来源而批量归档技能则确保这些产出物在变更完成后被正确收尾。七、总结与适用前提批量归档openspec-bulk-archive-change解决的是 OpenSpec 工作流中多个并行变更同时完成时的收尾效率与数据一致性问题。其完整价值链条为列出活动变更 → 用户选择 → 逐项验证产出物/任务/增量规格说明→ 冲突检测 → 代码库证据驱动的冲突解决 → 状态表透明汇报 → 单次确认 → 规格同步 目录归档 → 结果摘要。适用前提与本仓库一致需要安装openspec CLI技能文件的 compatibility 字段明确要求仓库采用schema: spec-driven的 OpenSpec 目录布局openspec/changes/、openspec/changes/archive/、openspec/specs/并由支持 AskUserQuestion 工具的 Agent如 CodeBuddy、Claude执行。如果你正在维护自己的 OpenSpec 仓库可以直接复用 .codebuddy/skills/openspec-bulk-archive-change/SKILL.md 这份技能定义把批量归档 智能冲突解决的能力复制到你的项目中。赞分享桌面应用CLI开发工具【免费下载链接】imewlconverter”深蓝词库转换“ 一款开源免费的输入法词库转换程序项目地址https://gitcode.com/gh_mirrors/im/imewlconverter点击查看免费下载相关推荐Druid 项目 OpenSpec 批量归档技能实战Agent 驱动的变更归档与规格冲突智能解决Druid 项目 OpenSpec 批量归档技能实战Agent 驱动的变更归档与规格冲突智能解决 导读 本文围绕 Druid 开源仓库中 .cursor/sk数据库后端OpenSpec 变更批量归档实战智能冲突检测与规格同步工作流解析imewlconverter 项目实践OpenSpec 变更批量归档实战智能冲突检测与规格同步工作流解析imewlconverter 项目实践 本指南围绕 OpenSpec 工作流中批量归档桌面应用CLI开发工具OPSX 批量归档工作流实战基于 OpenSpec 的变更批量归档与冲突处理指南OPSX 批量归档工作流实战基于 OpenSpec 的变更批量归档与冲突处理指南 本指南以仓库中的 Claude Code 命令定义 bulk archive后端AI Agent人工智能流程编排WebSocket上一篇Zulip 前端 Node 测试覆盖率调试实战用 ./tools/test-js-with-node --coverage 修复 100% 行覆盖失败下一篇ESLint init-declarations 规则完全指南统一变量声明时的初始化风格支持 JavaScript 与 TypeScript创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表