Skip to content

feat: 按设计契约实现 Threadmill 运行时、Agent 接口与实时协调控制台 - #11

Draft
KDZZZZZZ wants to merge 74 commits into
devfrom
oops-dev
Draft

KDZZZZZZ wants to merge 74 commits into
devfrom
oops-dev

Conversation

@KDZZZZZZ

@KDZZZZZZ KDZZZZZZ commented Aug 10, 2026 •

Copy link
Copy Markdown
Owner

用户指令概要

  • 按现有设计文档实现 Threadmill 全仓能力,核心对象和外部接口保持统一,不为 GUI、fake-host 或 Adapter 建立第二套领域模型。
  • Coordination Graph 只允许 Task Manager Agent 写入;GraphRuntime 为内部核心对象;Phase 控制统一为可审计的 start / stop / resume,并保留 stop 的 checkpoint 恢复语义。
  • GUI 必须使用真实后端能力:实时调整 Agent 并发、通过 Manager 对话调整协调图、点击节点查看订阅子图并集、Context Slice 和 TaskMemoryBuffer;不得用 mock 或乐观状态冒充后端完成。
  • 项目级安装并使用指定 UI skills;以真实本地 PostgreSQL、MinIO、AgentTeams、QwenPaw 和 DeepSeek 完成端到端验收,并提交到 dev 的 PR。

改动内容

  • 实现 kernel、认证/幂等、Coordination Graph、内部 GraphRuntime、Context Graph、Workspace、Evidence、Merge Queue、Invocation、Scheduler、Phase Runtime、Task Manager Runtime 与 AgentTeams Adapter 的正式契约。
  • 完成生产 PostgreSQL/MinIO/Git workspace 持久化、严格生产配置、operator bootstrap、可信 Task Manager ingress、Phase 运行束、canonical MCP 工具闭集及跨项目/Invocation/Binding 权限隔离。
  • Task Manager 只提交意图;DecisionRef、revision、input、invocation 和 binding 由 Runtime 注入。图、Context、事件与 execution cleanup 均具备幂等和恢复路径。
  • 修复真实联调暴露的问题:
    • Task Manager 完成后 AgentTeams host slot 和外部 task 未释放;
    • Context 投影 principal 缺可信 InvocationID;
    • UI 事件在业务事务前发布或被同步 MCP revoke 取消;
    • 跨项目 phase terminal intent 污染 runtime readiness;
    • QwenPaw runtime 更新误删 threadmill-* invocation MCP client;
    • Phase retry prepared rows 无界增长。
  • React/TypeScript GUI 接入真实 Requirement API、容量 API、协调快照、Manager 会话、SSE 与节点 Inspector;移除 demo-project 回退和乐观造图,拒绝陈旧 revision/cursor 投影。
  • 明确真实能力边界:普通 Manager 输入可将 pending endpoint 设为 held;released 只能来自 Runtime 认证的 stop_release 边界,GUI 不提供绕过后端协议的直接 resume/release 能力。
  • 使用项目级 Impeccable、Taste、UI/baseline、Motion、Better Icons 与 DESIGN.md 工作流约束控制台布局、状态层级、图标、动效和可访问性。

影响面

  • 影响根项目 Go 服务、生产装配、数据库迁移、AgentTeams/QwenPaw 适配、MCP/HTTP/SSE 传输层、React Web、测试和设计/实施文档。
  • third_party/agentteams/qwenpaw 有一处受回归测试保护的定向修复,并已构建成独立本地 worker 镜像,通过 AgentTeams Worker CR 持久部署到 phase-a/b/c。
  • 用户可见变化:空图可从 GUI 提交需求后由真实 SSE 更新;容量调整显示服务端结果;节点 Inspector 展示 invocation 绑定的订阅、Context 与 TaskMemory candidate;后端拒绝会直接显示,不伪造已应用状态。
  • 保持不变:浏览器和 Phase Agent 不能直接写 Coordination Graph;GraphRuntime 不暴露为外部 API;Merge Queue 仍是主分支写入边界;普通 Manager 对话不能直接伪造 stop_release/resume。

验证结果

  • 真实 PostgreSQL:THREADMILL_TEST_DATABASE_URL=... THREADMILL_PG_TEST_DSN=... go test ./... -count=1,全仓通过。
  • go vet ./...:通过。
  • npm --prefix web test -- --run:4 个测试文件、8 条测试全部通过。
  • npm --prefix web run format:check:通过。
  • npm --prefix web run build:通过;仅有约 526 kB 单 chunk 的非阻塞提示。
  • QwenPaw 定向回归:runtime updater 普通 MCP 清理与 Threadmill invocation MCP 保留用例 2 条通过。
  • 真实 AgentTeams/DeepSeek GUI E2E:
    • readyz 中 PostgreSQL、object store、AgentTeams、runtime 全部 ready;
    • GUI 将 desired concurrency 调整为 3,healthy capacity 为 3;
    • 从空图提交真实 Requirement 后收到 endpoint.updated × 3,最后收到 graph.revision;
    • Manager 对话将 verify 真实迁移到 held/revision 3;
    • plan 由真实 QwenPaw/DeepSeek invocation 执行,Inspector 读到 2 个订阅、1 个 Context node、1 个 TaskMemory candidate;浏览器错误为 0;
    • phase-a/b/c 在多轮 mcp_server_count=0 更新后仍保留 invocation MCP,真实调用 context.listSubgraphs 成功。
  • git diff --check:通过;工作区无内容差异,仅 Windows 行尾 stat 提示。

风险与回滚

  • Web 构建仍有单 chunk 大于 500 kB 的提示,可后续按图组件和 Inspector 分包;不影响本次运行正确性。
  • Manager host 当前是单槽;前一 completed execution 会在下一次 ingress dispatch 前正式 cancel/revoke/release。高频 Manager 请求受真实容量约束,后端会返回明确 503,不会在前端伪成功。
  • completed Phase 的物化 Context Slice 可能为空,但 TaskMemory candidate 与历史订阅仍按 Invocation 审计展示;运行中截图与完成后截图分别验证两类生命周期状态。
  • 本地真实 E2E 使用持久 PostgreSQL/AgentTeams 资源;跨项目 outbox 现在 fail-closed 并将旧污染记录标记 abandoned。
  • 回滚可按提交逆序 revert;数据库迁移均有 down 文件;QwenPaw worker 可通过 Worker CR 切回原镜像。

Agent 自主设计与假设

  • 选择服务端 graph.revision 作为一组可见事件的最后提交信号;endpoint/invocation 事件先幂等写入,核心事务失败时不发布最终 revision。
  • 选择在下一次 Manager ingress 派发前 cancel 已完成的旧 AgentTeams task,避免在当前 MCP 工具响应内 revoke 自身连接。
  • 选择保护严格匹配 threadmill-[0-9a-f]{24} 的 QwenPaw MCP key,其他 managed MCP 仍按原更新策略清理。
  • 真实 GUI 验收只验证普通 Manager 被允许的 held;没有把被后端拒绝的普通 released/resume 包装成成功。
  • PR 保持草稿,等待远端 CI 与仓库要求的人工审查后再合入受保护的 dev。

@KDZZZZZZ KDZZZZZZ changed the title feat: 实现 Threadmill 实时协调控制台验收 Demo feat: 按设计契约实现 Threadmill 运行时、Agent 接口与实时协调控制台 Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant