workspace-cli AI Native Web 操作需求方案

本文定义 workspace-cli AI Native Web 控制台的产品范围、页面结构、操作流程、交互门禁和验收标准。现有 AI Native 业务语义以 AI Native 研发平台需求方案 为准,CLI 端到端操作以 AI Native 开发流程指南 为准,实际使用方法见 AI Native Web 功能与使用指南,Web 服务和接口实现见 AI Native Web 技术实现方案。

1. 产品定位

AI Native Web 控制台是现有 CLI 研发流程的可视化、结构化操作入口,不是另一套研发流程。Web、CLI、主 Agent 和 Worker 必须共享同一个 workspace-cli home、SQLite 状态库、Git worktree、Service 状态机和审计记录。

现有 AI Native Core V1 的“暂不提供 Web UI”边界在本阶段被 Web 控制台扩展取代;其他核心边界继续保留:

1.1 产品目标

1.2 核心原则

  1. 同一事实来源:SQLite、Artifact 文件和 Git 状态是事实来源,页面缓存和聊天内容不是业务状态。
  2. 状态驱动:页面只展示当前状态允许的操作,不提供任意修改状态枚举的入口。
  3. 业务阶段与执行状态分离:workflow_status 表示研发阶段,queued/running/blocked/failed/waiting_user_input 表示执行情况。
  4. 人工门禁不可跳过:需求澄清、方案定稿、实施阻塞、测试命令、权限提升和发布确认必须使用类型化 Approval。
  5. 危险操作可解释:集成、重测、取消、重试和发布前展示影响范围、快照、前置检查和不可逆结果。
  6. 断线可恢复:长操作和主 Agent 消息由持久化任务承载,不依赖单次 HTTP 请求存活。
  7. 默认安全:非本机监听默认强制 TLS;只有显式 --allow-insecure-http 才可例外并持续告警。配对码单次有效,所有写操作校验会话、CSRF、Origin 和当前状态。

2. 用户、终端和范围

2.1 用户模型

Web 首版只有一个逻辑用户“本地操作者”。不同浏览器设备通过配对获得独立会话,审计记录必须保存会话 ID、设备标签、来源地址和操作时间,但不引入账号、组织或 RBAC。

用户承担以下职责:

2.2 终端适配

终端 支持范围
桌面浏览器 完整流程管理、配置、聊天、Artifact 对比和只读代码 diff
平板浏览器 状态查看、聊天、Approval、基础需求和 Release 操作
手机浏览器 仪表盘摘要、聊天、事件流和 Approval;不要求复杂配置、宽表格或代码 diff

支持当前两个主流稳定版本的 Chrome、Edge、Safari 和 Firefox。禁用 JavaScript 时只展示不可操作的兼容提示。

2.3 Web 首版范围

3. CLI 启动、访问和服务生命周期

3.1 命令面

workspace web start
workspace web status [--json]
workspace web stop
workspace web restart
workspace web pair
workspace web sessions list
workspace web sessions revoke <session-id>
workspace web sessions revoke --all

workspace web start 支持:

参数 默认值 需求
--host 127.0.0.1 监听地址;局域网使用明确的非 loopback 地址或 0.0.0.0
--port 8080 监听端口;占用时启动失败并给出换端口提示,不静默选择其他端口
--tls-cert / --tls-key 空 非 loopback 监听时必须成对提供
--allow-insecure-http false 显式接受可信局域网明文 HTTP 风险
--foreground false 前台运行并把日志写到当前终端
--no-open false 不自动打开本机默认浏览器
--no-daemon false 不自动确保 coordinator daemon 正在运行

