aps-agent/docs/plan/roadmap.md

82 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 长程路线图:平台主线 / 前端界面 / APS 独立化
> 三条长程线,六个里程碑,五个决策门。任务表里已有的编号直接引用,不另起一套。
## 1 三条线的终点
| 线 | 终点 | 判据 |
| --- | --- | --- |
| **L1 平台主线**(服务端 + Core) | 一个引擎中立的平台服务:能对话、能调业务系统、写操作可控可查 | A5 只读跑通 + A6 写操作幂等 + A4 安全验收 |
| **L2 前端与桌面** | 与现有 APS 项目一致的界面与桌面壳;工作区能承载 Provider 视图 | A10.2 只读视图 + A10.5 桌面壳 + A10.8 干净机器验收 |
| **L3 APS 独立化** | APS 作为独立系统运行:自己的网关、库、治理、界面、回归基线 | B-G 独立化验收(不依赖平台任何模块) |
三条线的交界只有两处:**Provider 契约**(L1 ↔ L3)与 **provider-view 视图契约**(L2 ↔ L3)。其余互不阻塞。
## 2 里程碑
| # | 里程碑 | 交付 | 依赖 | 估时 |
| --- | --- | --- | --- | --- |
| M1 | 平台可对话(假引擎) | A3.1 引擎接口、A3.2 FakeRuntime、A2.7 评测跑通 | 无(A1/A2 已完成) | 3–4 人日 |
| M2 | 真引擎接入 | A3.3 子进程 Pi、A3.4 工具桥、A3.10 进程管理、A3.11 扩展桥、A3.5 身份过滤、A3.7 落库、A3.8 上下文、A3.9 可替换验证 | M1;决策 G1(模型与端点) | 12–16 人日 |
| M3 | 控制面成型 | A4.1–A4.6 + A4-G:身份、策略、凭据、确认卡、审计 | M2 | 12–15 人日 |
| M4 | 首个真实系统只读 | A5.1–A5.6:APS Provider、字段映射、账号绑定、健康探测、真实数据验收 | M3;L3 到 B5 | 6–8 人日 |
| M5 | 写操作与可插拔 | A6 写操作幂等、A7 Provider 安装与可视化、A8 第二系统与跨系统流程 | M4 | 18–24 人日 |
| M6 | 多 Sub-agent 与发布 | A9 Goal/Plan/Task 与受限 Sub-agent、A10 工作区/桌面端/门禁 | M5 | 14–18 人日 |
## 3 L2 前端:分两批迁移
第一批(插在 M1 之后,建议新增工作包 **A3.12**):
| 搬什么 | 从哪来 | 为什么先搬 |
| --- | --- | --- |
| 三栏壳对齐(导航轨、面板、分栏、命令面板、菜单栏) | `apps/web/src/App.tsx`、`shell/*` | 骨架决定后续所有视图的落点 |
| 对话渲染:Markdown + UI 块协议(确认卡、证据链、diff、报告) | `chat/*`、viewport 的块组件 | 确认卡是 M3 的界面载体,先有渲染位 |
| 三个核心视图:甘特、负荷、交期 | `viewport/GanttView`、`LoadView`、`DueView` | 数据来自 Provider 视图契约,能验证契约够不够用 |
| 设计令牌与暗色模式 | `styles.css` | 后续所有组件复用 |
第二批(M6,归 A10.1–A10.3):
- 剩余视图按归属分:平台通用视图(对比、运行记录、文件预览)留在平台;APS 专用视图(柔性甘特、能力池、计划分桶、世界差异、虚拟线回放)随 B6 进 APS 界面。
- 桌面壳与本地守护、离线升级:A10.5、A10.6。
## 4 L3 APS:B 线的四个阶段
| 阶段 | 内容 | 与其他线的关系 |
| --- | --- | --- |
| B0 边界与契约冻结 | `aps/` 目录与工具链(B0.1)、边界清单与契约草案(B0.2)、迁出条件复核 | 独立,可立即开始 |
| B1–B3 拆出来 | 网关分流、数据库拆分(平台 7 / APS 6)、解除 18 个文件对 agent_core 的反向引用 | 独立 |
| B4–B5 补齐能力 | APS 自带治理(动作分级确认 + 审计)、契约化接口层 | **B5 是 M4 的前置** |
| B6–B7 界面与回归 | APS 界面外壳(页面清单来自 aps-frontend 与 apps/web 的 APS 视图)、208 个测试跑通 | B6 与 L2 第二批交界 |
## 5 决策门
| # | 决策 | 卡住什么 | 建议 |
| --- | --- | --- | --- |
| G1 | 模型与端点(Pi 接哪个模型、密钥怎么放) | A3.3 之后的真引擎验证 | 开发期用内网 OpenAI 兼容网关,密钥只进环境变量 |
| G2 | 开发期数据库落地(SQLite 先行还是直接 PostgreSQL) | A3.7 会话落库 | SQLite 先行,存储层按 ADR-0007 写成方言无关 |
| G3 | 剩余视图归属(平台通用 vs APS 专用) | L2 第二批与 B6 | 第一批做完再定,用真实数据判断 |
| G4 | APS 迁出仓库的时机 | 不影响功能,影响权限与发版 | 按 ADR-0010 三个触发条件,出现即迁 |
| G5 | A5 联调方式(旧网关临时适配还是等 B5) | M4 | 优先等 B5;若 B5 落后,允许临时适配但要在 B7 前退场 |
## 6 并行与串行
- **可并行**:L2 第一批(前端)与 L1 的 M2(引擎)在代码上不重叠;L3 的 B0–B3 与 L1、L2 都不重叠。
- **必须串行**:M3 的确认卡要在 M2 的事件流之后;M4 要等 B5;B2(拆库)与 A3.7(会话落库)不要同时动表结构,按 ADR-0008 的表清单为准。
- **契约单点**:`contracts/` 与 `docs/spec/` 同一时间只由一条线改,改完跑 `pnpm verify`。
## 7 风险
| 风险 | 影响 | 对策 |
| --- | --- | --- |
| 模型额度或端点不可用 | M2 卡住 | 引擎接口与 FakeRuntime 先行(M1 已完成大半),真引擎可后置 |
| 界面迁移按 main 原样抄 | 契约不匹配要返工 | 第一批只搬壳与三个视图,用真数据验证 provider-view 契约 |
| APS 搬迁把旧包袱一起带来 | B4/B6 变大 | 按 `docs/spec/platform-vs-business.md` 判据逐项过滤;客户硬编码在 B0 定处置 |
| 并行线同时改契约 | 冲突与返工 | 契约单点负责人;改契约必须四处同步(schema/TS/文档/样例) |
## 8 近期动作(按顺序)
1. A3.1 引擎接口与 RuntimeEvent、A3.2 FakeRuntime 与一致性测试(不依赖任何决策)
2. A2.7 评测集跑通,产出六项指标基线
3. 等 G1、G2 决策,进 M2 真引擎接入
4. 并行启动 L3 的 B0.1/B0.2
5. M1 完成后插 A3.12 前端第一批