commit 5b945508959e3a433015dd890e93e67c449483df Author: weichen Date: Tue Sep 29 17:08:47 2026 +0000 Add the system skeleton design, proposal, and phased implementation plan (pending review) Details (original message): Add the system skeleton design, proposal, and phased implementation plan (pending review). diff --git a/docs/proposals/2026-09-29-system-skeleton-design-and-plan.md b/docs/proposals/2026-09-29-system-skeleton-design-and-plan.md new file mode 100644 index 0000000..5ebe4f4 --- /dev/null +++ b/docs/proposals/2026-09-29-system-skeleton-design-and-plan.md @@ -0,0 +1,328 @@ +# Agent-System 对话系统骨架:设计、方案与实施计划 + +状态:**待审**;owner:weichen;主任务:本文档自身(批准后拆分为各阶段主任务记录)。 +授权与交付终点:本文档为设计 + 方案 + 计划,**不含实现**。批准后按第 7 节阶段逐项开工。 +规范基线:Development-Guidelines(`development/guidelines` submodule,Dev 仓固定版本)。 +撰写日期:2026-09-29。 + +--- + +## 1. 问题与证据 + +### 1.1 用户目标 + +构建一个对话系统的**骨架**,界面形态仿 zcode / Kimi / Codex: + +- **左栏**:项目 → 会话两级组织;底部账户、设置入口;可拖拽调宽(有最小/最大宽度),压过最小宽度继续拖拽以手势触发收起;收起后保留窄栏。 +- **中栏**:对话区。支持文档、图片等文件上传;文字消息发送;**流式**回复;须区分回复正文、工具调用、思考过程等不同消息成分;最终回复整理输出后,**之前的过程输出折叠或隐藏**(可回看)。支持卡片交互:HITL 提问卡片(给出选项 + 建议 + 各选项可能造成的影响 + 自由输入;系统判断用户是选择了某项还是提出了别的问题)。 +- **右栏**:工具栏。计划、步骤、to-dos;Agent 在对话中产出的文档可在右栏查看;子标签(tab)设计按需规划。 +- **弹出窗口**:结合右栏,展示、追踪 sub-agent 的任务、结果、中间过程。 + +系统必须提供**插件机制**:骨架保证一个通用智能体的使用与功能;通过插件接入领域能力——例:老系统 Agent-System 中的医疗器械 CDMO 工作流(工作流、功能、能力注册进系统)、法规知识库(检索功能)。 + +核心诉求:**充分的可扩展性、可定制性**;新功能以插件接入,不破坏已有功能、不需要大规模重新开发、不与核心过度耦合。 + +### 1.2 现状与已证实事实 + +| 事实 | 证据 | +|---|---| +| `Agent-System` 是老系统仓库,新系统**不做迁移**,仅作插件素材与机制参考 | 远端默认分支 `dev`,内容为单体(Go 后端 + React 19 前端 `shuimu-workbench`);本地 `Agent-System` 与 `agent-system-multi` 均指向它。**用户记忆确认正确** | +| CDMO 素材位置 | 老系统 `internal/`(docgov、docrevision、workflowdef、bizdev、squad、kb 等)、`configs/agents/`、`docs/`;`~/projects/08-Regulations` 为法规资料 | +| `Agent-System-Dev / Core / Frontend / Backend / Documents / Releases` 六仓在 Gitea 已建、**全部为空仓**(默认分支 main) | Gitea API 查询(2026-09-29) | +| 可复用生态已建成 | `Agent-Native`(执行内核)、`Agent-Squad`(编排底座,含 HITL)、`Agent-Intent`(意图识别,入口闸门 + 能力目录,2026-09-29 完成两轮接入)、`Error-Code-System`、`Logging-System`,均有远端描述与固定 gitlink 关系 | +| 未知仓 | `SMDF-Agent-System`(空仓,用途不明,待澄清);本地 `Agent-System-Ensemble/`(空目录,建议用作 Dev 仓工作副本) | +| `Agent-Intent` 远端此前缺描述 | 本次已补全(Gitea API,HTTP 200) | + +### 1.3 重要经验命中 + +- Agent-Intent 记忆:意图注册表 = 能力目录(slots 声明 HITL 该问什么);三触点 = 入口闸门 / 编排目录 / 执行防线;生态 pin 纪律(guidelines / errcode / logsys / agent-intent 的 gitlink 必须跨仓一致);agent-intent 严禁依赖 agent-native/squad。 +- Guidelines:父仓 gitlink 是子仓版本权威;模块从 L1 逻辑隔离起步;四类通信语义(Query/Command/Event/Stream);Stream 契约必须定义游标、断连、终态对账;文档三层放置(项目规范性文档进项目仓 `policy/`,过程记录进独立过程仓)。 + +--- + +## 2. 目标与边界 + +### 2.1 目标 + +1. **可运行的骨架**:通用智能体对话系统(三栏 UI + 流式对话 + 工具调用 + 思考过程折叠 + HITL 卡片 + sub-agent 追踪 + 文档查看),端到端走通。 +2. **插件体系**:领域能力(CDMO 工作流、法规检索等)以插件注册进系统(工具、工作流、意图、知识检索、UI 面板、对话卡片),装卸插件不破坏核心、不需要改核心代码。 +3. **仓网组织**:所有 submodule 独立、通用、可复用、易维护、可扩展;`Agent-System-Dev` 为开发集成父仓,`Agent-System-Releases` 只做打包分发。 +4. **规范落地**:开发全程按 Development-Guidelines 执行(阶段方案、验证记录、pin 纪律、模块卡)。 + +### 2.2 非目标 + +- **不迁移老系统**:Agent-System 冻结为参考仓;其能力以插件形式**重新表达**(提取定义与素材,不是代码搬迁)。 +- 骨架期不做多租户、计费、公开注册;单用户(个人部署)起步,但数据模型预留 owner 字段。 +- 不追求移动端;桌面浏览器优先。 +- 不自研 LLM 接入层——复用 Agent-Native。 +- v1 不做插件市场 / 在线安装;插件以仓为单位、构建期组装(热加载仅限声明性资产,见 5.6)。 + +--- + +## 3. 仓库组织设计 + +### 3.1 命名规则(用户定义,本设计确认沿用) + +- `Agent-*`:智能体能力库(与具体宿主系统无关)——`Agent-Native`、`Agent-Squad`、`Agent-Intent`。 +- `Agent-System-*`:本系统相关。 +- 插件仓:`Agent-System-Plugin-`(新建)。 + +### 3.2 仓库分配总表 + +| 仓库 | 角色 | 职责一句话 | Gitea 描述(P0 写入) | +|---|---|---|---| +| **Agent-System-Core** | 契约仓(build-required) | 系统核心契约:领域模型、流式事件协议、HITL 卡片协议、插件 API 与 manifest、前端扩展点契约(JSON Schema / TS 类型) | 系统核心契约:领域模型、流式事件与 HITL 卡片协议、插件 API 与前端扩展点,供前后端与插件共同依赖;不含实现。 | +| **Agent-System-Backend** | 后端仓(build-required) | Go 模块化单体:会话/项目域、流式管道、Run 管理、sub-agent 管理、工件存储、插件宿主、持久化;组合 Agent-Native/Squad/Intent | 对话系统后端:会话与流式管道、智能体运行时(组合 Agent-Native/Squad/Intent)、工具注册与插件宿主;依赖 Agent-System-Core 契约。 | +| **Agent-System-Frontend** | 前端仓(build-required) | React 19 + Vite + TS:三栏布局、流式渲染、消息成分折叠、HITL 卡片、右栏面板、sub-agent 弹窗、扩展点渲染器 | 对话系统前端:三栏工作台(项目会话 / 流式对话 / 计划与工件面板),含 HITL 卡片与 sub-agent 追踪弹窗;渲染协议由 Agent-System-Core 定义。 | +| **Agent-System-Documents** | 文档/过程仓(development-only) | 系统级文档:架构、ADR、插件开发指南、跨仓过程记录(方案/验证/交接);本方案文档即首篇 | 系统文档与过程记录仓:架构决策、方案与验证记录、插件开发指南;不含产品代码。 | +| **Agent-System-Dev** | 开发集成父仓(development-only) | submodule 集成全部模块;顶层构建/测试编排、开发环境(compose)、跨仓任务记录入口;**非分发单元** | 开发集成仓:以 submodule 固定全部模块组合,承载跨仓构建、测试编排与开发环境;发布物在 Agent-System-Releases。 | +| **Agent-System-Releases** | 发布仓(可选分发) | 版本 manifest(pin 全组合 SHA)+ 不可变制品 + 部署编排;只打包分发,不开发源码 | 发布仓:每个版本固定组件组合与不可变制品、部署编排;只做打包与分发,不做源码开发。 | +| **Agent-System-Plugin-CDMO**(新建,P4) | 插件仓 | 医疗器械 CDMO 工作流插件:工作流定义、意图 specs、提示词、文档模板、(必要时)工具实现 | CDMO 工作流插件:向系统注册医疗器械 CDMO 工作流、意图与文档模板;素材提取自参考实现,按插件契约重新表达。 | +| **Agent-System-Plugin-Regulations**(新建,P4) | 插件仓 | 法规知识库插件:检索 provider + 知识索引 + 右栏知识面板 | 法规知识库插件:注册法规检索工具与知识面板;索引数据与检索实现独立演进。 | +| Agent-Native / Agent-Squad / Agent-Intent | 生态 submodule(build-required) | 执行内核 / 编排底座(含 HITL)/ 意图闸门与能力目录 | 已有描述,不变 | +| Error-Code-System / Logging-System | 基础设施 submodule | 错误码 / 日志 | 已有描述,不变 | +| Development-Guidelines | 规范 submodule(development-only) | 开发规范,路径 `development/guidelines` | 已有描述,不变 | +| Agent-System | **冻结参考仓** | 老系统,只读参考;不进 Dev 仓组合 | P0 补描述:老系统参考仓(冻结):新系统不迁移;仅作插件素材与机制设计参考。 | +| SMDF-Agent-System | 待澄清 | 空仓,用途不明 | 暂不使用,待用户澄清 | + +### 3.3 依赖方向(无环) + +``` +Frontend ──→ Core ←── Backend ──→ {Agent-Native, Agent-Squad, Agent-Intent, + Error-Code-System, Logging-System} +Plugin-* ──→ Core(只依赖契约,不依赖 Backend/Frontend 实现) +Dev ──(gitlink)──→ 以上全部 +Releases ──(版本 manifest 引用)──→ Dev 固定组合的制品 +``` + +- Backend **不 import** Frontend;插件**不 import** Backend/Frontend 内部包(违者 CI 依赖检查拒绝)。 +- 生态仓依赖方向沿用既有纪律(agent-intent 不依赖 native/squad 等)。 +- Core 依赖:Go 标准库 + 少量基础仓对齐(错误码常量对齐用鸭子接口,同 agent-intent 模式);Core 不依赖任何生态仓。 + +### 3.4 版本与组合纪律 + +- 父仓 gitlink 为版本权威(Guidelines 多仓规范);Dev 仓每次推进组合时跑 CI 全量验证后提交 gitlink 更新。 +- 各模块仓独立演进,未被 Dev 采用的新版本是合法状态。 +- Releases 的版本 manifest 从 Dev 固定提交导出(不提交自引用循环锁文件)。 + +--- + +## 4. 系统架构 + +### 4.1 总体形态 + +- **后端**:Go 模块化单体(module-contracts L1 逻辑隔离起步);进程内模块以公开契约互调。未来按需把「知识检索索引器」等重负载模块升 L2(sidecar)。 +- **前端**:React 19 + Vite + TypeScript SPA(沿用老系统技术栈与经验:虚拟滚动、docx 预览、mermaid、katex 等依赖可复用)。 +- **传输**:REST(Query/Command)+ SSE(Stream;WebSocket 备选,v1 定 SSE:单向流、断线重连语义简单)。SSE 事件 = Core 定义的统一事件信封。 +- **持久化**:PostgreSQL(会话、消息、Run、HITL、插件注册表)+ 本地对象目录(上传文件与工件,预留 S3 适配位)。 + +### 4.2 核心抽象:一切运行皆 Run、一切增量皆事件 + +系统最重要的统一抽象,中栏折叠、sub-agent 弹窗、工具调用展示全部复用它: + +```go +// 概念示意(详细 schema 在 Core 定稿) +Run { + ID, ParentRunID // 顶层对话轮 = ParentRunID 空;sub-agent / 工具调用 = 子 Run + ConversationID, ProjectID + Kind // conversation | subagent | tool + Status // pending | running | waiting_hitl | completed | failed | cancelled + Phase // thinking | acting | responding | done(run.phase 事件驱动 UI 主状态) +} +``` + +**事件信封**(后端 → 前端,持久化后转发,seq 单调): + +```json +{ "seq": 42, "run_id": "...", "conversation_id": "...", "ts": "...", + "type": "message.delta | thinking.delta | tool.call | tool.result | + run.phase | hitl.request | hitl.resolved | + plan.update | todo.update | + agent.spawn | agent.progress | agent.result | + artifact.created | artifact.updated | + run.completed | run.failed | error", + "payload": { } } +``` + +Stream 契约按规范补齐:游标 = `Last-Event-ID`(seq);断连重连从游标续传;终态对账 = 会话详情 Query 返回权威消息树,前端以 Query 为准收敛(丢弃未确认的流式残片)。 + +**消息模型**:`Message { id, role, parts: [Part] }`,`Part` 多态(text / thinking / tool_call / tool_result / artifact_ref / hitl / plan / error)。流式过程中 parts 逐个追加;**run 终态后前端将过程 parts(thinking/tool)折叠为摘要行**(如「思考了 12s · 调用 3 个工具」),点击展开回看——折叠是纯前端呈现策略,事件与数据不删。 + +### 4.3 后端模块划分(组合根装配,模块卡在 Backend 仓 `policy/modules/` 维护) + +| 模块 | 职责 | 关键契约 | +|---|---|---| +| project/session | 项目、会话、消息 CRUD 与检索 | Query/Command | +| runmgr | Run 生命周期、事件产生与持久化、游标 | Command(幂等 run 创建)+ Event | +| streamhub | SSE 通道、订阅、断线续传、终态对账数据 | Stream | +| runtime | 智能体执行适配:Agent-Native(主对话 + 工具)、Agent-Squad(sub-agent 编排) | 进程内窄接口;失败映射稳定错误码 | +| intentgate | Agent-Intt 接入:入口闸门 + 能力目录注入规划 | 可选装配,未配置 = 行为回退(T0 底线沿用其纪律) | +| toolreg | 工具注册表:内置工具 + 插件工具统一注册、schema 校验、调用审计 | Query/Command | +| hitl | HITL 卡片生命周期:发起、挂起 run、响应路由(选中项 vs 自由输入再识别)、超时 | Command + Event | +| artifacts | 上传文件、Agent 产出文档、版本与引用 | Query/Command | +| pluginhost | 插件发现、manifest 校验、能力注册(工具/工作流/意图/面板/卡片)、声明资产热加载 | Command + Event | +| planboard | 计划 / 步骤 / to-dos 状态(Agent 产出 + 用户可读) | Query/Command + Event | +| observability | Logging-System / Error-Code-System 对齐;进度归属与重放(Guidelines observability) | Event | + +### 4.4 前端结构 + +- **左栏 `ProjectNav`**:项目折叠组 → 会话列表;底部账户/设置;宽度拖拽(min 220 / max 420 px,值可配置);拖拽越过最小阈值并继续(拖出约 40px 超调)→ 松手收起;收起态为图标窄栏;分隔条双击也可收起/展开。宽度与收起态持久化(localStorage + 服务端偏好)。 +- **中栏 `Conversation`**:虚拟滚动消息流;Part 渲染器注册表(按 part 类型查表 → 组件);流式增量渲染;**run 终态触发过程折叠**(折叠条组件,可展开);输入区:文件上传(拖拽 + 粘贴 + 选择)、发送、中断(run cancel)。 +- **右栏 `Workbench`**:tab 化——内置 `Plan` / `Todos` / `Artifacts` / `Agents`,插件可注册更多 tab(如 `法规知识`);文档查看器(markdown 渲染 + docx 预览复用老系统方案);可收起。 +- **弹窗 `AgentTracker`**:从右栏 `Agents` tab(或消息中的 agent 徽章)打开;任务树(spawn 关系 = Run 父子)、每个 sub-agent 的进度、中间过程(复用 Part 渲染器 + 事件重放)、结果工件链接。 +- **状态 owner**:服务端权威(事件 + Query 对账),前端 store 是投影;查询/命令/取消/过期结果处理按 module-contracts 前端条款明确(例如:切换会话时取消在途请求、旧会话迟到事件丢弃按 conversation_id 分流)。 + +### 4.5 HITL 卡片协议(Core 定稿,前后端与插件共用) + +```json +{ "id": "...", "run_id": "...", "question": "该文档按哪个法规路径走?", + "kind": "choice", // choice | input | confirm | form + "choices": [ + { "id": "eu-mdr", "label": "EU MDR 路径", + "description": "按欧盟医疗器械法规准备技术文档", + "impact": "触发 MDR 技术文档模板与符合性检查清单", "recommended": true }, + { "id": "nmpa", "label": "NMPA 注册路径", "description": "...", "impact": "..." } + ], + "allowFreeInput": true, + "freeInputHint": "也可以直接输入你的问题或其他路径", + "timeoutSec": null } +``` + +响应路由:用户点选 → `hitl.resolved(choice_id)`;自由输入 → 先走 intentgate 识别(是否命中澄清问题/其他意图),命中其他意图则挂起当前 run 并进入新对话轮(或按 run 策略取消),否则作为澄清回答回填。选中项 + 影响展示让用户在决策点获得足够上下文——影响字段由发起方(Agent 工作流或插件)提供。 + +### 4.6 插件体系(本设计的关键决策) + +**原则:能数据化的都数据化,代码只留接口。** 大部分领域能力(CDMO 工作流、意图、提示词、文档模板、UI 面板形态)本质是**声明性资产**而非代码;把它们做成数据,插件装卸就不触碰核心二进制,扩展性诉求(不破坏、不重开发、不过度耦合)由此达成。 + +**插件 = manifest + 声明资产 + 可选代码模块**: + +``` +Agent-System-Plugin-CDMO/ + plugin.json # id、版本、能力声明清单(下面五类) + workflows/*.json # 工作流定义(步骤、触发、绑定的意图) + intents/*.json # 意图 specs(agent-intent overlay 格式,slots 即 HITL 问题) + prompts/*.md # 角色与任务提示词 + templates/ # 文档模板(docx/md) + panels/*.json # 右栏面板声明(列表/表单/文档引用的 UI schema) + cards/*.json # 对话卡片声明(含 HITL 卡片模板) + tools/ # 可选:Go 代码实现 ToolProvider / KnowledgeProvider +``` + +**五类注册能力**: + +| 能力 | 形态 | 注册效果 | +|---|---|---| +| 工具(Tool) | 代码(Go interface)或声明(内联动作/HTTP 调用描述) | 进 toolreg,Agent 可调用 | +| 工作流(Workflow) | 声明(JSON 定义 + 意图绑定) | 进编排目录;命中意图即可启动;步骤可产 HITL 卡片 | +| 意图(Intent specs) | 声明(agent-intent overlay) | 进 intentgate 目录;slots 自动成为 HITL 询问项(复用既有「意图注册表 = 能力目录」设计) | +| 知识(Knowledge) | 代码(KnowledgeProvider)+ 索引数据 | 注册检索工具 + 右栏知识面板 | +| UI(面板/卡片) | 声明(UI schema:列表/表单/markdown/文档引用) | 前端通用渲染器渲染;**插件不向主 bundle 注入组件** | + +**UI 扩展的边界**:前端只实现「通用 schema 渲染器」(有限词汇:section / list / kv / form / markdown / doc-ref / actions)。表达不了的高级交互 → 在 Core 提案新词汇或新卡片类型(走契约扩展流程),而不是开洞让插件写 React。这保证前端不被插件破坏。 + +**代码类插件的隔离档位演进**: + +- v1:**进程内**(构建期组装,Dev 仓组合构建)——单用户部署、插件同生态(Go),L1 足够;崩溃风险由工具调用超时/预算兜底。 +- v2(需要时):**sidecar 进程**(HTTP,L2)——插件按同一 port 协议实现,pluginhost 加 transport 适配器即可升级,插件代码不变。契约(四类通信语义)从 v1 就按跨进程定义,使该升级只是换传输。 + +**fail-closed 与回退**:manifest 校验失败整批拒绝(沿用 agent-intent 纪律);卸载插件 = 注销其注册项,在途 run 引用的工具/工作流按「定义缺失」稳定错误码失败并提示,不静默。 + +### 4.7 与生态的接入点(沿用既有方案,不重造) + +- Agent-Native:主对话与工具执行的实际后端(runtime 模块窄接口适配)。 +- Agent-Squad:sub-agent 编排(spawn/黑板/HITL 由 runmgr 映射为统一 Run + 事件)。 +- Agent-Intent:入口闸门(守卫 + 命令识别)+ 编排目录(intent catalog 注入规划);未配置意图 = 行为回退(T0)。 +- Error-Code-System / Logging-System:常量对齐 + 鸭子接口(同 agent-intent 模式,核心包不硬依赖)。 + +--- + +## 5. 兼容、迁移与恢复 + +- 老系统:冻结不动;插件素材提取 = 新增参考读取,零改动老仓。 +- 生态仓:本系统全部通过 submodule + gitlink 固定;接入时如需扩接口,走「提供方先扩展兼容契约 → 消费方适配 → 组合验证 → Dev 更新 gitlink」顺序(多仓规范)。 +- 事件协议兼容:字段只增不改语义;前端按未知 `type` 静默忽略 + 版本协商(`?protocol=v`),保证骨架升级不破坏在途会话(终态对账兜底)。 +- 回退:Dev 仓恢复旧 gitlink 组合即可整体回退;数据库 schema 迁移显式设计(v1 每阶段附回滚脚本;不假设可反向推导)。 +- 未配置任何插件时,系统即纯通用智能体对话骨架(T0 行为基线,作为验收对照)。 + +--- + +## 6. 验收(设计期计划,实现后补证据) + +| 需求/验收条件 | 负责模块/契约 | 验证方法 | 预期结果 | +|---|---|---|---| +| 三栏布局:调宽/超调收起/展开/偏好持久化 | Frontend ProjectNav | 组件测试 + Playwright | 拖拽行为与持久化符合 4.4 | +| 流式对话:区分正文/思考/工具,终态后过程折叠可回看 | streamhub + Part 渲染器 | 集成测试(mock runner 事件序列)+ 浏览器验收 | 过程 parts 折叠为摘要,展开可见 | +| 断线重连终态对账 | streamhub Stream 契约 | 故障注入(中断 SSE)| 恢复后消息树与权威 Query 一致 | +| 文件上传与工件查看 | artifacts + 右栏查看器 | 集成 + 浏览器验收 | 上传→引用→右栏渲染 | +| HITL 卡片:选项/影响/建议/自由输入路由 | hitl + intentgate | 契约测试(选中 vs 自由输入两路径)| run 正确恢复或正确转轨 | +| sub-agent 弹窗:任务树/中间过程/结果 | runmgr + AgentTracker | 多 agent 场景集成测试 | spawn 关系与进度完整展示 | +| 插件装卸不破坏核心 | pluginhost + 依赖检查 CI | 装载 CDMO 插件 → 卸载 → 核心回归 | 核心功能零回归;在途引用稳定报错 | +| 未配置插件 = 通用骨架(T0 基线) | 全部 | 无插件全量回归 | 与装插件前行为一致 | +| 全新 clone → 构建运行 | Dev 仓 | 干净环境验证 | 一条命令起完整系统 | +| 版本发布 | Releases | manifest 校验 | 制品与 gitlink 组合一一对应 | + +--- + +## 7. 实施计划 + +每阶段一张主任务记录(Documents 仓)+ change-plan + 验证记录;Dev 仓组合推进。规模为单人开发的粗估,按实际节奏调整。 + +### P0 仓网引导(半天–1 天) + +- 六个空仓初始化:README、AGENTS.md/PROJECT.md(按模板)、`policy/`、`.gitignore`、gitea 描述(按 3.2 表)、默认分支 main。 +- Dev 仓建 submodule 骨架(Core/Backend/Frontend/Documents + Guidelines + 生态五仓),顶层 Makefile(组合构建/测试入口)与 compose 骨架。 +- 本方案文档入库(Documents)并推送;老系统仓补「冻结参考」描述。 +- **出口**:全新 clone Dev 仓 → 子模块物化 + 空构建通过;各仓描述齐全。 + +### P1 契约与骨架闭环(3–5 天) + +- Core:领域模型 + 事件信封 + HITL 卡片协议 v0(Go 类型 + JSON Schema + TS 类型三态一致,代码生成防漂移)。 +- Backend:project/session、runmgr、streamhub、**mock runner**(按脚本回放事件序列,不接 LLM)、SSE 端点、PostgreSQL schema v1。 +- Frontend:三栏布局 + 左栏交互(调宽/收起)+ 中栏流式渲染与折叠 + SSE 客户端(游标/重连/对账)。 +- **出口**:浏览器端到端走通一轮 mock 对话,覆盖流式、折叠、断线重连;第 6 节前三行验收项过。 + +### P2 真实智能体接入(3–5 天) + +- runtime 接 Agent-Native:真实 LLM 对话、thinking/正文/工具调用事件映射;文件上传与工件;run 取消。 +- **出口**:真实模型对话端到端;工具调用过程折叠正确;第 6 节 4–5 行部分验收。 + +### P3 编排、sub-agent 与 HITL(4–6 天) + +- runtime 接 Agent-Squad:sub-agent spawn/进度/结果 → 统一 Run 与事件;右栏 Plan/Todos/Agents tab;AgentTracker 弹窗(含事件重放)。 +- intentgate 接 Agent-Intent:入口闸门 + 目录注入;hitl 模块完整落地(含自由输入路由)。 +- **出口**:多 agent 任务全链路可视化;HITL 卡片两路径验收过。 + +### P4 插件框架与试点(5–8 天) + +- pluginhost:manifest、五类能力注册、声明资产热加载、fail-closed、卸载语义。 +- 前端通用 schema 渲染器 + 插件 tab/卡片注册。 +- 试点一:CDMO 插件(从老系统提取 workflowdef/意图/提示词/模板 → 数据化重构;范围先取一条最有代表性的工作流)。 +- 试点二:法规检索插件(KnowledgeProvider + 索引 + 知识面板,基于 08-Regulations 素材)。 +- **出口**:第 6 节插件三行验收过;两个试点插件可用。 + +### P5 发布链路(1–2 天) + +- Releases 仓:版本 manifest 生成(从 Dev 固定提交导出)、制品构建(后端二进制 + 前端 dist + 插件包)、compose 部署编排、回退演练。 +- **出口**:全新环境按 Releases 一键部署成功;manifest↔gitlink 对应校验过。 + +### 里程碑与依赖 + +P0 → P1 → P2 → P3 → P4 → P5 严格串行(每阶段是下一阶段的共同基线);P4 两个试点插件可并行。P3 完成即得到「可日常使用的通用智能体对话系统」;P4 完成即验证「插件不破坏核心」的核心主张。 + +--- + +## 8. 决策与剩余项(需用户拍板) + +| # | 决策点 | 推荐 | 待确认 | +|---|---|---|---| +| D1 | `Agent-System-Documents` 定位 | 系统文档 + 跨仓过程记录仓(本设计采用;若你本意是「文档管理功能模块仓」,该功能已并入 Backend 的 artifacts 模块,仓仍可按本设计使用) | ☐ | +| D2 | 插件代码形态 v1 | 进程内 + 构建期组装;契约按跨进程定义,v2 可升 sidecar(4.6) | ☐ | +| D3 | 前端栈 | React 19 + Vite + TS(复用老系统经验与依赖) | ☐ | +| D4 | 传输 | REST + SSE(v1);WebSocket 备选 | ☐ | +| D5 | 持久化 | PostgreSQL + 本地对象目录(预留 S3) | ☐ | +| D6 | `SMDF-Agent-System` 空仓用途 | 暂不使用,待澄清后决定(弃用 / 改名纳入) | ☐ | +| D7 | 本地 `Agent-System-Ensemble/` 空目录 | 用作 Agent-System-Dev 的本地工作副本(clone 目标) | ☐ | +| D8 | 骨架期 HITL 自由输入路由的复杂度 | v1 仅「命中其他意图→转轨 / 否则→澄清回填」两分支,不引入完整 DST(沿用 agent-intent 边界结论) | ☐ | +| D9 | CDMO 试点工作流范围 | P4 先取一条代表性工作流(建议:从老系统 workflowdef 目录挑覆盖 HITL + 文档产出的一条),验证模式后扩量 | ☐ | + +批准本方案(含 D1–D9 或批注修改)后,从 P0 开始执行。