3.2 启动行为

  1. 解析 home,优先级保持 --home > WORKSPACE_CLI_HOME > ~/.workspace-cli。
  2. 加载配置并完成数据库迁移。
  3. 检查同一 home 是否已有健康 Web 实例;已有实例时不重复启动,但仍撤销未使用旧码、签发一个新配对码并返回当前 URL。
  4. 未传 --no-daemon 时确保 coordinator daemon 已运行且支持 Web 所需协议能力;daemon 启动、安全升级或兼容性校验失败时 Web 不启动,并显示诊断路径。显式 --no-daemon 时允许降级启动:如果 daemon 未运行,新 Agent Job/operator action 只排队不执行;如果已有 daemon 但协议不兼容,则拒绝新建这些任务并提示升级,不让其永久排队或被错误执行。
  5. 校验监听地址、TLS 文件、端口和 runtime 目录权限。
  6. 后台启动 Web 实例,等待健康检查通过后再返回成功。
  7. 生成五分钟内有效的一次性配对码,在终端展示本机 URL、可用局域网 URL、配对码、日志路径和停止命令。
  8. 非 headless 环境默认打开本机 URL;--no-open 时只输出信息。

停止或重启 Web 服务不得停止 coordinator daemon、取消 Worker Job 或终止进行中的 operator action。后台任务完成后继续写入数据库;Web 恢复时必须能重新展示结果。

3.3 配对和会话

  1. 未认证浏览器只能访问配对页和健康检查。
  2. 用户输入 CLI 展示的一次性配对码,可选设置设备标签。
  3. 配对码最多尝试五次、五分钟过期、成功后立即失效;错误提示不得暴露码是否部分匹配。
  4. TLS 或 loopback 下浏览器获得二十四小时会话;显式非 loopback 明文 HTTP 下会话最多十五分钟且 Web 重启即撤销。每个设备独立撤销。
  5. workspace web pair 可以在服务运行期间签发新配对码。
  6. 用户可在“系统 > 已配对设备”或 CLI 查看并撤销会话;撤销后该设备的 SSE 和后续 API 调用立即失败。
  7. Web 服务重启后,未过期且未撤销的 TLS/loopback 会话继续有效;非 loopback insecure HTTP 会话按第 4 项全部撤销。

非 loopback 监听默认必须使用 HTTPS。只有显式传入 --allow-insecure-http 才允许 HTTP,启动输出和页面顶部必须持续显示“不安全连接”警告。

4. 信息架构与全局交互

4.1 主导航

一级入口 主要内容
工作台 流程数量、运行任务、阻塞、待审批、Worker/daemon 健康和最近事件
需求 AI Native/manual 需求列表、提交、分析、研发、Artifact、Bug 和活动
Release Release 范围、集成、测试快照、Bug、发布确认和发布结果
待办审批 全部 pending Approval 及类型化响应
执行中心 Job、Run、Worker、实时事件、重试、取消和受控原始输出
主 Agent 持久化聊天会话和上下文关联
配置 Repo、Agent、Worker pool、Review policy、daemon、Web 和配对设备

Artifact 主要在需求、Release、test run 和聊天上下文中展示;执行中心提供跨实体检索入口,但不要求独立顶级 Artifact 导航。

4.2 桌面布局

┌──────────────┬────────────────────────────────────────┬──────────────────┐
│ 主导航       │ 页面标题 / 状态 / 主操作              │ 主 Agent / 待办  │
│ 工作台       ├────────────────────────────────────────┤ 上下文摘要       │
│ 需求         │ 筛选、看板、详情 Tab、时间线或编辑器   │ 聊天消息         │
│ Release      │                                        │ 操作建议         │
│ 待办审批     │                                        │ Pending Approval │
│ 执行中心     │                                        │                  │
│ 配置         │                                        │                  │
└──────────────┴────────────────────────────────────────┴──────────────────┘

右侧主 Agent 面板可收起或进入独立全屏页面。打开 requirement、release、job、run、approval 或 artifact 时,用户可以把当前对象附加为聊天上下文;系统必须明确展示已附加对象,不能隐式扩大范围。

4.3 全局状态表达

需求阶段与默认操作入口:

workflow 状态 Web 展示 默认入口或下一步
pending_acceptance 待采纳 补充信息、分配 Agent/Policy、采纳并开始分析
pending_analysis 待分析 查看排队原因和 Worker capacity
analyzing 分析中 分析 Tab、当前 Job/Run、方案与 Review 版本
analysis_completed 分析完成 处理终稿 Approval
pending_development 待开发 准备 feature workspace
developing 研发中 研发周期、Step/Review/Fix、blocker 和 diff
development_completed 研发完成 加入或创建 Release
pending_testing 待测试 未集成时只能集成;集成成功且 workspace 校验通过后才能启动 test run
testing 测试中 Test run、测试报告、Bug 和修复循环
testing_completed 测试完成 检查 active passed snapshot
pending_release 待发布 处理 publish confirmation 并发布
releasing 发布中 查看 durable publish action 进度
released 发布完成 只读结果和审计

Release 的 stale 和 publish_in_progress 是必须单独突出显示的恢复状态:stale 只提供重新集成/测试路径;publish_in_progress 锁定范围并只提供诊断和幂等发布重试。

4.4 实时更新

4.5 通知和待办

全局待办只包含需要用户行动的事项:

普通进度事件进入活动流,不弹出阻断通知。成功提示包含对象链接和结果摘要;失败提示包含错误码、原因、当前状态和允许的恢复动作。

4.6 Web 与 CLI 能力映射

Web 操作必须调用与下列 CLI 相同的 Service 语义;“实时查看”在 Web 中由 REST snapshot + SSE 代替 CLI --follow:

Web 能力 CLI 等价能力
Repo 配置和同步 workspace repo add/list/sync/update/remove
提交 AI Native 需求 workspace req submit
查看/更新需求 workspace req list/show/update
分配 Agent 和 Policy workspace req assign-agents
准备研发 workspace workspace req prepare-workspace
需求执行流 workspace req watch --follow
Artifact 创建、查看和定稿 workspace req artifact create/list/show/finalize
完成、恢复和归档需求 workspace req finish/reopen/archive
Agent/Worker/Review policy workspace agent ...、workspace worker ...、workspace review-policy ...
Job/Run 观察与控制 workspace job list/show/watch/cancel/retry、workspace run tail
人工确认 workspace approval list/show/respond
Release 范围和集成 workspace release create/add-req/remove-req/integrate
Test run 和 Bug workspace release test start/status、workspace release bugs list、workspace req bugs list
Release 执行流与发布 workspace release status/watch/publish
主 Agent Web coordinator_chat Job;终端入口 workspace ai start 继续保留
daemon workspace agent daemon start/status/stop
MCP 控制面健康 workspace mcp health

5. 工作台

5.1 页面目标

用户进入 Web 后,应在一个页面回答:

5.2 组件

组件 展示信息 主操作
流程概览 各 workflow 状态数量和趋势 进入已筛选需求列表
我的待办 Approval、阻塞、stale、发布恢复 打开对应处理面板
正在执行 Job、Agent、Worker、开始时间、heartbeat、最近事件 查看 Job/Run、取消
Release 风险 测试失败、open Bug、快照失效、部分发布 打开 Release
系统健康 daemon、MCP、Provider、Worker capacity、Web/TLS 进入配置诊断
最近活动 requirement/release/status/run events 打开关联对象

工作台刷新不得默认执行远程 Git fetch;远端同步由用户显式触发,或按低频后台策略执行并标记上次检查时间。

6. 需求提交、采纳和澄清

6.1 需求列表

列表支持表格和按 workflow 阶段分组的看板视图。每项至少展示:

manual 对象不显示不存在的 AI Native 阶段;使用“传统流程”徽标和其底层 active/ready/cleanup-pending/completed 状态。

6.2 提交 AI Native 需求

“提交需求”表单字段:

字段 规则
标题 必填
Key 可选;填写时必须唯一
描述 必填 Markdown
验收标准 必填 Markdown
Repo 至少一个已启用 repo,可多选
上下文 可添加 URL;浏览器可把本地 Markdown/text 内容导入描述或验收标准,但不能提交宿主机文件路径
Priority 正整数,默认 100

提交前显示摘要,成功后进入 pending_acceptance,写入初始 status event,并跳转详情页。保存失败不得留下部分 requirement/repo 绑定。

6.3 采纳与 Agent 分配

pending_acceptance 页面提供“采纳并开始分析”:

