设计方案 / 三案综合版

Agent Board Kit 与统一 Workbench 设计方案

本文件基于三份方案重新排序后更新。目标不是把 Factory V2 / Factory V3 / Vibe Coding V2 换个名字,而是把当前已经跑通的看板、自动执行、事件回流、PR 回流能力抽成可复用的 Agent Board Kit。它面向任意会话入口:普通 chat、Solution、BizRole 都可以使用。

三套方案排名

1

agent-board-branch-simplification-plan.html

最适合作为执行基准。它既有代码事实,也有风险控制:明确指出你测试的入口是 /sol/vibe-coding-v2/sess/:sessionId,但看板 tab 实际复用 FactoryV2BoardPanel/api/factory-v2/.../board-tasks。它还把普通 chat、Solution、BizRole 都放在“入口”层,而不是把看板绑定到 Solution。

2

factory-v3-simplification-plan.html

删除清单和硬编码表最具体,能帮助估算净删规模。但它的 PR 1 同时做“后端改名 + 删除 Gitea Issue 看板 + socket 合并”,范围偏大;部分删除项如 vibe_log_socket.py、整个 software_factory_v3 目录需要先确认替代路径。

3

agent-board-design-plan.html 原版

架构边界清楚:Agent Board Kit、TaskRunner、Provider、Entry Adapter 是正确方向。但原版缺少对当前 12,000 行变更的代码级拆解,也没有足够解释为什么你实际测试的 Vibe URL 仍然证明 board-tasks 是主链路。

综合采用原则

执行顺序采用第 1 份;硬编码和删除清单参考第 2 份;模块边界沿用第 3 份,但补上普通 chat 入口和当前 Vibe 工作台的真实链路。最终方案不直接照搬任何一份。

关键事实修正

用户实际测试的网址是 http://localhost:5927/sol/vibe-coding-v2/sess/xxxx,不是 /factory-v2 页面。这不推翻 board-tasks 是主链路,反而说明 Vibe Coding V2 工作台已经在内部复用 Factory V2 看板实现:

/sol/vibe-coding-v2/sess/:sessionId
  → SolutionShell
  → VibeCodingWorkbenchLayout
  → fetchVibeBoardProject(sessionId)
  → FactoryV2BoardPanel
  → /api/factory-v2/projects/:projectId/board-tasks

所以更准确的表述是:Vibe Coding V2 的用户入口是 Solution URL,但它的看板 tab 后端实际走 SQLite board-tasks 链路。要抽象的是这条已被 Vibe 使用的看板能力,而不是保留 Factory V2 命名。

决策 1:SQLite board-tasks 是主链路

它已经覆盖 Vibe 工作台看板、CLI、headless 执行、运行事件、PR 回流和实时更新。后续应改名为 Agent Board,而不是继续叫 Factory V2。

决策 2:看板脱离 Solution 复用

Agent Board 的 Skill、UI、API、CLI 必须是普通 chat 也能用的通用能力。Solution / BizRole 只是入口配置,不拥有独立看板实现。

决策 3:Gitea Issue 不做主看板

Gitea 保留为 Repo / PR / diff / merge / webhook provider。Factory V3 的 Gitea Issue board 是第二套看板,应删除或降级为外部同步能力。

决策 4:Prompt / Skill 同步合并

代码切换后必须同步改提示词和 Skill,避免智能体继续按 Gitea Issue label 或 Factory V3 专用流程操作看板。

目标架构

任意会话入口

普通 chat、Solution、BizRole、Vibe、软件工厂、内容工厂、法务审阅等。

Agent Board Kit

通用 Skill、UI、API、状态、事件、权限。

TaskRunner + Provider

Headless 智能体执行;Gitea/PR/webhook 是可选 provider。

模块边界

Board Domain

Project、Task、TaskEvent、AgentConfig、状态流转。不包含 Vibe、Factory、Gitea 命名。

Board API / Socket

统一 `/api/agent-board` 与 `agent-board:*` 事件,替代 factory-v2 / board:updated 双事件。

Board UI

从 FactoryV2BoardPanel 提炼为 AgentBoardPanel,可嵌入普通 chat、Workbench、侧边栏、独立页面。

Board Skill

智能体操作看板的唯一协议:创建任务、分配智能体、更新状态、评论、提交结果。

TaskRunner

看板任务 → headless session → runtime events → result → 状态回写。

Repo Provider

仓库、clone、sync、PR、diff、merge。Gitea 是第一实现,不是看板本体。

Workbench

Chat、Board、Files、Git、Service、Publish 的组合壳,不绑定 Vibe/Factory 命名。

Entry Adapter

普通 chat 和 Solution 入口只提供默认 agent、文案、初始配置、是否展示工作台。

建议目录结构

host/src/blade_agent/host/agent_board/
  models.py            # BoardProject, BoardTask, BoardTaskStatus, BoardTaskEvent, BoardAgentConfig
  schema.py            # SQLite schema;第一阶段可保留旧表名
  store.py             # AgentBoardStore
  task_runner.py       # task -> headless session -> events -> result
  result_schema.py     # 通用结果 + 代码任务扩展
  repo_provider.py     # provider interface
  gitea_provider.py    # Gitea repo / PR / diff / merge
server/src/blade_agent/server/routes/
  agent_board.py
  agent_board_changes.py

web/apps/web/src/components/agent-board/
  AgentBoardPanel.tsx
  AgentBoardTaskDialog.tsx
  AgentBoardEvents.tsx
  agent-board-api.ts

web/apps/web/src/layouts/
  ProjectWorkbenchLayout.tsx

执行顺序

采用第 1 份方案的小步执行方式;吸收第 2 份的删除清单,但避免第一个 PR 过大。

  1. PR 1:建立 Agent Board 后端命名边界

    新增 `agent_board` 模块和 `/api/agent-board`;保留旧表名和旧 UI;CLI 可先迁到新 API。目标是证明新命名不改变行为。

  2. PR 2:删除 Gitea Issue 主看板,抽 Repo Provider

    删除或停用 Factory V3 Issue board CRUD/UI/socket;保留 Gitea repo/PR/diff/merge 能力为 provider。

  3. PR 3:AgentBoardPanel + 统一 Workbench

    FactoryV2BoardPanel 改为 AgentBoardPanel;Vibe 工作台改为通用 ProjectWorkbench;删除 `/factory-v3` 重复页面。

  4. PR 4:TaskRunner 通用化

    抽 headless 执行、事件同步、submit_result 解析和状态回写;输出 schema 从强制 PR 改为通用结果 + 可选 PR 扩展。

  5. PR 5:CLI / Skill / Prompt 合并

    `blade kanban`、Agent Board Skill、Vibe/Factory prompt 同步改到唯一看板协议;删除 Gitea Issue label 看板指南。

  6. PR 6:删除历史入口和死代码

    删除 `/factory`、`/factory-v2`、`/factory-v3` 重复 UI,保留一个 Workbench + 普通 chat 看板入口。

执行风险