workspace-cli AI Native Web 功能与使用指南

本文面向实际使用 workspace-cli Web 控制台的研发人员,详细说明如何启动和访问 Web、完成首次配置,以及如何在浏览器中管理需求、研发、测试和发布流程。

Web 控制台不是一套独立于 CLI 的新流程。它和 CLI、daemon、Worker、主 Agent 共用同一个 workspace-cli home、SQLite 数据库、Git worktree、Artifact 和状态机。因此:

相关文档:

1. Web 版本能做什么

Web 控制台覆盖 AI Native 研发流程的主要日常操作:

功能区 主要能力
工作台 查看需求和 Release 数量、流程阶段、待办、运行 Job、阻塞、Release 风险、系统健康和最近活动
需求 提交 AI Native 需求,查看模式和状态,分配 Agent/Review policy,管理 Artifact、Bug、代码 diff 和流程操作
Release 创建 Release、维护需求范围、集成、启动测试、查看测试快照和 Bug、确认发布
执行中心 查看 Job、Run、结构化事件和脱敏输出,取消或重试失败任务
Approval 处理需求澄清、Artifact 定稿、研发阻塞、缺失测试命令、发布确认和 Provider 权限六类人工门禁
操作队列 查看 Repo、Git、集成、测试、发布等持久化长操作的状态、checkpoint、事件、取消和重试
主 Agent 创建持久化会话,选择上下文,发送任务,查看回复和结构化操作卡,取消或重试消息任务
配置与健康 管理 Repo、Agent、Worker pool、Review policy、daemon 和浏览器会话,查看 Provider、MCP、Worker、TLS 健康状态

Web 同时展示 AI Native 和传统 manual 对象。列表和详情会标明“AI Native”或“传统流程”,不会把 manual 对象静默转换成 AI Native 状态机。

2. 使用前准备

2.1 初始化 workspace-cli home

首次使用先初始化:

workspace init

默认 home 是 ~/.workspace-cli。如果使用自定义 home,后续所有 CLI 命令必须保持一致:

workspace --home /data/team-a web start
workspace --home /data/team-a web status

也可以使用环境变量:

export WORKSPACE_CLI_HOME=/data/team-a
workspace web start

解析优先级为:全局 --home > WORKSPACE_CLI_HOME > ~/.workspace-cli。

2.2 Provider 和 Git 准备

如果要运行 AI Native Agent,请先保证所选 Provider CLI 已安装并完成认证,例如 Codex 或 Claude Code。Repo 的 Git remote 也必须能在启动 Web 的宿主机上正常访问。

可以在正式提交需求前用 CLI 做基础检查:

workspace agent list
workspace agent health <agent-name>
workspace mcp health
workspace agent daemon status

Provider 不可用时,Web 可以正常查看数据,但对应 Worker pool 不会可靠执行 Job。

3. 启动、访问和停止 Web

3.1 本机启动

推荐的日常启动方式:

workspace web start

默认行为:

输出示例:

url:            http://127.0.0.1:8080
pairing-code:   ABCD-EFGH-IJKL-MNOP
expires-in:     5m
log:            ~/.workspace-cli/runtime/web/web.log

不希望自动打开浏览器时使用:

workspace web start --no-open

修改端口:

workspace web start --port 9080

前台运行并直接查看日志:

workspace web start --foreground --no-open

Ctrl+C 会停止前台 Web 服务,但不会把已经进入 daemon/Worker 的业务任务伪装成失败。

3.2 启动参数

参数 默认值 说明
--host 配置值,默认 127.0.0.1 监听地址
--port 配置值,默认 8080 监听端口
--tls-cert 空 TLS 证书路径
--tls-key 空 TLS 私钥路径,权限不能对 group/other 开放
--allow-insecure-http false 明确允许非 loopback 明文 HTTP,仅限可信局域网临时使用
--foreground false 前台运行
--no-open false 不自动打开浏览器
--no-daemon false 不检查/启动 daemon,主要用于诊断;日常使用不建议开启

配置文件中可以设置:

web_host: "127.0.0.1"
web_port: 8080
web_tls_cert: ""
web_tls_key: ""
web_operator_action_parallelism: 2

