Skip to content

[feat] 增加/tf web 命令启动一个网页展示每个任务状态 #137

Closed

Description

@mdddj

原始需求

执行命令,启动一个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 为准。

Activity

  1. heggria commented on Aug 14, 2026

    @heggria
    Owner

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions