Repository navigation
[feat] 增加/tf web 命令启动一个网页展示每个任务状态 #137
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
原始需求
执行命令,启动一个node 服务,在默认浏览器中打开网页状态监控页,查看每个子agent的执行过程,工具调用,历史记录等等
范围对齐(2026-10-07)
本 issue 跟踪 0.3-C / S7 Web Console + evidence 浏览,以已批准的 0.3-C 计划为准。README 仍将 WebUI 标记为 planned / not shipped。
此前回复中的“工具调用、历史”按下文的可审计 evidence 范围收敛;不意味着承诺完整原始 transcript。此处只对齐 scope / acceptance,不代表 S7 已开始实现或已有发布日期。
前置与阶段归属
- S6(Thin MCP + CLI + 结构化状态)完成并验收后,才进入 S7。 S4 运行控制 → S5 审批协议 → S6 表面层 → S7 WebUI 的顺序不变。
- Console 消费 S6 暴露的结构化状态及控制面操作契约,复用既有状态、审批和 evidence 语义;不在 UI 内另建运行状态机或审批协议。
- 不把本 issue 的 Web 服务、页面或浏览能力塞入当前 S4/S5 工作;S6 缺少必要契约时先明确前置缺口,不以 WebUI 绕过。
S7 必做验收项
- 本地入口: 在 S6 前置满足后,
/tf web启动或连接本地 Node 服务,并在默认浏览器打开 operator console;默认仅监听 loopback。浏览器无法自动打开时输出可手工访问的本地 URL;启动/连接失败有明确错误。 - Runs: 可列出并打开 run,查看控制面提供的 run、phase / 子 agent 结构化执行状态及关联关系;状态可刷新,并明确区分运行中、等待审批、失败与
unknown / needs-operator,不将未知状态显示为成功。 - Approvals: 可查看审批请求、适用模式与当前状态,并通过既有控制面契约执行允许的批准/拒绝操作;保留 S5 的 park / expired / CAS 语义。过期、重复提交、双客户端冲突及重启后的状态,以控制面返回为准,明确显示拒绝/冲突原因并刷新,不绕过审批。
- Receipt: 可查看与 run 关联的已持久化 Receipt,并导航到其 evidence 引用;compaction 后仍能查询既有 Receipt。reconcile 穷尽而进入
unknown / needs-operator时,明确显示无最终 Receipt,不根据页面状态合成成功回执。 -
why-*: 可从相关 run / effect / evidence 进入 S6 已暴露的适用解释能力,展示结构化原因及证据引用(例如已有的why-effect、why-stale,以实际契约适用范围为准);不由 UI 或模型编造解释,不擅自扩展新的解释 API。 - Evidence / 历史浏览: 可按 run 及契约已有的 phase / effect 等关联定位可审计记录,展示已记录且允许公开的状态变化、审批决策、effect / 工具执行摘要、结果和 evidence 引用。只呈现实际存在的数据;未记录、已不可用或不允许展示时明确标注,不伪造完整历史。
- 一致性与失败路径: 用正常完成、等待/过期审批、CAS 冲突、失败、
unknown / needs-operator、compaction 后 Receipt 查询等场景验证:页面与同一 S6 结构化状态一致,所有可操作项均走既有控制面契约;服务不可用或读取失败时不把旧页面数据伪装成最新状态。
“工具调用 / 历史”的数据边界
这里指 控制面已有且允许展示的可审计 evidence,Receipt 是其关联的持久化回执,二者不等同于完整工具日志或会话录屏。
- 工具名称、执行摘要、结果、时间/顺序和关联 ID,仅在既有 evidence 契约实际提供且允许展示时呈现;不要求为所有 host 额外采集完整工具输入/输出。
- 不承诺自动采集或展示原始 transcript、内部推理、完整 prompt、子 agent 私有上下文或任意内部运行数据。既有
peek / trace能力不自动成为 Web Console 的开放授权。 - 沿用既有 confidentiality / integrity 标签及脱敏、访问和数据暴露边界;不因“本机页面”而暴露 secret 值、凭证或受限原始内容。不直接扫描内部存储或任意本机路径以补齐页面历史。
明确不在范围内
- 多用户、账号系统、角色/权限管理、远程托管或公网 console;本阶段仅为单机 operator console。这不取消既有审批与安全校验。
- DomainTransfer、跨项目联邦 ControlStore。
- 新的 FileBroker / OS sandbox 安全承诺;保持现有 resolve-only + Trusted Effects 声明写入边界。
- 提前实现 S7、改动 S4/S5 排期,或将 planned WebUI 表述为已经发布。
完成定义: S6 前置已验收,上述 S7 清单全部满足,并有可复现的验证结果;2026-10-07 的更新仅对齐范围;实施验收结果见下文。
实施与验收(2026-10-08)
已由 #142 的 Control Plane 实现及 #182 的 /tf web 公开入口完成,main 提交 8d85026cbfab4e0602fa2fdae327e3d7ba78ff71。
/tf web从公开安装的taskflow-mcp-core启动现有 Console;默认浏览器失败时显示手工 URL。私有一次性令牌继续通过 0600 handoff 文件登录,不进入 URL 或通知。重复调用复用当前服务,启动失败及会话退出只清理本次拥有的子进程。- S6/S7 状态、审批过期/CAS/重启、Receipt/逻辑 compaction、unknown 不伪造回执及 evidence 语义由完整源码测试覆盖。最新 PR head 共 2,958 项通过;13 项 CI 及安全扫描通过。
- 真实 Chrome 完成登录、审批编辑驱动实际脚本、持久 Receipt、结构化解释、项目隔离和实时撤权验证。十包干净安装另行验证真实
/tf web的公开入口、浏览器回退、认证边界、复用和退出清理。 - 展示范围仍为 Control Plane 已有且允许公开的状态和 evidence;旧 Pi run 的原始 transcript 不属于此视图。Unix UDS、单机 operator 和现有 same-UID 信任边界保持明确。
实现已合入,不代表 npm 1.0.0 或 GitHub Release 已发布;公开交付状态以 registry 和 Release 为准。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Activity
heggria commentedon Aug 14, 2026
Thanks for the suggestion — this is already on the roadmap.
/tf web(a status monitor page showing each sub-agent's execution progress, tool calls, and history) maps directly to the 0.3-C WebUI (Web Console) slice in the current 0.3 control-plane plan — that's where a live task-status console is specified. It is not in the 0.2 line (0.2.x is scoped to core/directory/runtime fixes and releases).So: acknowledged, will land with the 0.3.0 control-plane WebUI rather than a 0.2.x minor. No ETA yet — 0.3 is still in beta staging.
fix: Windows detached runs and static docs search
fix: Windows detached runs and static docs search (0.3.0-beta.1.1) (#140
docs: freeze 0.3.0-beta.2 and honest Control Plane slice claims
release: taskflow 0.3.0-beta.1.2