画布agent 完善上下文 #101

Merged
kdletters merged 39 commits from editor-agent-more-tools into master 2026-07-28 15:44:05 +08:00
Member
  • 补全完整的工具参数
  • 调整提示词应对一些bad case
  • 把attachment的名称/描述纳入上下文
* 补全完整的工具参数 * 调整提示词应对一些bad case * 把attachment的名称/描述纳入上下文
k88936 added 1 commit 2026-04-16 02:37:50 +08:00
fix: treat unicode with iter instead of length
Project CI / Repository checks (pull_request) Successful in 3m59s
Project CI / Frontend tests (pull_request) Successful in 4m18s
Project CI / Native shell tests (pull_request) Successful in 3m58s
Project CI / Backend tests (pull_request) Successful in 3m14s
f12fe2de32
k88936 added 3 commits 2026-07-21 20:32:41 +08:00
adjust system prompt
Project CI / Native shell checks (pull_request) Successful in 4m41s
Project CI / Repository checks (pull_request) Failing after 29s
Project CI / Backend checks (pull_request) Failing after 38s
be3fe47187
k88936 added 1 commit 2026-07-22 10:18:13 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Backend tests (pull_request) Failing after 21s
Project CI / Frontend tests (pull_request) Failing after 21s
Project CI / Repository checks (pull_request) Failing after 21s
Project CI / Native shell tests (pull_request) Failing after 21s
7252913870
k88936 added 1 commit 2026-07-22 10:20:10 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Repository checks (pull_request) Failing after 20s
Project CI / Frontend tests (pull_request) Failing after 20s
Project CI / Backend tests (pull_request) Failing after 20s
Project CI / Native shell tests (pull_request) Failing after 20s
6b496a4daa
k88936 added 1 commit 2026-07-22 10:52:26 +08:00
adjust tool call error message
Project CI / Repository checks (pull_request) Failing after 20s
Project CI / Frontend tests (pull_request) Failing after 20s
Project CI / Backend tests (pull_request) Failing after 20s
Project CI / Native shell tests (pull_request) Failing after 20s
93c872907b
k88936 changed title from 画布agent 支持工具完整的各种参数和前端显示, 完善工具提示词 to 画布agent 支持工具完整的各种参数+前端显示+完善提示词 2026-07-22 11:05:17 +08:00
k88936 added 3 commits 2026-07-22 11:15:12 +08:00
format
Project CI / Frontend tests (pull_request) Failing after 20s
Project CI / Native shell tests (pull_request) Failing after 20s
Project CI / Repository checks (pull_request) Failing after 20s
Project CI / Backend tests (pull_request) Failing after 20s
b11631ce95
k88936 added 1 commit 2026-07-22 11:26:47 +08:00
fix: editor agent adjust tool call to tip user to use the confirm button
Project CI / Frontend tests (pull_request) Successful in 1m35s
Project CI / Repository checks (pull_request) Successful in 2m39s
Project CI / Native shell tests (pull_request) Successful in 6m36s
Project CI / Backend tests (pull_request) Successful in 7m44s
511dd98ed5
k88936 marked the pull request as work in progress 2026-07-22 12:08:40 +08:00
Member

工具参数持久化契约与文档冲突。专题文档:85 (line 85) 要求 args 保存 LLM 返回的原始 JSON;实际代码会补默认值、删除未知字段,并将规范化后的 JSON 写入 tool_call.args。应明确选择“原始参数”或“校验后的规范参数”作为正式契约并同步文档。