信息不充分时,主 Agent 或用户创建/处理 requirement_clarification。响应表单支持 message,并可同时修订 description、acceptance criteria、repo 和 priority。成功后恢复原 Job 或创建下一步 Job,不能产生永久等待的半状态。

6.4 需求详情

Tab 内容
概览 状态轨迹、字段、repo、Agent/Policy、下一步和阻塞
分析 需求设计、技术方案、Analysis Review 和终稿
研发 开发周期、实施计划、Step/Review/Fix、实现报告和 diff
测试与 Bug 所属 Release、test run、测试报告、Bug 和修复
Artifact 全版本产物、类型、创建者、Job/Run、哈希和 final 状态
活动 requirement status event、run event、Approval 和用户操作

7. 分析与方案定稿

7.1 分析工作台

进入 analyzing 后展示当前 analysis job、Review 轮次、Policy 门槛和产物时间线:

需求设计 v1 ─┐
技术方案 v1 ─┼─ Review v1(未通过)─ 修订
需求设计 v2 ─┤
技术方案 v2 ─┼─ Review v2(通过)── 等待终稿

每轮 Review 独立展示风险等级、问题、证据、建议和通过结论。达到最大轮次但仍未通过时,页面保持当前业务阶段并显示人工处理选项,不把“达到次数”当作通过。

7.2 Artifact 阅读和比较

7.3 终稿选择

analysis_completed 必须展示 artifact_finalization Approval:

8. 研发工作台

8.1 进入开发

8.2 开发周期和步骤

研发工作台以“开发周期”为一级分组。每个周期展示:

同一周期一次只突出一个可执行步骤。Review 未通过时,下一步保持锁定并说明原因;修复和再次 Review 仍归属原步骤。

8.3 Implementation blocker

技术方案不可实施时展示独立 blocker Artifact 和 implementation_blocker Approval:

重新规划后旧周期完整保留为只读历史,默认折叠,不得把旧 Step/Review/Report 混入新周期完成度。

8.4 只读代码变更

Web 展示数据库登记 worktree 内的:

不支持任意路径输入、二进制内容、未登记 worktree 或通过 symlink 逃逸。diff 过大时按文件和总大小限制截断,并引导用户在本机 IDE 查看。

8.5 完成开发

“完成研发”前检查:

完成动作复用 req finish 语义。进入 cleanup-pending 时 requirement 保持 developing,页面展示已完成和待恢复步骤,并允许在问题处理后重试清理;不能显示为研发完成。

9. Release 创建与集成

9.1 Release 列表

展示 Key、标题、AI Native/manual 模式、workflow 状态、底层 status、成员需求、repo、active test run、open Bug、stale/publish-in-progress 诊断和更新时间。

9.2 创建 Release

AI Native Release 创建向导:

  1. 填写标题和可选 Key。
  2. 从 development_completed 需求中选择一个或多个成员。
  3. 展示合并顺序、涉及 repo、feature commit 和冲突风险。
  4. 可选择 Release 默认测试 Agent。
  5. 可填写默认测试命令。
  6. 确认范围并创建。

创建失败不得留下 orphan workspace 或部分 membership。manual requirement 可以创建 manual release,但页面必须明确其不进入 AI Native test/approval 状态机。

9.3 集成

“集成 Release”是长操作:

集成成功后展示 release branch、integrated base SHA、release SHA 和 requirement feature SHA。

10. 集成测试与 Bug 修复

10.1 Test run

Release 详情的“测试”Tab 展示每次 test run,当前 active run 置顶。每个 run 至少包含:

旧 run 只读,不因新 run 覆盖。页面必须清楚区分“历史通过”和“当前可用于发布的 active passed run”。

10.2 启动测试

测试前展示范围快照和命令解析结果,并允许为本次 test run 选择或覆盖测试 Agent。只有 Release 已成功 integrate、release workspace 与 Artifact 目录存在且为目录、worktree clean、快照范围有效时才能创建/启动 test run;Testing Agent claim 后需求与 Release 进入 testing。未提供命令时允许测试 Agent 推断;无法确定命令,或命令存在但无法执行任何有效单测时,都创建关联当前 test run 的 test_command_missing Approval,而不是显示测试完成。

