workspace-cli AINative 研发平台需求方案

面向用户的端到端配置、执行、实时观察、人工确认和故障恢复操作见 AI Native 开发流程指南。本文聚焦产品需求、状态约束和验收标准。

本文的 V1 边界描述 AI Native Core CLI 阶段,因此保留“V1 不做 Web UI”的历史约束;后续局域网单用户 Web 扩展见 AI Native Web 操作需求方案。

1. 产品定位

workspace-cli 在“本地需求开发空间管理工具”的基础上扩展为本地优先的 AINative 研发协作平台。平台仍以 Git repo、需求 workspace、feature worktree 和 release branch 为底层开发单元,并把原来由用户手动驱动的需求分析、开发、Review、测试、修 bug 和发布协作,升级为由主 Agent 协调、多个 Worker Agent 执行的状态驱动流程。

V1 保持本地单用户形态,不引入远程服务、多用户权限、Web UI 或外部队列。所有状态继续保存在 workspace-cli home 下的 SQLite 数据库中;所有代码改动仍落在需求 feature worktree 中;release 分支仍是可重建产物,发布仍复用现有 workspace release integrate 和 workspace release publish 的安全语义。

当前实施与验收范围包含 Codex CLI 和 Claude Code。两种 Provider 都必须通过命令构造、MCP、流式结果解析、主 Agent 会话和 Worker 调度测试;本机安装对应 CLI 时执行真实 smoke。

主 Agent 是用户的交互入口和协调者。用户通过主 Agent 聊天来操作 workspace-cli,例如提交需求、查看需求列表、查看需求状态、标记方案终稿、创建 release、观察测试结果。主 Agent 不直接修改业务代码,而是通过 workspace-cli MCP 工具和状态机分配任务、推进阶段、感知需求和 release 状态变化。

Worker 是实际执行分析、编码、测试的本地 Agent 进程池。每个 Worker 绑定一个 Codex 或 Claude Code Agent 配置。Worker 支持配置并行度和最大数量,用于控制同一类任务最多同时跑多少个 Agent 进程。

2. 调研结论

3. 核心概念

4. 需求状态

AINative 流程新增 workflow_status 字段,不替代现有 requirements.status、ready_at、completed_at 和 archived_at。现有字段继续服务 Git/release 底层流程;workflow_status 表示 Agent 协作阶段。

展示状态 存储值 进入条件 退出条件
待采纳 pending_acceptance 用户提交新需求 主 Agent 或用户采纳并分配 Agent
待分析 pending_analysis 已采纳且已设置分析 Agent 分析 job 被 Worker claim
分析中 analyzing 分析 Agent 开始执行 分析方案达到 review 门槛
分析完成 analysis_completed 产生可标记终稿的需求设计方案和技术实现方案 用户标记终稿并推进开发
待开发 pending_development 用户确认分析终稿 workspace 准备成功并创建开发 job
研发中 developing workspace 准备成功并已创建开发 job 技术方案完整实现并通过开发 Review
研发完成 development_completed Coding Agent 生成实现报告并底层需求 ready 需求加入 release 测试
待测试 pending_testing 需求加入 release 或 release 已集成待测 测试 Agent claim 测试 job
测试中 testing 测试 Agent 开始 release 测试 测试通过或创建 bug
测试完成 testing_completed release 测试通过且需求无未解决 bug release 进入 testing_completed 并记录 active_test_run_id
待发布 pending_release release 基于 active_test_run_id 创建发布确认并进入 pending_release publish job 或用户触发发布
发布中 releasing release publish 开始 发布全部成功
发布完成 released release publish 成功 终态

阻塞、失败、等待人工输入不作为业务状态。它们记录在 agent_jobs.status、requirement_bugs.status、release_test_runs.status、human_approval_requests.status、requirement_status_events 和 release_status_events 中,需求仍停留在当前业务阶段。

5. Agent 和 Worker 配置需求

5.1 Agent 配置

每个 Agent 配置必须支持:

analysis、coding、testing 和后台 coordinator job 启动时必须实际使用所绑定 Agent 的 model、system_prompt 和 system_prompt 文件内容,不能只在 agent show 中保存。内联 prompt、文件 prompt 和 job input 按固定顺序组合;prompt 文件不可读时 job 不得启动 provider,路径错误写入 job last_error 并按正常 retry/max-attempts 规则处理,claimed worker 必须恢复 idle。达到最大次数后 job 进入 failed,但这个已收敛的 job-level 配置错误不能终止 daemon。

5.2 Worker 配置

每个 Worker pool 必须支持:

daemon 必须真正并发运行同一 pool 中不超过 min(parallelism, max_workers) 个 provider job,不能只在一个 tick 内批量 claim 后串行执行。为了保护 workspace,带 requirement_id 的 feature-workspace job 按 requirement 串行;不带 requirement 但带 release_id 的 release-workspace job 按 release 串行。不同 requirement 的 bugfix 即使属于同一 release,也允许并发。