工具参数持久化契约与文档冲突。[专题文档:85 (line 85)](/home/dsk/.codex/worktrees/e5b8/Genarrative/docs/【编辑器】画布Agent对话面板-2026-07-03.md:85) 要求 args 保存 LLM 返回的原始 JSON;实际代码会补默认值、删除未知字段,并将规范化后的 JSON 写入 tool_call.args。应明确选择“原始参数”或“校验后的规范参数”作为正式契约并同步文档。
k88936 added 3 commits 2026-07-22 15:01:39 +08:00
fix: editor agent add frontend & backend attachment label normalization, and fallback for display
Project CI / Repository checks (pull_request) Successful in 3m36s
Project CI / Native shell tests (pull_request) Successful in 9m58s
Project CI / Backend tests (pull_request) Failing after 7m10s
Project CI / Frontend tests (pull_request) Failing after 1m23s
e846eb387f
k88936 changed title from WIP: 画布agent 支持工具完整的各种参数+前端显示+完善提示词 to WIP: 画布agent 完善上下文 2026-07-22 15:02:16 +08:00
k88936 marked the pull request as ready for review 2026-07-22 15:04:25 +08:00
k88936 requested review from kdletters 2026-07-22 15:04:30 +08:00
k88936 added 1 commit 2026-07-22 16:38:34 +08:00
fix outdated test
Project CI / Frontend tests (pull_request) Successful in 1m1s
Project CI / Repository checks (pull_request) Failing after 3m7s
Project CI / Native shell tests (pull_request) Failing after 3m46s
Project CI / Backend tests (pull_request) Failing after 7m16s
8b2afb9582
k88936 added 1 commit 2026-07-22 17:30:39 +08:00
fix outdated test
Project CI / Native shell tests (pull_request) Successful in 9m30s
Project CI / Repository checks (pull_request) Failing after 17s
Project CI / Frontend tests (pull_request) Failing after 18s
Project CI / Backend tests (pull_request) Failing after 7m10s
2a81280b56
k88936 added 1 commit 2026-07-22 17:54:07 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Repository checks (pull_request) Successful in 1m51s
Project CI / Backend tests (pull_request) Successful in 3m24s
Project CI / Frontend tests (pull_request) Successful in 32s
Project CI / Native shell tests (pull_request) Successful in 2m30s
90c9813833
k88936 added 2 commits 2026-07-22 19:15:06 +08:00
# Conflicts:
#	src/components/image-editor/EditorAgentConversation/EditorAgentConversationPanelView.tsx
clean: use updated data structure
Project CI / Repository checks (pull_request) Failing after 8s
Project CI / Backend tests (pull_request) Failing after 8s
Project CI / Frontend tests (pull_request) Successful in 1m7s
Project CI / Native shell tests (pull_request) Successful in 3m3s
d8655e829a
k88936 added 1 commit 2026-07-22 19:16:11 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Frontend tests (pull_request) Successful in 38s
Project CI / Repository checks (pull_request) Successful in 2m2s
Project CI / Backend tests (pull_request) Successful in 3m0s
Project CI / Native shell tests (pull_request) Successful in 2m3s
fc09ac0381
Member

[P2] tool_args.rs (line 82) 未把显式 null 规范化为默认值。视频确认卡会省略时长、分辨率、声音,但 api.rs (line 1253) 实际仍按 4s / 720p / sound=on 执行;图片尺寸和音效时长也有同类分叉。

[P2] useConversationAttachments.ts (line 268) 的历史附件引用绕过新标签归一化。历史附件不在当前画布/素材库时,当前界面保留旧标签,后端却持久化规范标签,刷新后标签会突变。

[P2] image_generation_options.rs (line 95) 的 JSON Schema 允许运行时必然拒绝的组合,例如固定 gpt-image-2 的 UI 工具仍允许 0.5K;视频省略默认 Fast 模型时也可搭配 1080p。这些调用会浪费 Agent 修复轮次,严重时达到 max turns。

[P2] 画布 Agent 专题文档 (line 76) 没有同步记录附件 label 的 24 码点限制、字符过滤、不可信 LLM description 边界及前后端二次归一化规则。