显式命令行参数会覆盖配置值。

3.3 局域网访问和 TLS

非 loopback 地址默认必须配置 TLS:

workspace web start \
  --host 192.168.1.20 \
  --tls-cert /secure/path/web.crt \
  --tls-key /secure/path/web.key

证书必须:

在完全可信的临时局域网中可以显式启用明文 HTTP:

workspace web start --host 0.0.0.0 --allow-insecure-http

这是降级模式。终端和页面会持续显示警告,浏览器会话最长十五分钟,网络中的其他设备可能观察到明文流量。不要在公共 Wi-Fi、办公访客网络或互联网入口使用。

3.4 查看状态、重启和停止

workspace web status
workspace web status --json
workspace web restart
workspace web stop

正常停止最多等待十秒:

workspace web stop --timeout 20s

只有在正常停止超时、并且确认需要终止 Web 进程时才使用:

workspace web stop --timeout 10s --force

--force 仍会校验 PID、可执行文件和进程启动身份,避免误杀其他进程。

4. 浏览器配对和会话管理

4.1 首次配对

  1. 运行 workspace web start。
  2. 打开终端输出的 URL。
  3. 在配对页输入 pairing-code。
  4. 填写可识别的设备名称,例如“开发机 Chrome”或“测试手机”。
  5. 点击“进入控制台”。

配对码五分钟过期、只能成功使用一次。过期或已经使用时重新签发:

workspace web pair

每次 web pair 会撤销未使用的旧配对码并生成一个新码,不会中断已经登录的正常浏览器会话。

4.2 会话有效期

4.3 查看和撤销设备

Web:进入“配置”中的“已配对设备”,查看设备名称、最后访问时间和状态,点击“撤销”。

CLI:

workspace web sessions list
workspace web sessions revoke <session-id>
workspace web sessions revoke --all

撤销后,该浏览器的后续 API 请求和实时事件连接会立即失效,需要重新配对。

5. 首次配置推荐顺序

进入“配置”页面后,建议按以下顺序配置。

5.1 Repo

填写:

可执行操作:

Repo 的 clone、sync、update 和 remove 可能包含 Git 外部副作用,因此页面会把它们放入“操作队列”。提交后请到操作详情查看进度,不要因为页面没有立即变化而重复点击。

5.2 Agent

新增 Agent 时至少选择:

页面支持查看健康状态、更新模型、启用/停用、执行健康检查和删除。健康检查属于持久化操作,可在“操作队列”查看结果。

角色建议:

角色 建议权限 用途
coordinator 受控读和结构化操作建议 主 Agent 聊天与全局协调
analysis read-only 需求设计、技术方案和 Review
coding workspace-write 修改需求 feature worktree
testing read-only Release 快照测试和 Bug 登记

5.3 Worker Pool

Worker pool 把一个执行角色绑定到一个 Agent。配置项包括:

页面明确显示有效并发:

effective concurrency = min(parallelism, max_workers)

停用 pool 后不会再 claim 新 Job,但不会强制终止当前正在运行的 Job。

5.4 Review Policy

Review policy 用于约束分析或研发阶段的 Review 循环:

页面支持新增、更新和删除。被需求引用的 policy 删除会被服务端拒绝。

5.5 Daemon 和系统健康

页面顶部可启动/校验或停止 coordinator daemon。“系统健康”区域展示:

开始正式流程前,应至少确认 daemon、数据库和所需 Agent 为可用状态。

6. 工作台的使用方法

登录后的“工作台”用于快速回答“现在最需要处理什么”。

6.1 指标卡

展示:

6.2 流程概览

按 requirement/release workflow 状态统计,例如:

6.3 我的待办

汇总待处理 Approval,以及 blocked、waiting_user_input Job。点击条目进入相应 Approval 或 Job 页面。

6.4 正在执行

显示正在 leased/running 的 Job、角色和类型。点击可以进入 Job 详情,进一步查看 Run、事件和输出。

6.5 Release 风险和最近活动

Release 风险突出显示 stale 和 publish-in-progress 对象。最近活动展示 Requirement/Release 状态变化,方便回到对应详情页。