parallelism 和 max_workers 是两个独立配置,允许 parallelism > max_workers;有效并发始终取两者最小值。daemon 必须按各 pool 的 poll_interval 持续调度,已有 provider run 不得阻塞其他 pool 的新 job。运行中的 heartbeat 必须同时刷新 worker heartbeat 和 job lease。

需求 priority 为正整数且数值越小越优先,默认 100。需求关联 job 的实际排序先比较需求 priority,再保留阶段内部的 Review、修复和步骤顺序;澄清修改 priority 时只重排 queued job。

daemon 创建的 worker key 必须在 retained lost/stopped 历史行存在时仍保持唯一,并包含 pool identity;replacement 不能使用 live worker count 直接复用旧 key。丢失 worker 后下一 tick 必须能创建 distinct replacement 并恢复容量。

daemon 默认由 workspace agent daemon start 作为后台单实例启动,status 和 stop 必须读取真实运行状态。workspace ai start 默认确保 daemon 已运行。daemon 使用持久化 heartbeat/lease 支持崩溃接管,并且退出时只能停止属于本实例的 Worker。

5.3 健康检查

6. 实时执行可见性和人工确认

6.1 实时执行可见性

用户必须能在 Agent 工作时实时看到执行过程,而不是等 job 结束后只看报告。

必须支持:

6.2 人工确认和需求澄清

以下场景必须创建人工确认请求,并让用户实时可见:

人工确认请求必须包含确认类型、关联 requirement/release/job、问题说明、可选操作、默认建议、创建者、创建时间、状态和响应字段;pending 时响应字段为空。等待确认期间,相关 job 标记 blocked 或 waiting_user_input,业务 workflow status 保持当前阶段;用户响应后,主 Agent 或 daemon 根据响应继续创建下一步 job 或保持阻塞。

人工确认的响应必须是结构化数据,而不是只有自由文本:

7. 需求分析阶段

7.1 输入

7.2 过程

  1. 用户通过主 Agent 或 CLI 提交需求,需求进入 pending_acceptance。
  2. 主 Agent 采纳需求,补齐 repo 范围、分析 Agent、Coding Agent、测试 Agent 和 Review policy。
  3. 需求进入 pending_analysis,coordinator daemon 的 watch loop 创建 analysis job。
  4. 分析 Agent 生成需求设计方案 artifact 和技术实现方案 artifact。
  5. Review job 对方案进行审查,输出独立 review artifact,包含风险等级、问题列表、是否通过和修改建议。
  6. 如果未达到通过门槛,分析 Agent 根据 Review 结果生成下一版方案。
  7. 循环直到达到 review policy 或超出最大次数。
  8. 达到门槛后,需求进入 analysis_completed,用户可以查看、编辑并标记终稿。

7.3 Review policy

分析阶段至少支持两种通过门槛:

每次 Review 必须单独生成 artifact,不覆盖历史版本。终稿只能从已生成的需求设计方案和技术实现方案中选择,也允许用户编辑后另存为用户修订版终稿。

7.4 输出

8. 开发阶段

8.1 输入

8.2 过程

  1. 用户或主 Agent 将 analysis_completed 推进为 pending_development。
  2. workspace-cli 调用开发 workspace 准备流程,为已存在的 AINative 需求创建或恢复 feature worktree;该流程不得创建第二条 requirement 记录。
  3. workspace 准备成功后,需求进入 developing,随后 Coding Agent claim 开发 job。
  4. Coding Agent 基于技术实现方案生成开发步骤计划 artifact。
  5. daemon 将步骤拆成 step job;每个 step job 在需求 feature worktree 中执行。
  6. 每个步骤完成后,必须创建独立 step review job。
  7. Review 通过后才能进入下一步;未通过时创建修复 job,仍在同一步内循环。
  8. 所有步骤完成后,Coding Agent 生成技术实现报告和总 Review 报告。
  9. Coding Agent 调用底层 req finish 语义,提交、推送 feature 分支并清理 worktree,使需求达到 ready。
  10. 需求进入 development_completed。

8.3 约束

8.4 输出

9. 集成测试和修 bug 阶段

9.1 Release 创建

用户选择多个 development_completed 需求创建 release。release 仍复用现有 workspace release create、integrate、publish 底层流程,但新增测试 Agent 和 test run 记录。

9.2 测试循环

  1. release integrate 成功后,相关需求进入 pending_testing。
  2. 测试 Agent claim release test job,需求进入 testing。
  3. 测试 Agent 根据需求设计方案、技术实现方案、实现报告、release worktree 和 test command 配置执行整体 Review 和单测;创建 test run 时必须按 requirement + repo 记录本次 active release scope、feature commit 和 release commit 快照。
  4. test command 的来源按优先级解析:workspace release test start --test-command,来源记为 explicit;release 创建时记录的默认测试命令,来源记为 release_default;全局 agent_default_test_command,来源记为 agent_default。如果都为空,测试 Agent 可以基于仓库内容推断命令,来源记为 inferred,但必须在测试报告中记录实际执行命令;无法确定或执行任何单测时创建关联当前 release_test_run 的 test_command_missing approval,用户补充命令后来源记为 user_supplied 并恢复该 test run 重试,用户明确选择 block 后 test run 才标记 blocked,不能进入测试完成。
  5. 如果发现问题,测试 Agent 创建 bug,关联具体需求、repo、文件、复现步骤、失败命令和风险等级。Agent 输出的显式 requirement ID/key 和 repo ID/name 必须命中当前 release_test_run_requirements immutable snapshot;未知或越界对象必须拒绝,不能退化到同 release 的 active membership。省略 repo 时只能从该 requirement 的唯一 snapshot repo 推断,多 repo scope 必须显式指定。status=failed 但没有 bug 的结果不得完成 job,必须阻塞 test run/job 并产生用户可见诊断。
  6. bug_create 创建 open bug、把 requirement 退回 pending_development 和写 requirement_status_events 必须在同一事务中完成;event 保留 testing/coordinator actor、reason 和 created-by job。任一写入失败时 bug、workflow 和 event 全部回滚。
  7. 主 Agent 或 coordinator watch loop 感知 bug 后,为对应需求创建 bugfix job。
  8. Coding Agent 使用 req reopen 恢复 feature worktree,在 feature 分支修复 bug。
  9. 修复完成后再次 req finish,release 标记 stale,重新 integrate。
  10. 测试 Agent 重新执行 release test job。
  11. 所有 bug 关闭且测试通过后,相关需求进入 testing_completed;release 只能由当前 workflow_status=testing 且该 release 最新的 passed release_test_run 进入 testing_completed,并记录 active_test_run_id。同一 completed test run 重试必须幂等且不新增 event,晚到旧 job 不得回退 pending-release/releasing/released/stale。随后发布确认流程基于 active_test_run_id 创建 publish_confirmation,再把 release 和 active requirements 推进到 pending_release;后续 release scope、需求 feature commit 或外部目标分支变化会使该 test run 失效并要求重新 integrate/test。

测试 Agent 不得修改任何 release repo worktree。daemon 在 provider 启动前和结束后分别执行 Git dirty 检查;测试前已 dirty 时不得启动 provider,测试过程中产生 tracked 或 untracked 变更时不得采纳测试结果。两种情况都把 release test job 和 test run 标为 blocked,保留 release/requirement 业务阶段,写入用户可见的 release 诊断事件;测试过程中产生的变更还要写独立 run event。用户清理 worktree 后必须显式 retry,不能自动丢弃或回滚文件。

9.3 发布

发布沿用现有 release publish 语义:

10. 主 Agent 协调需求

主 Agent 必须具备以下能力:

11. MCP 控制面需求

workspace-cli 必须提供 workspace mcp serve,至少包含以下工具族:

MCP 工具必须基于 capability token 做权限校验。token 至少包含 role、requirement_id、release_id、release_test_run_id、job_id、allowed_tools 和 expires_at。

交互式主 Agent 使用 0600 的 session capability file,token 采用短有效期并在会话运行时轮换。MCP 每次调用必须验证 session 仍为 running;会话结束后立即撤销并删除 token 文件。

testing token 读取 requirement artifact,或 create/list/update release test bug、创建 bugfix job 时,目标 requirement/bug 必须属于 token 的 scoped release active membership;token 带 release_test_run_id 时必须优先以该 test run 的 immutable requirement snapshot 和 bug test_run_id 为准,不能被同时携带的 release_id 放宽。bug_create 省略 test_run_id 时必须默认绑定 token 的 release_test_run_id,显式指定其他 run 时必须拒绝,即使两个 run 属于同一个 release。bug_create 默认使用 token 的 job_id 作为 created-by audit;release-test job 的 release 和 input 中的 release_test_run_id 必须同时匹配。

release_test_run_id 的优先级适用于全部 MCP surface,而不只 bug:requirement list/show/watch、job list/show/watch、run tail、approval list/show、release-test artifact 和 watch 聚合都不能通过同一个 release_id 读取其他 test run。run-scoped worker 创建子 job 时必须自动绑定当前 test run,显式冲突必须拒绝;该 worker 也不能启动新 test run 或重新 integrate release。主 Agent 的 coordinator capability 保留完整跨周期视图。

run-scoped worker 创建子 job 时,省略 input/input_json 等价于空对象,仍必须成功默认绑定当前 test run。requirement status event 没有独立 test-run 字段时,只能向 run-scoped token 返回 job_id 可证明属于当前 run 的事件;无 job scope 或其他 run 的事件必须隐藏,coordinator 仍保留完整审计视图。

12. 非目标

13. 验收标准