[P2] [tool_args.rs (line 82)](/home/dsk/.codex/worktrees/4bff/Genarrative/server-rs/crates/api-server/src/editor_agent/tool_args.rs:82) 未把显式 null 规范化为默认值。视频确认卡会省略时长、分辨率、声音,但 [api.rs (line 1253)](/home/dsk/.codex/worktrees/4bff/Genarrative/server-rs/crates/api-server/src/editor_agent/api.rs:1253) 实际仍按 4s / 720p / sound=on 执行;图片尺寸和音效时长也有同类分叉。 [P2] [useConversationAttachments.ts (line 268)](/home/dsk/.codex/worktrees/4bff/Genarrative/src/components/image-editor/EditorAgentConversation/useConversationAttachments.ts:268) 的历史附件引用绕过新标签归一化。历史附件不在当前画布/素材库时,当前界面保留旧标签,后端却持久化规范标签,刷新后标签会突变。 [P2] [image_generation_options.rs (line 95)](/home/dsk/.codex/worktrees/4bff/Genarrative/server-rs/crates/platform-editor-agent/src/agent/tools/image_generation_options.rs:95) 的 JSON Schema 允许运行时必然拒绝的组合,例如固定 gpt-image-2 的 UI 工具仍允许 0.5K;视频省略默认 Fast 模型时也可搭配 1080p。这些调用会浪费 Agent 修复轮次,严重时达到 max turns。 [P2] [画布 Agent 专题文档 (line 76)](/home/dsk/.codex/worktrees/4bff/Genarrative/docs/【编辑器】画布Agent对话面板-2026-07-03.md:76) 没有同步记录附件 label 的 24 码点限制、字符过滤、不可信 LLM description 边界及前后端二次归一化规则。
k88936 added 5 commits 2026-07-23 13:22:04 +08:00
fix: editor agent llm resp treat null as missing
Project CI / Frontend tests (pull_request) Successful in 35s
Project CI / Repository checks (pull_request) Successful in 1m4s
Project CI / Native shell tests (pull_request) Successful in 2m33s
Project CI / Backend tests (pull_request) Successful in 3m8s
80673c6f87
k88936 added 1 commit 2026-07-23 14:33:13 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Frontend tests (pull_request) Successful in 34s
Project CI / Repository checks (pull_request) Successful in 46s
Project CI / Native shell tests (pull_request) Successful in 2m20s
Project CI / Backend tests (pull_request) Successful in 4m3s
2fdbb3c280
k88936 added 1 commit 2026-07-23 15:07:04 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Backend tests (pull_request) Failing after 58s
Project CI / Repository checks (pull_request) Successful in 51s
Project CI / Frontend tests (pull_request) Successful in 1m26s
Project CI / Native shell tests (pull_request) Successful in 2m24s
b2139c5dad
k88936 added 1 commit 2026-07-23 15:43:58 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Frontend tests (pull_request) Successful in 35s
Project CI / Repository checks (pull_request) Successful in 50s
Project CI / Native shell tests (pull_request) Successful in 2m35s
Project CI / Backend tests (pull_request) Successful in 4m9s
1a75ff848e
k88936 added 2 commits 2026-07-23 18:48:27 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Repository checks (pull_request) Successful in 1m47s
Project CI / Frontend tests (pull_request) Successful in 1m53s
Project CI / Backend tests (pull_request) Successful in 2m55s
Project CI / Native shell tests (pull_request) Successful in 4m26s
cd4f7b782f
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
k88936 added 2 commits 2026-07-24 17:48:59 +08:00
fix: restrict image_generation_options to module scope
Project CI / Frontend tests (pull_request) Successful in 2m16s
Project CI / Native shell tests (pull_request) Successful in 2m36s
Project CI / Backend tests (pull_request) Successful in 3m29s
Project CI / Repository checks (pull_request) Failing after 27s
b06ccbb9db
k88936 added 1 commit 2026-07-24 18:10:05 +08:00
format
Project CI / Repository checks (pull_request) Successful in 1m43s
Project CI / Frontend tests (pull_request) Successful in 1m58s
Project CI / Native shell tests (pull_request) Successful in 3m16s
Project CI / Backend tests (pull_request) Successful in 4m3s
323c5ef9ed
kdletters requested changes 2026-07-24 20:14:44 +08:00
Dismissed
kdletters left a comment
Member

P2:工具 JSON Schema 仍暴露运行时会拒绝的组合。
generate-ui-design 固定 gpt-image-2,但 image_size schema 仍允许 0.5K;运行时 validate_image_generation_options 会拒绝 gpt-image-2 + 0.5K。视频工具也仍允许省略 model 时选 1080p,但省略后默认 seedance2.0-fast,运行时会拒绝 fast + 1080p。
证据:generate_ui_design.rs (line 53)image_generation_options.rs (line 93)generate_video.rs (line 120)

P2:显式 null 的文档契约仍与实现相反。
实现/测试已经把顶层显式 null 当成省略字段处理并落默认值,但专题文档仍写“显式 null 视为非法参数”。
证据:画布Agent文档 (line 88)tool.rs (line 197)tool.rs 测试 (line 1299)

P2:工具 JSON Schema 仍暴露运行时会拒绝的组合。 generate-ui-design 固定 gpt-image-2,但 image_size schema 仍允许 0.5K;运行时 validate_image_generation_options 会拒绝 gpt-image-2 + 0.5K。视频工具也仍允许省略 model 时选 1080p,但省略后默认 seedance2.0-fast,运行时会拒绝 fast + 1080p。 证据:[generate_ui_design.rs (line 53)](/data/dsk/.codex/worktrees/4bff/Genarrative/server-rs/crates/platform-editor-agent/src/agent/tools/generate_ui_design.rs:53)、[image_generation_options.rs (line 93)](/data/dsk/.codex/worktrees/4bff/Genarrative/server-rs/crates/platform-editor-agent/src/agent/tools/image_generation_options.rs:93)、[generate_video.rs (line 120)](/data/dsk/.codex/worktrees/4bff/Genarrative/server-rs/crates/platform-editor-agent/src/agent/tools/generate_video.rs:120)。 P2:显式 null 的文档契约仍与实现相反。 实现/测试已经把顶层显式 null 当成省略字段处理并落默认值,但专题文档仍写“显式 null 视为非法参数”。 证据:[画布Agent文档 (line 88)](/data/dsk/.codex/worktrees/4bff/Genarrative/docs/【编辑器】画布Agent对话面板-2026-07-03.md:88)、[tool.rs (line 197)](/data/dsk/.codex/worktrees/4bff/Genarrative/server-rs/crates/api-server/src/editor_agent/tool.rs:197)、[tool.rs 测试 (line 1299)](/data/dsk/.codex/worktrees/4bff/Genarrative/server-rs/crates/api-server/src/editor_agent/tool.rs:1299)。
kdletters added this to the 美术Agent project 2026-07-24 20:16:59 +08:00
Author
Member

P2:工具 JSON Schema 仍暴露运行时会拒绝的组合。
generate-ui-design 固定 gpt-image-2,但 image_size schema 仍允许 0.5K;运行时 validate_image_generation_options 会拒绝 gpt-image-2 + 0.5K。视频工具也仍允许省略 model 时选 1080p,但省略后默认 seedance2.0-fast,运行时会拒绝 fast + 1080p。
证据:[generate_ui_design.rs (line 53)]

我整个喂给模型的提示词是例如这样的:

                "resolution": { "type": "string", "enum": GenerateVideoTool::SUPPORTED_RESOLUTIONS, "default": GenerateVideoTool::DEFAULT_VIDEO_RESOLUTION, "description": "视频分辨率;seedance2.0-fast 仅支持 480p、720p。" },

在每个说明的地方加上了特殊的要求,我认为这是的最简洁的方式了,如果把所有模型x分辨率排列组合出来太多太乱,而且还一样是软的约束,还要运行时的检查兜底
我觉得这个应该忽略

> P2:工具 JSON Schema 仍暴露运行时会拒绝的组合。 > generate-ui-design 固定 gpt-image-2,但 image_size schema 仍允许 0.5K;运行时 validate_image_generation_options 会拒绝 gpt-image-2 + 0.5K。视频工具也仍允许省略 model 时选 1080p,但省略后默认 seedance2.0-fast,运行时会拒绝 fast + 1080p。 > 证据:[generate_ui_design.rs (line 53)] 我整个喂给模型的提示词是例如这样的: ```json "resolution": { "type": "string", "enum": GenerateVideoTool::SUPPORTED_RESOLUTIONS, "default": GenerateVideoTool::DEFAULT_VIDEO_RESOLUTION, "description": "视频分辨率;seedance2.0-fast 仅支持 480p、720p。" }, ``` 在每个说明的地方加上了特殊的要求,我认为这是的最简洁的方式了,如果把所有模型x分辨率排列组合出来太多太乱,而且还一样是软的约束,还要运行时的检查兜底 我觉得这个应该忽略
k88936 added 1 commit 2026-07-27 10:23:35 +08:00
update doc
Project CI / Backend tests (pull_request) Failing after 8s
Project CI / Repository checks (pull_request) Failing after 8s
Project CI / Native shell tests (pull_request) Successful in 2m12s
Project CI / Frontend tests (pull_request) Successful in 1m41s
6f2fde8517
k88936 added 1 commit 2026-07-27 10:24:20 +08:00
Merge remote-tracking branch 'origin/master' into editor-agent-more-tools
Project CI / Repository checks (pull_request) Successful in 1m56s
Project CI / Frontend tests (pull_request) Successful in 1m52s
Project CI / Native shell tests (pull_request) Successful in 2m42s
Project CI / Backend tests (pull_request) Successful in 3m32s
7f8abe02ea
k88936 requested review from kdletters 2026-07-27 15:22:03 +08:00
kdletters requested changes 2026-07-28 11:47:06 +08:00
Dismissed
kdletters left a comment
Member

