Skip to content

OpenSpecUI 12.0.0:改进验证呈现,扩展 Agent 支持

jixoai v12.0.0 openspecui

validate 的发现有了机器可读的报告,CI 接验证结果不用再解析日志;归档前的冲突提醒升为 INFO 级,不再混进失败;Agent 交付接入 SourceCraft Code Assistant。兼容窗口切到 OpenSpec CLI 1.12 一条线,1.10/1.11 默认被挡,升级只需一行命令。

$ npm view openspecui version
12.0.0

OpenSpecUI 12.0.0 发布了(2026-09-04)。这一版适配 OpenSpec CLI 1.12 线:验证结果有了机器可读的报告,Agent 交付接入 SourceCraft Code Assistant,兼容窗口切到 1.12 一条线。

验证发现直接进 CI

以前想把验证结果接进 CI,只能解析给人看的日志文本。1.12 起 validate 多了一种报告形态:

openspec validate --changes --report findings --json

调用必须点名范围:--changes, --specs, --all, --archived 四选一,也不能带单个 change 名。缺了范围的调用会被拒,返回结构化诊断,错误码 invalid_validation_report_request,附 CLI 自己的修正提示。

报告里只列带发现的条目,每条带 level(ERROR/WARNING/INFO)、path 和消息;整轮的 totals 与 exit codes 照旧保留在 summary,returnedItems 与 totalItems 分开计数,筛过的视图和整轮规模不会混。

这份报告是能力门控的契约,只有 1.12 线的会话拿得到;窗口外的会话收到类型化的拒绝,argv 根本不会组装,不是静默降级。它也是过滤后的证据,不承担判定真值,完整的 validate 报告走自己的传输通道。

界面上,发现投影到 Change Detail 的证据面板,每条归因到所属 change,面板层级统一到共享的 header 契约(1aa9ce43、13bb0e15)。

示例:1.12.0 CLI 真实执行输出(节选)
{
  "report": {
    "kind": "validation-findings",
    "version": "1.0",
    "scope": "changes",
    "returnedItems": 1,
    "totalItems": 1
  },
  "itemFindings": [
    {
      "id": "demo-tasks",
      "type": "change",
      "valid": false,
      "issues": [
        {
          "level": "ERROR",
          "path": "file",
          "message": "Change must have at least one delta. ..."
        }
      ],
      "durationMs": 17
    }
  ],
  "summary": { "totals": { "items": 1, "passed": 0, "failed": 1 } }
}

冲突提醒不再混进失败

归档前有一道合并冲突检查,指出哪些 delta 到 archive 那一步会被拒。以前它的提醒和真正的验证失败挤在一起,没有自己的等级;现在这两条单独呈现为 INFO 级:

Archive would refuse this delta: ...
Could not check archive merge conflicts: ...

等级是新的,判定没动,INFO 不改变 valid 与否。定成 INFO 有实际理由:挡住合并的目标可能是笔误,也可能是另一个还没归档的 change 引入的需求,提前按失败算会误报。

Agent 交付接入 SourceCraft Code Assistant

用 SourceCraft Code Assistant 的项目现在也能收到 Agent 交付。命令落在 .codeassistant/commands/opsx-<id>.md,frontmatter 只有一个 description;skill 引用是自然语言,收在 .codeassistant 里。不用重启 IDE。也没有旧目录要迁移。

生成器基线轮转到 1.12.0。

落点:交付目录结构
.codeassistant/
└── commands/
    └── opsx-<id>.md

迁移(破坏性:兼容窗口)

窗口收窄到 >=1.12.0 <1.13.0。1.10.x 与 1.11.x(v11 的窗口)、更老的线、预发布版,以及 >=1.13.0,默认都被挡。1.13 是否准入,等它发布后另行验证:要么放宽 12.x 窗口,要么出新的 major。

最低摩擦路径是一行 CLI 升级:

npm install -g @fission-ai/openspec@1.12

手头确有不兼容的 CLI 可执行文件时,mismatch 对话框提供 Skip version check。该旁路只在当前页面运行时内有效,刷新或重开即清,不构成兼容承诺。

破坏性口径:11.1.0 到 12.0.0 带提交级 ! 标记的提交为 0 个,需要动手迁移的只有 CLI 升级这一条。

其余变更

  • 新契约配了版本锁定的可执行 fixtures:openspec-cli-112 验证新契约成立,保留的 openspec-cli-111 反向验证老 CLI 被挡(d782c98e)

  • findings 的 argv 组装在评审轮收进能力门控,workflow fixtures 完成移植(677cbe13)

  • worktree 端点 fixture 锁定自包含的 CLI runner,Windows 锁释放重试有界(0baa17a0、2c602a53)

  • 兼容门、Agent 注册表与 validate 契约完成轮转(9e0b0383;发布条目 d272b1f)

从 11.1.0 到 12.0.0 共 24 个提交:conventional 严格口径计 feat 3, fix 5, docs 6, test 2, chore 4;不带前缀的 4 个全是 merge 提交。

致谢

上游 OpenSpec CLI(@fission-ai/openspec)1.12 线的每一次协议演进,都决定着这个兼容窗口的范围。

链接