feat(canvas): 云端 Agent - 完成策略分层、节点能力注册与可解释审批改造

This commit is contained in:
ddCat
2026-09-14 17:58:21 +08:00
parent 4b0e9d8965
commit 01486872c4
65 changed files with 5347 additions and 918 deletions

View File

@@ -5,6 +5,21 @@ description: 当前项目已实现功能的手工验证清单与未确认边界
# 待测试
## 云端 Agent 行为、能力和偏好分层(待真实环境验收)
- [x] 系统/媒体行为资源由后端发布物加载,运行快照记录策略和能力版本/哈希;用户 → 项目 → 画布偏好经归属校验和独立 revision CAS,合并 revision 固定到新轮次,旧轮次保留原快照。system prompt 只注入偏好清单,正文由 `agent_profile_read` 从固定快照按层读取。工具 schema、节点类型、可写字段和画布读取来自服务端节点能力 registry;收费生成还需实际媒体任务适配器。写入、审批与预算仍以服务端强校验为准。
- [x] 数据库 append-only 迁移 v15 为关闭自动迁移的部署创建 `agent_profiles`;OpenAPI、功能清单、代码地图和数据库文档已同步。相关 Go 专项测试与前端构建结果以本次交付记录为准。
- [x] 图片 / 视频 / 音频能力描述符允许更新标题和下一版提示词草稿,`content` 经字段合同映射到 `metadata.composerContent`;服务端回归测试覆盖失败视频节点,确认媒体结果、已提交 `prompt`、任务状态和引用问题不被覆盖。前端手工编辑与引用同步也已收敛到统一提示词写入器,纯函数测试覆盖三种媒体、空草稿、仅 storageKey 图片和文本节点。
- [x] 终态旧 Capability 轮次可作为不可变历史创建当前合同的新轮,父运行保持原始 JSON;旧合同活动运行会明确终止,不恢复模型或工具执行。历史结构损坏改为 409,不再落成通用 500。客户端提交错误区分服务端明确失败和未收到响应。
- [x] 审批预览与实际画布写入共用解析/校验/规划路径并固定 `callHash`;审批卡和 `canvas_updated.actions` 均携带节点标题、类型、修改字段、修改后标题及引用连线两端。解释信息不授权能力,执行仍校验归属、快照、Capability、锁和预算。
- [ ] 在备份后的隔离 PostgreSQL 部署执行 `migrate-schema up` 和 `migrate-schema verify`,确认 v14→v15 后原有 Agent 轮次可查,新用户/项目/画布偏好能独立更新且不串账号。
- [ ] 在真实登录态检查偏好编辑、并发冲突、三层继承、SSE 重连及续聊:修改偏好后新轮次使用新版本,旧轮次历史保持原样;试图在偏好中要求越权工具、跳过审批、任意 URL 或提升预算应被服务端拒绝。
- [ ] 使用真实模型、计费与画布验证 read_only / request_approval / auto、节点精读/分页和 image/video/audio 生成的审批、收费限额、引用边界与失败恢复。静态测试不等于生产验收;系统策略 md 当前不是后台热更新。
- [ ] 在真实画布分别选择失败和已完成的图片 / 视频 / 音频节点,让 Agent 修改标题与下一版提示词:编辑框应显示新草稿,旧媒体仍可预览或播放,已提交提示词、任务状态和引用状态保持不变;刷新后结果一致。
- [ ] 对锁定媒体节点执行同类更新应被拒绝;尝试经 Agent 修改媒体 URL、`storageKey`、任务字段或其他未登记 metadata 也应被服务端拒绝,不能因 `content` 草稿别名扩大写权限。
- [ ] 更新后重启本地后端,用调试包中的已完成父轮次 `ag045cb29d5cebb44cb42cedb235d2fc5a` 续发“继续操作”:应创建当前 Capability 合同的新轮,不再返回“系统处理失败”;父轮次状态和冻结合同保持不变。
- [ ] 在真实审批和执行结果中确认:更新节点显示执行前名称、节点类型、修改字段和修改后名称;新增连线显示来源与目标标题/类型,点击可定位对应节点;普通 UI 不暴露完整内部 ID。
## Agent 增量联动与可点击操作留痕
- 服务端将草稿、提交和媒体成功 / 失败 / 取消的节点增量与运行检查点一起持久化;前端 40ms 合批投影,不按每条完成 / 失败事件全量刷新。缺口、断流或冲突才单请求校准,发起间隔至少 1 秒,期间重复通知仅保留一次尾随校准。
@@ -41,7 +56,7 @@ description: 当前项目已实现功能的手工验证清单与未确认边界
- [ ] Agent 工具调用后的下一轮模型请求:Chat Completions 的 `tool_calls` 补齐 `type: "function"`,Claude 保留 `tool_use`;真实渠道连续调用与失败任务重新发起待验收。
- [ ] 后端重启窗口内读取已加入 Skills:对 5xx 做最多 3 次有限重试,恢复后清除旧错误卡;裸代理 502 不再展示 Axios 英文错误。需在重启后端期间打开 Agent 面板确认自动恢复且不污染对话。
- [ ] Skills 工具回归:空目录显示“无可读参考文件”,实际读取显示技能名与路径;失败事件不再出现成功摘要。同一轮同技能同路径的重复请求被拒绝,并引导使用历史结果 / 已加载正文;刷新恢复后仍保留去重状态。
- [ ] Skills 工具回归:目录始终列出固定快照入口 `SKILL.md`,Agent 先读入口再读取必要 reference;实际读取显示技能名与路径,失败事件不再出现成功摘要。同一轮同技能同路径的重复请求被拒绝,并引导使用历史结果;刷新恢复后仍保留去重状态。技能正文不整段进入 system prompt,入口中的未知工具名不能突破本轮工具清单。
- [ ] 模型断连回归:连接重置、超时、拒绝连接显示安全分类和模型任务 ID,未知错误仍引导任务中心排查;不向聊天面板暴露原始上游地址或密钥。不自动重试或恢复旧失败运行。
- [x] Skills 反馈专项:前端 19 项工具摘要 / 错误语义 / 审批与布局测试通过,前端构建通过;后端 `TestCloudAgent` 专项通过,覆盖空目录、重复路径持久化、不同技能与文件隔离、缺失文件反馈,以及模型失败事件与脱敏。未调用真实模型或重启现有服务,真实浏览器验收仍待完成。
- `/api/agent` 已注册能力、创建、追加消息、读取、取消、审批与事件流路由;一条消息对应一个持久化 `canvas_text` 任务,`cloud_agent_executions` 保存模型循环、工具、审批和事件状态,复用现有 Worker 与扣费事务。