用户可以:

测试前已有脏 release worktree 时不得启动 Provider;测试后出现 tracked/untracked 修改时不得采纳结果。Web 只展示并保留现场,不能自动 reset/clean;用户清理后显式重试。

10.3 Bug

Bug 详情包含 requirement、release、test run、repo、文件、严重级别、复现步骤、失败命令、创建/修复 Job 和状态。Web 不能把 Bug 关联到当前 test run 快照之外的 requirement 或 repo。

Bug 修复流程:

  1. 测试 Agent 创建 open Bug,requirement 回到 pending_development。
  2. daemon 创建关联该 Bug、requirement 和 test run 的 bugfix Coding Job。
  3. Provider 启动前由该 Job 的受控前置处理执行 req reopen、恢复 feature worktree,并在同一业务事务把受影响的 AI Native Release 标为 stale、写 release event;旧测试证明立即失效。Workspace 准备成功并 claim 后 requirement 进入 developing。
  4. Coding Agent 在对应 feature worktree 修复并生成 bugfix_report。
  5. 修复完成并通过 Review 后执行 req finish,关闭对应 Bug,使 requirement 恢复 ready 和 development_completed。
  6. 用户或 coordinator 重新集成,形成新的 test run 快照。
  7. 全量重新测试;旧测试通过结果不可复用。

测试结果为 failed 但没有合法 Bug 时,页面显示“测试输出无效”阻塞诊断,不允许进入 testing_completed。

进入 testing_completed 的硬门禁:

11. 发布确认和发布

11.1 发布前检查

进入 pending_release 前展示:

open Bug 必须为零;当前实际 test command、成员范围、feature SHA、release SHA 或目标分支任一变化都会使测试证明失效,禁止进入发布确认并要求重新集成/测试。命令来源标签用于展示和审计,相同实际命令仅来源不同不要求重测。

11.2 Publish confirmation

publish_confirmation 必须使用专用确认面板:

聊天中的“发布”请求只能打开或创建对应结构化确认,不能绕过面板直接发布。

11.3 发布执行

发布是 durable operator action:

12. Approval 中心

12.1 通用要求

Approval 列表展示类型、标题、关联对象、来源 Job/Run、创建者、创建时间、默认建议和等待时长。响应提交前再次读取当前状态;已由其他入口处理时返回最新结果,不重复响应。

12.2 类型化表单

Approval 类型 Web 表单 必须保持的规则
requirement_clarification message;可修改 description、acceptance criteria、repo、priority 回复后恢复原上下文
artifact_finalization 两类 final Artifact ID 两者必须同需求且类型匹配
implementation_blocker continue/replan/block + message replan 创建新开发周期
test_command_missing test command 或 block 不允许跳过测试进入完成
publish_confirmation confirm=true/false 只绑定当前 passed snapshot
provider_permission grant/deny;grant 时填写 scope、expires_at、sandbox、approval policy grant 只授权当前 Job 且不可突破控制面;deny 后按策略保持 blocked 或进入 failed

高风险选项展示不可逆影响并要求二次点击确认,但不得把自由文本输入当作结构化字段的替代。

13. 执行中心

13.1 Job

Job 列表支持按 status、role、type、requirement、release、Agent 和时间筛选。详情展示:

cancel 必须填写原因;retry 只在失败原因已经修复且 Service 允许时可用。waiting_user_input 引导用户处理 Approval,不把 retry 作为首选动作。

13.2 Run 和事件

Run 详情展示 provider、Agent、attempt、CWD、安全脱敏后的 command、时间、退出码、状态和结构化事件。事件类型包括进度、模型摘要、tool call、Artifact、测试输出、Approval、Bug、阻塞和终态。

默认不展示原始 stdout/stderr。管理员诊断入口只能读取受控尾部并继续脱敏;Web 首版不提供 unsafe-unredacted,未脱敏内容只允许用户在本机文件系统按 CLI 管理员流程查看。

