
数据库后端【免费下载链接】druid阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品为监控而生的数据库连接池项目地址https://gitcode.com/gh_mirrors/druid/druid点击查看免费下载导读本指南系统讲解 OpenSpec 的openspec-bulk-archive-change技能——一种在一次操作中批量归档多个已完成 Change变更提案的标准工作流。文中以 Druid 仓库中的 openspec 目录为实际背景这里真实存放着多份已归档的 Change如dialect-registration-mechanism、主能力规格、模板与项目配置是理解该技能每一步落地的活样本。读完本文你将掌握如何用openspec list/status命令收集状态、构建 capability 冲突映射、依据代码库证据智能解决 spec 冲突并安全地执行mv归档与结果汇总全程遵守必须让用户选择、绝不自动全选等核心守卫规则。一、技能定位与适用场景openspec-bulk-archive-change是一个面向 Agent 的技能Skill定义其元信息声明于 SKILL.md用途一次性批量归档多个已完成 Change尤其是并行推进、同时落地的多个变更输入无需固定输入运行时通过询问用户选择待归档项前置条件需要安装并可使用 openspec CLI关键能力对涉及同一 capability能力规格的多个 Change 进行智能冲突检测并通过检索代码库判断哪些需求真正被实现从而决定 spec 同步策略。在 Druid 仓库中这套技能直接对应当前的 openspec/changes/archive/ 目录结构——例如2026-02-13-dialect-registration-mechanism/、2026-02-25-optimize-inheritance-hierarchy/等均已按YYYY-MM-DD-change-name命名规则归档每个 Change 目录下包含proposal.md、design.md、tasks.md与specs/capability/spec.md增量规格。这正是本文所述工作流反复操作的产物。二、整体工作流概览该技能把批量归档拆解为 9 个顺序步骤形成一个先盘点、再校验、后冲突消解、最终确认执行的闭环步骤名称核心动作1获取活跃 Changesopenspec list --json2用户选择AskUserQuestion 多选绝不自动选择3批量校验对每个 Change 收集 artifacts/tasks/specs 状态4冲突检测构建 capability → changes 映射标记 2 冲突5智能消解检索代码库判断实现情况决定同步顺序6汇总状态表展示含冲突标注与警告的表格7批量确认单次确认整个批次8执行归档spec 同步 mv到 archive/9输出总结成功/跳过/失败分类汇总以下按步骤逐一展开。三、步骤 12盘点活跃 Changes 并让用户选择3.1 获取活跃变更清单首先运行openspec list --json以 JSON 形式获取所有活跃未归档Change。若返回结果为空直接告知用户没有可归档的活跃 Change并停止流程进入无变更输出分支见第七节。Druid 仓库当前没有活跃 Change——openspec/changes/archive/ 下全部是已归档条目这与技能中检测到无活跃变更即终止的分支完全对应。3.2 多选交互必须由用户决定使用AskUserQuestion 工具进行多选要求为每个 Change 展示其 schema提案结构提供全部归档All changes选项允许任意数量选择1 个即可2 为典型场景。IMPORTANT 守卫绝不自动预选必须始终由用户决定。这条规则写在技能文档中是防止误归档的关键护栏——因为归档本质上是把openspec/changes/name/移动到 archive 目录的破坏性操作。四、步骤 34批量状态校验与冲突检测4.1 三维度状态收集对每个被选中的 Change需要收集三类状态a. Artifact 状态——运行openspec status --change name --json解析其中的schemaName与artifacts列表记录哪些 artifact 处于done状态哪些尚未完成。b. 任务完成度——读取openspec/changes/name/tasks.md统计未完成项- [ ]与已完成项- [x]的数量若不存在 tasks 文件则记为 No tasks。Druid 仓库的归档实例可作参照2026-02-13-dialect-registration-mechanism/tasks.md 中每条任务均为- [x]已完成状态并记录了基线性能MySqlPerfTest热身轮509-518ms、内存测试27,067,904字节与最终校验结论是任务全部完成形态的完整样例。c. 增量规格——检查openspec/changes/name/specs/目录列出包含哪些 capability 的增量 spec并从每个 spec 中抽取需求名匹配### Requirement: name格式的行。Druid 仓库中2026-02-13-dialect-registration-mechanism/specs/同时包含dialect-registration/与sql-parser-core/两个 capability 的增量规格即一个 Change 触碰多个 capability的实例。4.2 冲突映射构建将收集结果归一化为capability - [涉及它的 changes]映射auth - [change-a, change-b] - CONFLICT (2 changes) api - [change-c] - OK (only 1 change)判定规则当 2 个及以上被选 Change 对同一 capability 提供了增量 spec 时即构成冲突。冲突意味着多个变更都在声称修改同一能力规格直接按任意顺序同步会导致规格被错误覆盖。五、步骤 5基于代码库证据的智能冲突消解冲突消解的核心思想是让代码说话——不靠猜测而是检索代码库判断每个 Change 声明的需求是否真实落地。对每个冲突执行三步阅读增量 spec从每个冲突 Change 的specs/capability/spec.md中理解各自声明新增/修改了哪些需求检索实现证据在代码库中查找实现这些需求的代码、相关文件、函数或测试确定消解方案分三种情形仅一个真正实现→ 只同步该 Change 的 specs两者都实现→ 按时间顺序应用先旧后新后归档者覆盖都未实现→ 跳过 spec 同步并警告用户。5.1 示例仅一方实现Conflict: specs/auth/spec.md touched by [add-oauth, add-jwt] Checking add-oauth: - Delta adds OAuth Provider Integration requirement - Searching codebase... found src/auth/oauth.ts implementing OAuth flow Checking add-jwt: - Delta adds JWT Token Handling requirement - Searching codebase... no JWT implementation found Resolution: Only add-oauth is implemented. Will sync add-oauth specs only.5.2 示例双方均实现Conflict: specs/api/spec.md touched by [add-rest-api, add-graphql] Checking add-rest-api (created 2026-01-10): - Delta adds REST Endpoints requirement - Searching codebase... found src/api/rest.ts Checking add-graphql (created 2026-01-15): - Delta adds GraphQL Schema requirement - Searching codebase... found src/api/graphql.ts Resolution: Both implemented. Will apply add-rest-api specs first, then add-graphql specs (chronological order, newer takes precedence).5.3 与 Druid 仓库规格体系的对应Druid 仓库完整落实了增量 spec → 主规格的演进模型。主能力规格基线位于 openspec/specs/涵盖sql-parser-core、connection-pool-core、filter-chain、wall-security、monitoring-stat与dialect-registration等能力而 openspec/config.yaml 明确要求Changes should update these capabilities via delta specs atopenspec/changes/change-name/specs/capability/spec.md即增量规格必须遵循该目录约定且主规格作为基线必须保持稳定。以dialect-registration为例其主规格 openspec/specs/dialect-registration/spec.md 定义了三条需求Dialect Provider Registration Lifecycleregister/replace/unregister/lookup 的原子替换语义、Registration Input Validation拒绝 null/空白 key 与 null provider快速失败、Concurrent Registration Safety并发读写一致性。其增量版本的归档 Change design.md 中的 Decision 2 记录了registry-first 内置回退的消解原则Decision 3 记录了重复注册采用原子替换的语义——这正是冲突消解时后归档者按时间顺序覆盖决策在规格层面的落点。六、步骤 67状态汇总表与批量确认6.1 汇总状态表将全部选中 Change 汇总为一张表| Change | Artifacts | Tasks | Specs | Conflicts | Status | |---------------------|-----------|-------|---------|-----------|--------| | schema-management | Done | 5/5 | 2 delta | None | Ready | | project-config | Done | 3/3 | 1 delta | None | Ready | | add-oauth | Done | 4/4 | 1 delta | auth (!) | Ready* | | add-verify-skill | 1 left | 2/5 | None | None | Warn |冲突项的消解结论单独附注* Conflict resolution: - auth spec: Will apply add-oauth then add-jwt (both implemented, chronological order)未完成 Change 给出警告Warnings: - add-verify-skill: 1 incomplete artifact, 3 incomplete tasks对照 Druid 仓库的 tasks.md 模板其末段 Verification Checklist 中All tests pass / Checkstyle passes / Backward compatibility maintained等条目正是 Status 列判定为Ready的输入依据而归档实例 2026-02-13-dialect-registration-mechanism/tasks.md 中137tests,0failures的记录则对应表格中 Tasks 全满、可标记 Ready 的真实佐证。6.2 单次批量确认再次使用 AskUserQuestion 工具做单一确认询问归档 N 个 Change选项基于状态动态给出例如归档全部 N 个 Change仅归档 N 个 Ready Change跳过未完成项取消若有未完成项必须明确告知用户它们将以带警告归档的方式处理。七、步骤 89执行归档与结果输出7.1 逐个执行归档按确定顺序尊重冲突消解结论处理每个 Changea. 同步增量规格若存在 delta specs——采用 openspec-sync-specs 的 Agent 驱动智能合并方式有冲突时按已消解的顺序应用记录本次是否执行了同步。b. 执行归档mkdir -p openspec/changes/archive mv openspec/changes/name openspec/changes/archive/YYYY-MM-DD-name归档目标目录名采用当前日期YYYY-MM-DD-name。Druid 仓库中的实际目录即如此命名例如 2026-05-12-fix-grouping-sets-comma/。c. 逐项记录结果Success归档成功、Failed归档出错并记录错误、Skipped用户选择不归档。7.2 输出格式模板成功## Bulk Archive Complete Archived N changes: - change-1 - archive/YYYY-MM-DD-change-1/ - change-2 - archive/YYYY-MM-DD-change-2/ Spec sync summary: - N delta specs synced to main specs - No conflicts (or: M conflicts resolved)部分成功## Bulk Archive Complete (partial) Archived N changes: - change-1 - archive/YYYY-MM-DD-change-1/ Skipped M changes: - change-2 (user chose not to archive incomplete) Failed K changes: - change-3: Archive directory already exists无变更## No Changes to Archive No active changes found. Use /opsx:new to create a new change.失败场景如归档目标已存在不影响其他 Change 继续处理——该 Change 标记为失败流程照常推进其余项。八、守卫规则Guardrails详解技能文档末尾给出十条强制约束它们是整个工作流的红线允许任意数量1 均可2 为典型场景始终询问选择绝不自动全选尽早检测冲突并通过检索代码库消解双方均实现时按时间顺序应用specs先旧后新仅在实现缺失时跳过 spec 同步且必须警告用户确认前展示清晰的逐 Change 状态整个批次使用单一确认记录并上报全部结果success/skip/fail归档移动时保留.openspec.yaml归档目标目录名使用当前日期YYYY-MM-DD-name若目标已存在仅失败该 Change 而继续处理其余项。其中保留.openspec.yaml与使用日期前缀目录名这两条直接解释了 Druid 仓库归档目录为何全部形如2026-02-13-xxx、2026-03-06-xxx——这是流程纪律在版本库中的可视化痕迹。九、与仓库变更管理体系的衔接理解该技能还需把它放进 Druid 仓库更宽的 OpenSpec 体系中模板层openspec/templates/ 提供四类文档骨架——proposal.md动机、变更类型、受影响模块、API 影响、design.md设计决策、类设计、线程安全、迁移指南、spec.mdADDED/MODIFIED 需求、WHEN/THEN 场景、边界情况、配置表、tasks.md分阶段实施计划与验证清单配置层openspec/config.yaml 定义了本项目的能力基线映射capability → 架构域与各 artifact 的撰写规则例如 spec 必须用 WHEN/THEN 格式、涉及重构时必须捕获行为等价场景、架构级变更必须附带MySqlPerfTest基线对比归档层openspec/changes/archive/ 是本文档工作流的成品库每一个归档 Change 都是proposal → design → delta specs → tasks → verification-notes完整生命周期的见证。批量归档技能正是这条流水线的最后一环它把多个并行 Change 的增量规格安全合并回主基线openspec/specs/并用日期命名把历史归档为不可变的快照从而让能力规格基线保持稳定、演进过程可追溯。对于在 Druid 这样规模庞大SQL 解析器、连接池、防火墙等多能力并存的仓库中维护 OpenSpec 变更的团队或 Agent 而言这套先校验、再消解、后归档的纪律是防止规格漂移与信息丢失的实用操作范式。十、快速参考完整命令与工具清单用途命令 / 工具列出活跃 Changeopenspec list --json查询单个 Change 状态openspec status --change name --json读取任务完成度读取openspec/changes/name/tasks.md统计- [x]/- [ ]列出增量规格检查openspec/changes/name/specs/目录用户选择AskUserQuestion多选 All changes批量确认AskUserQuestion单次确认执行归档mkdir -p openspec/changes/archive mv openspec/changes/name openspec/changes/archive/YYYY-MM-DD-name新建变更入口/opsx:new无活跃变更时提示实际使用时请始终以本仓库 SKILL.md 为准并确保环境已安装 openspec CLI 且工作目录为仓库根目录含 openspec/config.yaml 配置。赞分享数据库后端【免费下载链接】druid阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品为监控而生的数据库连接池项目地址https://gitcode.com/gh_mirrors/druid/druid点击查看免费下载相关推荐OPSX 批量归档工作流实战基于 OpenSpec 的变更批量归档与冲突处理指南OPSX 批量归档工作流实战基于 OpenSpec 的变更批量归档与冲突处理指南 本指南以仓库中的 Claude Code 命令定义 bulk archive后端AI Agent人工智能流程编排WebSocketOpenSpec 批量归档工作流实战Druid 仓库 opsx-bulk-archive 命令全解析OpenSpec 批量归档工作流实战Druid 仓库 opsx bulk archive 命令全解析 本文深入解析 Druid 仓库中 .cursor/com数据库后端Druid 项目 OpenSpec 批量归档技能实战Agent 驱动的变更归档与规格冲突智能解决Druid 项目 OpenSpec 批量归档技能实战Agent 驱动的变更归档与规格冲突智能解决 导读 本文围绕 Druid 开源仓库中 .cursor/sk数据库后端上一篇终极指南AWS Load Balancer Controller与Istio服务网格集成构建云原生应用架构下一篇PrivateGPT全平台部署指南5步搭建你的私有AI知识库系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考