PRA-only-demo/docs/next-work-plan.md

6.2 KiB
Raw Blame History

RPA 迁移后续工作完整清单(2026-11-06 定稿)

前提:阶段 0 前置作业 + 阶段 1 收口 + 本仓库代码活已 100% 完成(含 C# actuate 原型、A++ 字段、NodeState 两态)。本清单是"接下来做什么"的唯一权威账本,按可动性分四档。更新规则:完成一项就划掉并记提交号;新工作先进"待评估"再入档。

三个"不知道"的设计提案(已定稿,发对面确认即可,不再阻塞)

提案 1(原 Q1):平台字段怎么表达

对面 plugin-contract 的 CapabilityDefinition 增可选字段 platforms?: readonly ("win32"|"darwin"|"linux")[]:

  • 缺省 = 全平台——旧插件清单不加字段,零破坏;
  • assertPluginManifest 校验值域,未知平台值直接拒绝;
  • plugin-worker 认领动作时按宿主 process.platform 过滤,不匹配的能力对宿主不可见;
  • RPA 插件清单不手工维护:rpa-adapter 从 rpa-core catalog 的 platformTag 自动生成(687 win32 / 326 null 单一事实源)。

提案 2(原 Q2):utilityExtended 权限归属

utilityExtended 在对面源码中无同名物(纯 RPA 侧能力域)。映射到对面 13 项 PermissionScope 的 desktop.process:

  • 理由:RPA 命令执行发生在用户电脑 Electron 宿主进程内,"宿主即桌面进程",与 desktop.process 语义吻合;
  • 该域全部标 highImpact + idempotencyRequired(走审批,与 ADR-R1/R6 一致);
  • 备选:若对面坚持 desktop.process 严格指"桌面进程管理",则新增 desktop.command scope(对面 plugin-contract 加一个 union 成员 + Set 一行)。

提案 3:晨间助手截图时机 —— 已搁置(2026-11-06 用户拍板,不再作为工作项)

不设专门时机,若未来重启则全挂既有证据节奏:observe 基线 + 人审弹窗前证据 + actuate 动作后自动双证据。当前不要求对面任何配合。

提案 4:rpa.browser 备案单(发给对面即可登记)

项 值
pluginId rpa.browser
capabilities rpa.flow.execute(RPA 流程整体入口,方案 A)
runner 双 runner:对面 PlaywrightBrowserRunner(AI 智能体场景)+ 我方 CDP 接管(RPA 场景主力,ADR-R4)
PermissionScope browser.domain(白名单复用对面 BrowserContextPolicy 三重复检)+ filesystem.download(下载类流程)
manifest 类型 browser 能力按对面现行 browser-plugin 口径(域名白名单强校验)
证据 snapshot/截图走对面证据体系(SHA-256 落盘),不自建

第一档:本周就能做(不依赖对面)

  • W1 发提案包:上面 4 个提案 + 6 项 ADR 结论,一条消息发对面负责人,等书面确认(Q1/Q2 提案已写入 V2 §10)
  • W2 C# actuate 合入对面主干:已完成(2026-11-06,对面 b646d4d9)——三新文件+Program.cs 分发改造+RunnerResponse 可选字段;dotnet build 0w0e;零桌面冒烟 5 例全过(policy_invalid/desktop_session_mismatch/window_not_found/observe 回归/request_invalid);document-facts 刷新 10 区块 factRevision=2026-11-06.2;ci-gate fast 仅余 opencode fork 漂移旧账
  • W3 rpa.browser 侧准备:已完成(2026-11-06,本仓库 08e798c + 对面 440f7f4f)——①transport 单命令超时(默认 30s,稳定码 timeout,pending 不再泄漏);②selectorOf 三份重复定义收敛为 src/main/browser/selector.ts(键并集补 uiWindowSelector;browser-common 位置感知版有意保留);宿主 49/49+引擎 32/32 全绿

第二档:等对面书面确认后立即动(预计 1-2 天内解锁)

  • W4 git subtree 迁包:已完成(2026-11-06,对面 8085ff47+4e345304)——rpa-core → code/backend/packages/rpa-core(@agent-worker/rpa-core),测试按对面规范移 test/,48/48 全绿;feat/rpa-core-migration 共 5 笔提交(含 attempt 831e25f9、actuate b646d4d9、transport 440f7f4f)已推远端,待主控审核
  • W5 rpa-adapter 骨架(对面仓库新建):CapabilityRunner(gateway.execute → ref→componentId → RunContext → handler)+ 权限映射表(34 域 × 13 scope,utilityExtended→desktop.process)+ 状态映射直接 import 本方 toStepStatus() + 719 能力"未经 authorize 不得触达 handler"全量冒烟
  • W6 platform 字段实现(对面 plugin-contract):按提案 1,registry 校验 + worker 过滤 + 契约测试

第三档:阶段 3+(前置:W4/W5 完成)

  • W7 垂直切片:1 文件能力 + 1 HTTP 能力全链(create/start → authorize → adapter → handler → 事件/证据回传 → 中途取消);Run 终态与 RunResult 一致性断言
  • W8 A++ 检查点最小验证:崩溃 → resumeToken 重入 → 幂等键去重(checkpointId/idempotencyKey 已定稿,只差实现)
  • W9 双 ADR 落地:R4 浏览器(W3 产物接对面白名单)+ R3 桌面(W2 产物接 TS 宿主适配器——actuate 前先 observe 解析精确标题)
  • W10 TS 宿主 actuate 适配器:native-observer.ts 扩展(请求侧精确标题解析、响应侧证据逐项复核、宿主超时 ≥15s)

第四档:规模化与收尾(阶段 5/6)

  • W11 34 域分批接入:files/data/http/ftp → office/excel/word → desktop/utility 高影响(末批 + 审批矩阵抽查)
  • W12 ocr-smoke 素材治理(迁移时必做,非可选):素材入库 test-fixtures/ocr/ + evidenceDir 改 os.tmpdir()——硬编码 D:/office-test2 在对面机器必然失效
  • W13 平台扩展:Linux/macOS 驱动按 ADR-R3 原生通道(阶段 6)
  • W14 demo 侧冻结:本 demo 仓库转入只读维护

挂账小项(低优先)

  • 晨间助手截图时机:已搁置(2026-11-06 用户拍板),见提案 3 说明
  • .workbuddy/tmp/actuate-build 编译沙盒:留作 W2 合入前复验环境,合入后可删

里程碑对照

里程碑 依赖 预计解锁
Q1/Q2/备案 书面确认 W1 第二档全部
对面仓库可提交 W1 W2/W4/W5/W6
垂直切片全链绿 W4-W7 阶段 4(W8-W10)
高影响域过审批矩阵 W11 阶段 5 完成即"接入就绪"