14. 主 Agent Web 聊天

14.1 会话模型

14.2 上下文和操作

聊天可显式绑定 requirement、release、job、run、approval、artifact 或 test run。页面必须以可见标签展示当前消息的读取范围;未绑定对象时业务范围为空。如需跨实体概览,用户必须显式选择“整个 workspace(只读)”范围;不得因为聊天位于某页面、上一条消息曾经绑定或工具支持 list 就隐式扩大权限。

主 Agent 只能通过 coordinator capability 和受控工具读取。实体范围在消息创建时冻结,可包含显式对象及页面说明的必要关联对象;返回列表、查看详情、订阅事件、展开关联和生成 action card 都必须受同一范围约束。

主 Agent 可以:

主 Agent 不能:

15. 配置与系统管理

15.1 Repo

支持查看、新增、同步、更新和移除 repo,展示 URL、remote、base branch、bare path、最近同步和错误。正在被 active requirement/release 使用的 repo 不允许移除。

15.2 Agent

支持 Agent 的新增、查看、更新、启用、禁用、健康检查和删除。编辑字段包括 provider、role、model、system prompt/文件路径、command、sandbox、approval policy 和 provider schema 允许的 metadata。页面不得读取或展示 Provider 登录凭据、环境 secret 或未知 metadata 原文。

15.3 Worker pool

展示 role、绑定 Agent、parallelism、max workers、poll interval、lease、enabled、active jobs 和 live workers。有效并发明确显示为 min(parallelism, max_workers)。修改配置不得终止当前 running job;禁用后停止 claim 新任务。

15.4 Review policy

支持 analysis/development policy 的创建、查看、更新和删除,展示 max rounds、pass condition 和 max severity。被 requirement 引用时禁止删除。

15.5 系统

展示:

路径只作脱敏展示,禁止通过 Web 任意浏览 workspace home。

16. Manual 流程兼容

Web 统一展示 manual 和 AI Native 对象,但不强制转换:

对象 支持操作
Manual requirement create、list/show、update、add repo、dev/IDE 本机提示、finish、reopen、archive
Manual release create、scope add/remove、integrate、status、publish tested
AI Native requirement/release 本文定义的完整状态机、Agent、Review、test run、Approval 和聊天操作

从局域网浏览器触发 dev 或 ide 无法在远端设备可靠打开宿主应用,因此页面只展示可复制 CLI 命令;在 Web 服务宿主机的浏览器中可提供“尝试在本机打开”,失败时不改变业务状态。

Web 不提供 manual 到 AI Native 的隐式转换。未来如支持迁移,必须单独设计状态、Artifact 和审计规则。

17. 错误、冲突和恢复

场景 页面行为 恢复动作
数据被 CLI/其他设备修改 返回冲突并展示最新状态 刷新后重新确认
daemon 停止或 stale 全局健康告警,禁止新 Agent 任务 启动/重启 daemon
Provider unavailable 显示 health message,不调度对应 pool 修复 CLI/认证/配置后健康检查
Job failed 展示 Run、错误和 attempt 修复根因后 retry
Job waiting input 打开对应 Approval 类型化响应
脏 requirement worktree 阻塞 workspace/finish 用户本机处理后显式重试
脏 release worktree 不启动/不采纳测试 用户清理后显式重试
Release stale 禁止发布 重新 integrate/test/confirm
publish-in-progress 锁定范围和 reopen 修复失败 repo 后幂等 publish
Web 断线 后台动作继续,页面进入重连 通过事件游标恢复
Web 进程崩溃 action/session 保持持久化 restart 后恢复显示和 reconciliation

任何失败提示必须包含稳定错误码、用户可读消息、关联对象、当前状态和推荐下一步;不得直接把敏感路径、token、环境变量或完整 Provider stderr 暴露给浏览器。

18. 安全和隐私要求

19. 性能和可用性

20. 非目标

21. 验收标准

21.1 启动和访问

21.2 需求、分析和研发

21.3 测试、Bug 和发布

21.4 实时、聊天和恢复

21.5 安全与兼容

21.6 配置与 Approval