fix(agent): Agent 工具 - 收敛能力描述并同步节点断言
PR: #713 PR 标题: fix(agent): 分镜绑定 - 明确连线方向并提供字段纠正提示 压缩画布操作工具描述并同步节点注册表断言,避免工具契约与实际能力数量不一致。 Co-authored-by: ddcat666 <26564566+ddcat666@users.noreply.github.com>
This commit is contained in:
@@ -620,7 +620,7 @@ func TestCloudAgentToolLoopPersistsApprovalAndAppliesCanvasWrite(t *testing.T) {
|
|||||||
func TestCloudAgentNodeTypesExposeExecutableAllowList(t *testing.T) {
|
func TestCloudAgentNodeTypesExposeExecutableAllowList(t *testing.T) {
|
||||||
result := cloudAgentNodeTypes()
|
result := cloudAgentNodeTypes()
|
||||||
nodes, ok := result["nodes"].([]map[string]any)
|
nodes, ok := result["nodes"].([]map[string]any)
|
||||||
if !ok || len(nodes) != 9 {
|
if !ok || len(nodes) != 10 {
|
||||||
t.Fatalf("unexpected node registry: %#v", result)
|
t.Fatalf("unexpected node registry: %#v", result)
|
||||||
}
|
}
|
||||||
var character map[string]any
|
var character map[string]any
|
||||||
|
|||||||
@@ -266,7 +266,7 @@ func compileCloudAgentTools(req CloudAgentRequest, includeProfileTool bool) []ma
|
|||||||
{"properties": map[string]any{"type": map[string]any{"const": "connect_nodes"}}, "required": []string{"fromNodeId", "toNodeId"}},
|
{"properties": map[string]any{"type": map[string]any{"const": "connect_nodes"}}, "required": []string{"fromNodeId", "toNodeId"}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
add("canvas_apply_ops", "创建空白节点、编辑或连线,不生成、不收费;先读画布传 snapshotHash。生成用 generate_media。每次最多20项,禁止删除、任意 metadata 和媒体 URL。操作必填字段见 schema;add_node 可用 x/y 定位,省略时自动排位;update_node 按节点能力填写 patch,可用 x/y 移动或设置视频首尾帧。镜头绑定示例:{\"fromNodeId\":\"<资产ID>\",\"toNodeId\":\"<分镜ID>\",\"toHandleId\":\"row:<rowId>\"};输出示例:{\"fromNodeId\":\"<分镜ID>\",\"toNodeId\":\"<图片/视频ID>\",\"fromHandleId\":\"row:<rowId>\"}。rowId 必须取自读取结果,不是镜头编号;整表引用用 storyboard:context。连线是生成输入关系,不会改变已提交任务的输入;来源须 canSource,目标须 canTarget 且接受来源 inputKind,能力以注册表为准。批量排位用 canvas_arrange_nodes。", map[string]any{"snapshotHash": str("canvas_get_state返回的snapshotHash"), "ops": map[string]any{"type": "array", "maxItems": 20, "items": opItem}}, "snapshotHash", "ops")
|
add("canvas_apply_ops", "创建空白节点、编辑或连线;先读画布传 snapshotHash,生成用 generate_media。每次最多20项,禁止删除、任意 metadata 和媒体 URL。必填字段见 schema;add_node 可用 x/y,省略自动排位;update_node 按能力填 patch,可用 x/y 或视频首尾帧。镜头绑定示例:资产→分镜 {\"toHandleId\":\"row:<rowId>\"};输出示例:分镜→图片/视频 {\"fromHandleId\":\"row:<rowId>\"};rowId 取读取结果,不是镜头编号;整表用 storyboard:context。连线不会改变已提交任务的输入;来源须 canSource,目标须 canTarget 且接受来源 inputKind。批量排位用 canvas_arrange_nodes。", map[string]any{"snapshotHash": str("canvas_get_state返回的snapshotHash"), "ops": map[string]any{"type": "array", "maxItems": 20, "items": opItem}}, "snapshotHash", "ops")
|
||||||
add("canvas_arrange_nodes", "整理画布节点位置:只改坐标,不改内容、不建连线、不增删节点,先读画布并传 snapshotHash。mode 省略即 auto(有连线按依赖分层,否则按媒体类型分区)。groups 为横向分带(label 展示名,可覆盖整组 mode)。nodeIds 省略则整理全部可整理节点(跳过锁定节点、容器、批次子节点与已归属背板者)。align 对齐/等距,dryRun 只预演;一次最多 50 个节点,只挪单个节点用 update_node 的 x/y。", map[string]any{
|
add("canvas_arrange_nodes", "整理画布节点位置:只改坐标,不改内容、不建连线、不增删节点,先读画布并传 snapshotHash。mode 省略即 auto(有连线按依赖分层,否则按媒体类型分区)。groups 为横向分带(label 展示名,可覆盖整组 mode)。nodeIds 省略则整理全部可整理节点(跳过锁定节点、容器、批次子节点与已归属背板者)。align 对齐/等距,dryRun 只预演;一次最多 50 个节点,只挪单个节点用 update_node 的 x/y。", map[string]any{
|
||||||
"snapshotHash": str("最近一次画布读取的 snapshotHash"),
|
"snapshotHash": str("最近一次画布读取的 snapshotHash"),
|
||||||
"nodeIds": map[string]any{"type": "array", "maxItems": cloudAgentArrangeMaxNodes, "items": str("节点ID;省略=全部可整理")},
|
"nodeIds": map[string]any{"type": "array", "maxItems": cloudAgentArrangeMaxNodes, "items": str("节点ID;省略=全部可整理")},
|
||||||
|
|||||||
Reference in New Issue
Block a user