AGC 聊天通用引用:素材 @ 面板、资源卡入口与运行画面区域点选 #293
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
AGC 聊天通用引用:素材 @ 面板、资源卡入口与运行画面区域点选
需求背景
《客户端画布与资源工作台需求》 第 9 节“素材点选和 @ 引用”要求 AGC 支持素材引用和运行画面点选。
当前远端
master尚没有@素材引用能力:聊天输入框没有@候选和按钮,也没有素材选择面板、资源卡@引用、运行画面点选模式或结构化引用提交协议。仓库中已有可复用基础:
本 Issue 需要在这些现有能力上补齐通用引用系统,不做按
@名称反向解析的文本方案。目标
用户可以在 AGC 聊天输入中插入一个或多个结构化素材引用,并在引用标签前后自由编辑自然语言;提交时客户端同时保留用户文本和引用数据,Agent 只接收安全投影。
引用入口共三类:
@按钮和键盘@触发;结构化引用协议
先锁定统一输入 DTO,再实现各入口。聊天提交至少包含:
素材引用至少包含:
asset-picker/resource-card/version-asset/runtime-picker。来源仅用于展示和追踪,不参与资源解析。
运行画面引用使用独立类型,例如
runtime-region,至少包含:运行画面点选不得假设选区一定对应单个素材。它可能是单个素材元素,也可能是包含多个素材的容器、一块 UI 区域或整个游戏窗口。
实现范围
1. 通用引用编辑器
抽取可复用的富文本输入组件,三个聊天入口共用:
@后在当前光标处触发候选;@按钮打开素材选择面板;@名称反向解析。2. 素材选择面板
Agent 输入区提供
@按钮,打开独立素材选择面板:缩略图复用现有资源预览读取和 object URL 生命周期管理,不新增平行素材存储。
3. 资源画布与当前版本素材入口
@引用操作;@面板共用同一引用协议。4. 运行画面区域点选
runtime-region引用,不伪装成素材引用;实现应基于现有本地预览 iframe 的 origin 校验消息通道,新增受控检查协议;禁止把完整 DOM、任意属性或内部路径传给宿主。
5. 提交前校验与安全投影
提交前客户端必须重新校验引用:
Agent 只接收白名单安全投影,例如稳定 ID、类型、展示名快照和必要的选区摘要。
禁止进入 Agent 输入的字段包括:
验收标准
master无@候选,本 Issue 完成后三个聊天入口均具备引用能力;@按钮;@可触发候选,并支持键盘选择和 Esc 关闭;@引用,且不影响现有交互;@名称文本;git diff --check通过;不在本 Issue 范围内
建议先把结构化引用协议锁定,再分别实现三个入口。输入模型至少应同时保留自然语言文本和 references 数组,每个引用使用稳定资源 ID、资源类型和展示名称快照;来源(聊天选择、运行画面点选、资源卡)可以作为可选字段,不能让来源决定解析方式。
还需要在发送前定义资源已删除、停用或版本变化时的行为,以及同名资源和改名后的显示规则。运行画面点选只能把资源的安全投影传给 Agent,建议明确投影白名单和服务端二次校验,禁止绝对路径、签名 URL、Token 等字段进入回合输入。三个聊天入口应共用同一输入 DTO,普通无引用消息继续走兼容分支。
验收建议补上:输入中间位置插入多个引用、删除后重新编辑、中文和同名资源、资源失效后的发送失败提示,以及桌面端和窄视口下的面板/键盘操作;同时用请求断言验证实际提交的是稳定 ID 而不是仅有 @名称。
AGC 聊天支持素材点选与 @ 引用to AGC 聊天通用引用:素材 @ 面板、资源卡入口与运行画面区域点选需求文档(飞书《GameAgent客户端画布与资源工作台 V3.0》)已完整落地,原先因文档未定型而拆分出来的这部分需求,现在合并到 Tracking Issue #309 统一处理。
references、Rust 侧按 manifest 二次校验、runtime-region兜底)保留在feat/agc-chat-resource-mentions分支,后续在 #309 下继续补齐:@ 面板两个页签、独立筛选状态、改名后显示名刷新、跨会话引用光标位置、点选改走 PhaserhitTestPointer。本 Issue 关闭,后续讨论与进度统一见 #309。