工作台刷新只读取本地事实,不会因为页面刷新高频执行远程 Git fetch;需要远端状态时使用 Repo“同步”或 Release“刷新远端状态”。

7. 需求流程操作

7.1 提交 AI Native 需求

进入“需求”后点击“提交需求”,填写:

字段 说明
标题 必填,用户可读名称
需求编号 可选;填写时必须唯一,例如 REQ-001
Repo 逗号分隔的已登记 Repo 名称,至少一个
优先级 正整数,数值越小越优先,默认 100
需求描述 必填 Markdown,说明背景、目标和范围
验收标准 必填 Markdown,说明可验证的完成条件

提交成功后:

  1. Requirement、Repo 绑定、初始 status event、revision 和审计记录原子写入。
  2. 状态进入 pending_acceptance。
  3. 页面跳转到需求详情。

如果保存失败,不会留下半个 Requirement 或部分 Repo 绑定。

7.2 查看列表和模式

需求列表展示编号、标题、AI Native/传统模式、workflow 状态、priority 和更新时间。

传统 manual Requirement 只显示其实际存在的传统状态,不会显示虚构的 AI Native 分析/Review 阶段。

7.3 采纳需求并分配 Agent

在需求详情的“Agent 与 Review Policy”区域选择:

勾选“采纳并开始分析”会保存分配并推进流程;取消勾选则只保存分配。

如果 Agent、Policy、Repo 或健康条件不完整,服务端会拒绝推进,页面保留当前业务状态。

7.4 查看需求详情

详情页集中展示:

页面只会启用当前状态允许的操作。禁用按钮的提示会说明门禁条件。

7.5 编辑和并发冲突

需求标题保存使用 revision/ETag 乐观并发控制。如果 CLI 或其他浏览器已经修改了同一个需求,旧页面提交会得到 revision conflict,而不是覆盖新数据。

发生冲突时:

  1. 页面保留当前输入草稿。
  2. 重新查看最新详情。
  3. 对比并重新提交需要保留的修改。

7.6 Artifact 操作

在需求详情中可以:

创建修订不会覆盖历史版本。浏览器不能提交宿主机绝对路径,Artifact 存储路径由服务端安全派生。

7.7 研发操作

“流程操作”只显示服务端返回的当前可执行动作,常见动作包括:

准备 workspace、finish 和 reopen 可能涉及 Git worktree、commit、push 或清理,会进入“操作队列”。操作详情中可以查看 durable checkpoint 和事件。

8. Release、测试、Bug 和发布

8.1 创建 Release

进入“Release”点击“创建 Release”,填写:

创建 Release 涉及 workspace 和成员关系,因此请求会立即返回持久化 action,并跳转“操作队列”。等待 action 成功后再进入 Release 详情。

8.2 管理 Release 范围

Release 详情的“需求范围”区域可以:

范围变更使用 Release revision 控制。其他终端或浏览器修改范围后,旧页面不能用陈旧 revision 覆盖新范围。

8.3 集成 Release

点击“集成需求”并确认后,操作进入持久化队列。集成过程:

浏览器关闭不会取消集成。重新打开“操作队列”可以继续查看同一个 operation key。

8.4 启动测试

Release 进入可测试状态后点击“开始测试”。确认面板允许:

每次测试都创建独立 test run 和不可变快照,记录 requirement、repo、feature commit、release commit、实际命令和来源。

如果无法确定有效测试命令,不会静默跳过测试,而是创建 test_command_missing Approval。用户提供命令后恢复同一个测试上下文。

8.5 Test Run 详情

点击 Test run 可以查看:

历史 passed 不等于当前可发布。只有最新、active、passed 且快照仍新鲜的 run 才能作为发布证明。

8.6 Bug 修复循环

Bug 详情展示标题、状态和严重度,并支持重试失败的修复 Job。

测试发现 Bug 后,典型流程为:

  1. Bug 关联当前 Release、test run、Requirement 和 Repo。
  2. Requirement 回到待研发状态。
  3. Coding Agent 在对应 feature worktree 修复,而不是修改 release worktree。
  4. 原 Release 被标记 stale,旧测试证明失效。
  5. 修复完成后重新集成。
  6. 创建新的完整测试快照并重新测试。

8.7 发布确认

发布按钮只在状态机允许时启用。点击后必须:

  1. 查看当前 active passed test run。
  2. 核对测试命令、冻结快照和 open Bug。
  3. 勾选“我已核对测试结果、Bug 状态与发布快照”。
  4. 可填写发布说明。
  5. 确认执行。

请求会显式发送 tested=true,但服务端仍会重新校验:

部分 Repo 已发布、其余 Repo 失败时,Release 保持 publish_in_progress。修复外部问题后重试同一语义,已完成 Repo 不会被重复漂移。

9. Approval 使用说明

进入“Approval”可以查看所有人工门禁。详情页会根据类型渲染严格表单,而不是通用 JSON 输入框。

9.1 六类 Approval

类型 需要填写/确认 处理结果
requirement_clarification 描述、验收标准、Repo、priority 和说明 原子更新需求并恢复原 Job
artifact_finalization 最终需求设计 Artifact ID、最终技术设计 Artifact ID 原子登记两类终稿
implementation_blocker continue/replan/block 和说明 继续、创建新研发周期或保持阻塞
test_command_missing 可执行测试命令,或 block 恢复同一个 test run 或保持阻塞
publish_confirmation 核对测试快照并确认 允许进入发布流程
provider_permission scope、sandbox、approval policy 和到期时间 创建有范围、有时效的权限 grant,或拒绝

9.2 处理原则

Approval 响应、原 Job 恢复、需求字段变更、状态事件和审计信息在同一业务事务提交,任一写入失败都会整体回滚。

10. 执行中心和实时事件

10.1 Job 列表

Job 列表展示:

取消必须填写原因。服务端会持久化取消意图,避免 Web/daemon 分进程或重启时丢失。

10.2 Job 和 Run 详情

Job 详情展示所有 attempts 对应的 Run。Run 详情展示:

原始输出读取有路径边界、大小上限、速率限制和脱敏处理,不会把 capability token、环境 secret 或任意宿主文件返回浏览器。

10.3 实时更新

Requirement、Release、Job、Run 和 Chat 页面使用 SSE 接收失效通知,并重新获取数据库快照。网络断开后浏览器会重连;如果游标已经失效,服务端发送 reset,页面重新加载当前事实。

SSE 只是低延迟通知,SQLite 和业务 Service 才是最终事实来源。

11. 操作队列和恢复

以下类型通常进入持久化操作队列:

Action 详情展示:

11.1 什么时候取消

queued 或 running action 可以请求取消。取消只会在安全 step boundary 或支持 context cancellation 的外部命令处生效。已经完成的 Git 副作用不会被伪装成“从未执行”。

11.2 什么时候重试

failed、interrupted 或 manual action 在外部问题处理后可以重试,例如:

重试会读取 checkpoint,从可恢复位置继续,并遵守资源锁和 revision fence。

12. 主 Agent Chat

12.1 创建和选择会话

进入“主 Agent”后点击“新建会话”。每个会话和消息都持久化,不依赖浏览器页面一直打开。

12.2 选择上下文

发送消息前选择可见范围:

显式上下文可以减少误关联和越界读取。消息创建后,其授权范围不会因为后续对话文本而自动扩大。

12.3 消息生命周期

每条用户消息会创建持久化 coordinator Job/Run/Event。页面显示 queued、running、succeeded、failed 或 cancelled 状态。

可以:

主 Agent 只能提出受控操作卡。需求创建、Agent 分配、重试、集成、测试、发布和 Approval 仍必须进入相应结构化页面,不能通过聊天文本绕过确认门禁。

13. CLI 与 Web 对照

Web 操作 对应 CLI 能力
提交 AI Native 需求 workspace req submit
分配 Agent/Policy workspace req assign-agents
准备需求 workspace workspace req prepare-workspace
查看需求活动 workspace req watch --follow
创建/查看 Artifact workspace req artifact ...
完成/重新打开需求 workspace req finish / workspace req reopen
创建/集成 Release workspace release create / workspace release integrate
启动/查看测试 workspace release test start/status
查看 Bug workspace req bugs list / workspace release bugs list
处理 Approval workspace approval list/respond
查看 Job/Run workspace job watch / workspace run tail
发布 Release workspace release publish --tested
Repo 配置和同步 workspace repo add/update/sync/remove
Agent/Worker/Policy 配置 workspace agent ... / workspace worker ... / workspace review-policy ...