generate-ui-design 不是复杂组合问题,它固定 gpt-image-2,但 schema 仍给 image_size 暴露 0.5K。这可以用一个固定工具专用的 ["1K", "2K"] schema 解决,不需要铺开模型矩阵。

视频也不是必须枚举所有模型组合。现在已有 allOf/if/then,问题只是 if 写了 required: ["model"],导致“省略 model”时不会触发 fast 限制;但运行时省略后又默认 fast。也就是说这是 schema 默认值语义没对齐,不是“必须做很复杂的组合表”。

description 对 LLM 是提示,enum/if/then 对工具调用是结构约束。既然代码已经在用 schema 限制枚举,那“schema 允许但 runtime 必拒”的组合还是会浪费工具修复轮次;作者的解释能说明取舍意图,但没消除实际不一致。

generate-ui-design 不是复杂组合问题,它固定 gpt-image-2,但 schema 仍给 image_size 暴露 0.5K。这可以用一个固定工具专用的 ["1K", "2K"] schema 解决,不需要铺开模型矩阵。 视频也不是必须枚举所有模型组合。现在已有 allOf/if/then,问题只是 if 写了 required: ["model"],导致“省略 model”时不会触发 fast 限制;但运行时省略后又默认 fast。也就是说这是 schema 默认值语义没对齐,不是“必须做很复杂的组合表”。 description 对 LLM 是提示,enum/if/then 对工具调用是结构约束。既然代码已经在用 schema 限制枚举,那“schema 允许但 runtime 必拒”的组合还是会浪费工具修复轮次;作者的解释能说明取舍意图,但没消除实际不一致。
k88936 added 1 commit 2026-07-28 12:03:32 +08:00
art agent: enforce json schema
Project CI / Backend tests (pull_request) Failing after 11s
Project CI / Repository checks (pull_request) Failing after 11s
Project CI / Frontend tests (pull_request) Successful in 1m32s
Project CI / Native shell tests (pull_request) Successful in 1m57s
2b31d5e16e
k88936 added 1 commit 2026-07-28 12:06:12 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Repository checks (pull_request) Successful in 1m4s
Project CI / Frontend tests (pull_request) Successful in 1m59s
Project CI / Native shell tests (pull_request) Successful in 2m28s
Project CI / Backend tests (pull_request) Successful in 3m3s
3d0adb7a54
k88936 requested review from kdletters 2026-07-28 12:10:06 +08:00
k88936 added 1 commit 2026-07-28 15:27:46 +08:00
Merge branch 'master' into editor-agent-more-tools
Project CI / Repository checks (pull_request) Successful in 1m9s
Project CI / Frontend tests (pull_request) Failing after 37s
Project CI / Native shell tests (pull_request) Successful in 2m29s
Project CI / Backend tests (pull_request) Successful in 3m8s
95a2ac24e6
k88936 added 1 commit 2026-07-28 15:40:35 +08:00
fix merge err
Project CI / Repository checks (pull_request) Successful in 1m11s
Project CI / Frontend tests (pull_request) Successful in 2m15s
Project CI / Native shell tests (pull_request) Successful in 2m46s
Project CI / Backend tests (pull_request) Successful in 3m27s
c618ad79eb
kdletters scheduled this pull request to auto merge when all checks succeed 2026-07-28 15:43:15 +08:00
kdletters approved these changes 2026-07-28 15:43:46 +08:00
kdletters merged commit 66a8b7f597 into master 2026-07-28 15:44:05 +08:00
kdletters deleted branch editor-agent-more-tools 2026-07-28 15:44:05 +08:00
Sign in to join this conversation.