Fix/画布agent优化 #121
Reference in New Issue
Block a user
Delete Branch "fix/artagent-rerefine-prompt"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
主要改善:
fix:
Fix/artagent rerefine promptto Fix/画布agent优化结论:请求修改。已按 master
b512430e/ head2987a4c6审查;当前 4 项 CI 全绿,但仍有以下合并阻塞。[P1] 长对话会丢失可编辑图片的真实 image_id
server-rs/crates/platform-editor-agent/src/agent/prompt.rs:40-51删除了从完整历史补入最近完成图片上下文的逻辑,只保留最近 18 条 raw message。build_tool_context虽仍扫描全量图片,但该映射不会发给 LLM。生成图之后若经过 18 条以上非图片消息,再说“把上一张/之前那张改成蓝色”,模型看不到合法的sha256:*,无法构造edit-image.object_image_id。请保留有界图片候选上下文并明确“本轮显式附件优先”,而不是直接删除;同时恢复长对话回归测试。[P2] 底层前端 hook 仍允许纯附件请求
src/components/image-editor/EditorAgentConversation/useEditorAgentConversation.ts:451-461的门禁仍是(!text && !attachments.length),所以sendMessage('', [attachment])会继续请求已改为必定拒绝它的后端。useEditorAgentConversation.test.tsx:797-834还明确断言旧行为。面板按钮禁用只能保护当前 UI 入口;请把 hook 门禁改为!text即返回,并把该测试改为断言 client 未调用。[P2] “并行”提示与真实串行执行契约冲突
platform-editor-agent/src/agent/prompt.rs:26-27要求“尽量并行/提高并行度”,但 harness 在run.rs中逐项 await,测试也锁定数组顺序串行;decision-log.md:4573与pitfalls.md:3293仍明确要求 prompt 不宣称并发。请改为“无依赖调用可在同一tool_calls[]批量提交,后端按数组顺序执行”;有前后依赖、需要前一结果 image_id 的操作不能放进同一批。[P2] 公共 system prompt 拼接缺少分隔
server-rs/crates/platform-agent-harness/src/prompt.rs:34-38连续push_str没有换行,最终会形成inside)we will...dependency)Valid...response.- edit-image。这破坏了发给模型的工具协议结构。请补齐空格/换行,并恢复对最终 prompt 形状、串行语义和无工具形状的测试。[P2] 规划轮次从 3 改到 8,但权威契约仍是 3
server-rs/crates/api-server/src/editor_agent/api.rs:263改为.max_turns(8),而docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md:84仍写“最多 3 轮规划”,项目踩坑记录也明确不要用提高轮次掩盖终止问题。非法 JSON/无效工具现在最多会多发 5 次 completion,改变失败延迟和 provider 用量。请恢复 3,或同步权威文档、预算说明和配置级测试。[P2] 关键契约测试和提交历史不符合仓库门禁
本 PR 删除了 harness 的 3 个 prompt contract tests 和 editor-agent 的 4 个 prompt/image-context tests;新增 invalid-JSON 纠正流程却没有行为测试,上述第 1/3/4 项因此没有被挡住。请补回相应语义级回归测试。另 base..head 的提交标题多数为英文或中英混合、正文均为空,不符合仓库“中文标题 + 每项变更逐行正文”规则,请整理提交历史。
复核验证:
platform-agent-harness20/20、platform-editor-agent17/17、module-editor-agent3/3,前端面板 + hook 40/40 均通过;这些通过结果同时确认当前测试仍锁定了纯附件 hook 的旧契约。git diff --check通过,临时 worktree 已清理。第一条我的做法是让llm提示用户重新引用:
复审结论:仍需修改。已按最新 master
a36290b2/ heada54f5233重审;4 项 CI 全绿、无冲突。上一轮以下意见已清除:纯附件 hook 已修复;system prompt 分隔和 invalid-JSON 行为测试已补;
max_turns已恢复 3;“历史超出 18 条窗口时请求用户重新引用”是作者明确选择,本轮按该产品取舍接受,不再要求恢复latestGeneratedImage。当前仍有 4 项阻塞:
[P1] 对话里说“确认/取消”可能重复创建付费工具调用
server-rs/crates/platform-editor-agent/src/agent/prompt.rs:17-29把基线中“当前消息是在确认/取消匹配的 pending 调用时,引导点击已有卡片按钮、不得重复提交”的规则整体注释掉了;当前有效提示词反而在 29 行要求直接发起工具调用。普通消息 POST 不会确认或取消旧工具卡,只有卡片接口能改变旧调用。模型若针对“确认/可以/取消”重新发出同一工具,会生成另一个 messageId;确认 dedupe key 又包含 messageId,因此两个卡片可分别入队、分别扣费。请恢复只针对匹配 pending 调用的按钮路由和禁止重复提交规则,同时保留 27-28 行“cancelled 不再处理、pending 不阻塞无关新请求”的新语义。[P1] 内部会议记录链接进入生产源码
server-rs/crates/platform-editor-agent/src/agent/prompt.rs:17提交了内部飞书会议记录 URL,并把被临时停用的提示词整段留成注释。仓库绝对约束禁止提交会话记录;资源 token 也不应写进源码历史。请删除该链接和临时死注释,用不包含内部资源标识的正式注释/决策文档说明最终规则。[P2] 业务提示仍宣称并行,和 runner 串行契约冲突
同文件第 30 行仍写“多次(尽量并行)调用”,但 harness 在
run.rs中逐项 await,公共 prompt 明确 sequential,decision-log.md:5661也规定业务 prompt 不得宣称并发。第 31 行虽限制“无依赖”,仍没有消除前一行的并发承诺。请统一成“同一回复批量列出无依赖调用,运行时按数组顺序执行”,不要使用“并行”。[P2] 画布业务 prompt 契约测试和提交门禁仍未闭环
公共 harness 测试已恢复,但
platform-editor-agent/src/agent/prompt.rs原有的业务 prompt/image-context 测试仍被整体删除,因此第 1/3 项在 CI 中仍是绿的。请至少补回 pending 确认/取消、cancelled 后新调用、无依赖批量但串行、窗口外重新引用、工具路由策略的契约测试。另当前 PR 提交标题仍大量为英文或中英混合,所有提交正文为空,不符合仓库“中文标题 + 每项变更逐行正文”规则,请整理历史。验证:
platform-agent-harness24/24、platform-editor-agent17/17、api-server editor_agent32/32、前端面板 + hook 40/40 全部通过,git diff --check通过;这些结果确认现有测试门禁通过,但不覆盖上述业务 prompt 语义。临时 worktree 已清理。a54f5233a9to3ca96c4cca复审结论:功能阻塞已全部清除,当前仅剩提交历史门禁,仍需一次小修。
已确认修复:
max_turns=3保持正确。剩余问题:
[P2] 请移除英文、空正文的 merge commit,并 rebase 到最新 master
当前 PR tip
81911ffb是Merge remote-tracking branch 'origin/master' into fix/artagent-rerefine-prompt,正文为空,不符合仓库“中文标题 + 每项变更逐行正文”规则。其余 5 个功能提交已经是中文标题并有逐行正文,符合要求。审查期间 master 又从该 merge commit 的第二父节点0386a5df前移到93ed7f2c(“将每日免费泥点纳入后台配置”)。请直接把这 5 个功能提交 rebase 到最新 master 后 force-push,不要再生成 merge commit;CI 重新全绿后即可批准。验证:
platform-agent-harness:24/24platform-editor-agent:23/23api-server editor_agent:32/32git diff --check:通过New commits pushed, approval review dismissed automatically according to repository settings