两种入口可以混用,但并发写入同一对象时必须尊重 revision conflict。不要在看到冲突后用重复点击覆盖其他终端刚提交的结果。

14. 日常推荐工作流

14.1 开始工作

workspace web start
workspace web status

进入页面后:

  1. 查看工作台待办和 Release 风险。
  2. 查看配置页 daemon、Provider、MCP 和 Worker 健康。
  3. 先处理 waiting approval、blocked job 和 publish-in-progress。
  4. 再提交新需求或启动新的 Release 操作。

14.2 需求到发布

提交需求
  -> 分配 Agent 和 Review Policy
  -> 采纳并开始分析
  -> 查看/修订/比较 Artifact
  -> 处理需求澄清和方案定稿 Approval
  -> 准备研发 workspace
  -> 查看开发 Job、Run、Review 和 diff
  -> 完成研发
  -> 创建 Release 并维护范围
  -> 集成
  -> 启动测试
  -> 修复 Bug、重新集成、重新测试
  -> 核对 active passed snapshot
  -> 发布确认
  -> 查看 publish action 完成

14.3 结束工作

Web 可以长期后台运行。如果需要停止 UI:

workspace web stop

停止 Web 不等于停止 coordinator daemon。如需停止 daemon,请在配置页操作,或使用:

workspace agent daemon stop

停止前先检查“操作队列”和“执行中心”,确认自己理解仍在后台运行的任务。

15. 常见问题和排障

现象 常见原因 处理方法
Web instance is not running Web 未启动、heartbeat 过期或 home 不一致 检查 workspace web status 和 --home,再执行 workspace web restart
端口被占用 其他进程监听同一端口 使用 workspace web start --port <新端口>
非本机监听被拒绝 未配置 TLS 配置 --tls-cert/--tls-key;只有可信临时网络才使用 --allow-insecure-http
配对码无效 已使用、过期或被新码替换 执行 workspace web pair 获取新码
页面突然要求重新配对 会话过期、被撤销,或不安全 HTTP 的十五分钟会话结束 重新执行 workspace web pair
页面数据和 CLI 不同 CLI/Web 指向不同 home,或页面尚未重连 对比 --home/WORKSPACE_CLI_HOME,刷新页面并查看 SSE/服务状态
保存提示 revision conflict CLI 或其他浏览器已修改同一对象 保留草稿,读取最新对象后重新应用修改
Action 长时间 queued daemon 不兼容、停止,或资源被其他 action 锁定 查看配置健康、action 事件和 workspace agent daemon status
Job 不执行 Agent unhealthy、pool disabled、无可用 Worker、role 不匹配 检查 Agent health、pool role/Agent 和有效并发
Release 不能测试 尚未成功集成、workspace 脏、快照无效或 Agent 不可用 查看 Release Repo 诊断和 action 事件,修复后重试
测试卡在 waiting_user_input 无有效测试命令 打开 test_command_missing Approval,提供命令或明确 block
发布按钮禁用 未完成当前测试、存在 open Bug 或状态不允许 查看 active test run、Bug 和 Release workflow
发布处于 publish-in-progress 部分 Repo 已成功、部分 Repo 失败 修复失败 Repo 的认证/远端状态,再重试发布 action
Run 输出不可用 路径边界校验、速率限制或输出尚未生成 查看结构化事件;确认 runtime 没有被外部移动或替换

进一步诊断命令:

workspace web status --json
workspace agent daemon status
workspace agent list
workspace mcp health
workspace approval list --status pending
workspace job list
workspace release status <release-key>

后台 Web 日志默认位于:

<workspace-home>/runtime/web/web.log

16. 安全注意事项

按照本文流程使用时,Web 可以作为日常研发控制台;CLI 则继续适合脚本、自动化、紧急诊断和精确的低层操作。两者共享同一事实来源,可以根据场景安全切换。