fix(canvas): 画布背板 - 明确背板能力说明并允许拖动 Markdown 节点

背板能力卡改为说明可移动、可折叠的视觉分区用途与边界,Agent 能据此判断何时用背板归组。Markdown 节点正文不再拦截 mousedown,拖动节点和拖入背板恢复正常。
This commit is contained in:
ddcat666
2026-09-30 03:42:36 +08:00
parent 0636cf7c0c
commit e0a2697c60
3 changed files with 13 additions and 4 deletions

View File

@@ -102,6 +102,16 @@ func TestCloudAgentNodeCapabilityCardsExplainStoryboardTradeoffs(t *testing.T) {
if !strings.Contains(videoGoodFor, "多图参考视频") {
t.Fatalf("video capability card does not explain multi-image video: %s", videoGoodFor)
}
frame := byType["frame"]
frameGoodFor := strings.Join(frame["goodFor"].([]string), "\n")
frameNotIdealFor := strings.Join(frame["notIdealFor"].([]string), "\n")
if !strings.Contains(frameGoodFor, "按场景或镜头组") || !strings.Contains(frameGoodFor, "制作") || !strings.Contains(frameNotIdealFor, "分镜脚本节点") {
t.Fatalf("frame capability card does not explain its use cases and limits: %+v", frame)
}
capabilityGuide := cloudAgentCapabilityGuide()
if !strings.Contains(capabilityGuide, "按场景或镜头组") || !strings.Contains(capabilityGuide, "可移动、可折叠") {
t.Fatalf("Agent system guide does not explain when to use a canvas frame: %s", capabilityGuide)
}
guide := strings.Join(result["selectionGuide"].([]string), "\n")
if !strings.Contains(guide, "多镜头") || !strings.Contains(guide, "model_list") || !strings.Contains(guide, "不要为了形式") {
t.Fatalf("selection guide does not express soft routing: %s", guide)

View File

@@ -43,9 +43,9 @@ func BuiltinRegistry() *Registry {
}),
{
Type: "frame", Version: "1", Label: "背板", DefaultWidth: 760, DefaultHeight: 520,
Purpose: "组织一组相关节点的画布区域。",
GoodFor: []string{"按场景整理节点", "划分工作区域"},
NotIdealFor: []string{"承载结构化镜头数据", "替代具体业务节点"},
Purpose: "在画布上建立可移动、可折叠的视觉分区,用来归组相关节点;背板本身不承载创作正文或生成结果。",
GoodFor: []string{"按场景或镜头组归拢脚本、参考图和生成结果", "按前期策划、制作、交付等阶段划分工作区", "为大型画布建立清晰分区,便于移动或折叠整组内容"},
NotIdealFor: []string{"承载结构化镜头数据(应使用分镜脚本节点)", "存放需要 Agent 单独读写的正文(应使用文本或 Markdown 节点)", "替代具体业务节点或媒体生成节点"},
Tradeoffs: []string{"改善空间组织但不增加内容结构或生成能力"},
SummaryFields: []string{"label"}, DetailFields: []string{"label"},
CreateMetadata: func(string) map[string]any {

View File

@@ -39,7 +39,6 @@ export function MarkdownNodeContent({ node, theme }: MarkdownNodeContentProps) {
data-canvas-no-zoom
style={{ color: theme.node.text }}
onWheel={(event) => event.stopPropagation()}
onMouseDown={(event) => event.stopPropagation()}
>
<AIMessageMarkdown>{source}</AIMessageMarkdown>
</div>