diff --git a/docs/project-memory/shared-memory/decision-log.md b/docs/project-memory/shared-memory/decision-log.md
index abc152ca3..660426d17 100644
--- a/docs/project-memory/shared-memory/decision-log.md
+++ b/docs/project-memory/shared-memory/decision-log.md
@@ -8418,3 +8418,15 @@ CI 上 `background_agent_runtime_recovers_stale_running_before_pending_task` 在
- 验证方式:新增 `resourceCanvasInfoModel` 三条(字段固定 5 项且不含内部标识、栏目口径与标签拼接、锚点与快速编辑浮层同一条几何);AGC 子集新增「信息面板在画布浮层与运行页签里渲染同一份只读字段」(工具条顺序、开合、X 只收面板、点画布以外收起、Esc 连工具条一起收、运行页签字段逐行相同),并把 `resourceCanvasFloatingDismiss` 的判据用例与交互选择器夹具改成浮层通用口径。变异验证:把信息浮层从关闭判据里摘掉 → 「点画布以外」红灯;把运行页签换回三字段内联 `
` → 两处字段比对红灯(均已实测)。
- 需要同步的既有文档(**本次只报告,不改远程 Issue**):`docs/technical/【测试用例】AGC资源工作台V3端到端验收-2026-09-11.md` :51(S9 行「按 #309 C3 判…真正入口是 `选中资源:<栏目> <名>`」)与 :248(差异表同行)需要补一句「只读信息浮层已于 2026-09-11 回归,C3 取消的仍只是可编辑详情面板与全屏编辑路由」;`docs/prd/【AI游戏创作】项目开发工作台PRD-2026-07-20.md` :61–62 的「打开详情」按钮口径仍与 #309 C3 冲突,本次未动。
- 关联:Issue #309(C3)、`apps/ai-game-creator-shell/src/view/project-development/{index.tsx,ResourceInfoPanelView.tsx}`、`apps/ai-game-creator-shell/src/features/resource-canvas/{resourceCanvasInfoModel.ts,resourceCanvasFocusModel.ts,resourceCanvasChrome.css}`。
+
+## 2026-09-11 资源画布工具条只接「生成动画」:其余六个动作按 opt-in 不渲染,「改造」认定为「快速编辑」
+
+- 背景:Issue #309 的 C3 交互合同表把 9 个工具条动作列为目标,但 AGC 只接通「快速编辑」与「下载」,其余 7 个在宿主里是空回调(见 `pitfalls.md` 的「资源画布工具条的『改造』『角色动画』按钮点了没反应」)。本轮按用户裁定收口:**只接能真跑通的那些,其余一律不渲染**,不为赶进度造必然失败或名不副实的按钮。
+- 决策一:**接通「生成动画」**(`character-animation`)。门禁 = 源资源是**已登记的栅格图片** 且 `subtype === 'character'`(非角色、未登记、非栅格三类都不放行;Rust `resolve_resource_edit_source` 对 CharacterAnimation 会 `image::load_from_memory` 解源图宽高,SVG 一定失败,必须在前端就挡住)。链路 = `normalize_local_project_raster_resource`(同快速编辑)→ `derive(editKind='character-animation', generationMode='derive')` → 服务端 `/api/editor/character-animations/generations`,产出新素材、源素材不动;`derive` 的**源解析与 revision 缓存**抽成 `resolveResourceDeriveSource` 给快速编辑与生成动画共用,避免同一源在两条链路上得到两份 manifest 视图。
+- 决策二:**面板复用共享的 `ImageCanvasCharacterAnimationPanelView`**,并**显式关掉参数入口**(新增可选 prop `showParameters`,默认 `true` → 网页端美术画布行为不变)。理由:比例 / 时长 / 清晰度 / 模型由客户端 Rust 固定(`same` / 720p / 32 帧 / 4 秒 / `seedance2.0-fast`),面板改它们不会改变请求,渲染出来就是点了不生效的假控件。**未自建面板、未复制共享接线**。
+- 决策三:**「改造」(`redraw`) 不再另起入口**——它的语义由既有「快速编辑」承担:AGC 的快速编辑就是 `derive(image-reference, prompt)`="按提示词基于源图重画";`redraw` 本身在 AGC 无源图片生成被 `resource_editor.rs` 的 create 分支硬拦(「当前资源类型不支持无源生成」),`/api/editor/images/edits` 又强制要 `sourceReferenceId`,接上去只会是同面板同链路的重复入口。
+- 决策四:**其余 5 个动作确认不接**,各自证据:`crop-expand` 的 edits 请求体不带裁扩框几何(接上是普通图片编辑,名不副实);`remove-background` 服务端有 `/api/editor/images/background-removals` 但 AGC 无对应 editKind、也不在 `resource_editor.rs` 的远端路由白名单里;`extract-ui-design` 需要画布框选覆盖层 + 新 editKind;`perfect-pixel` / `split-icon-spritesheet` 同样无通道且本轮明确不做。「参考图选择」也一并砍:`ImageCanvasProjectAssetPickerDialog` 在 AGC 侧零引用,且 `DeriveLocalProjectResourceInput` 是 `deny_unknown_fields` 且没有参考图字段——弹窗能画,但确认后的素材 id 无传输通道,接上去就是"选了没反应"。
+- 复用共享面板时发现的两个连带事实(写进 `pitfalls.md`):① 面板上的**泥点价就是提交按钮本身**(`cost` 非数字则整个按钮不渲染),所以档位常量必须与后端固定值一致,否则按钮上是一个与实际计费不符的数字——已用断言钉住 720p×4 而非共享 draft 工厂的 480p 默认档;② 面板默认参数档位(480p)与 AGC 侧固定档位(720p)不同,必须显式覆盖。
+- 验证方式:`resolveResourceCanvasToolbarActions` 单测由「角色资源只放行快速编辑与下载」**改写**为「放行 `['quick-edit','character-animation','download']`」(四不写:旧断言描述未接通状态,已被真实链路取代,不留墓碑),并新增三条反向守卫(非角色图片不放行 / 角色图未登记为正式素材不放行 / 非栅格角色图不放行);AGC 端到端新增「从角色资源卡生成动画」用例,断言 `editKind` / `generationMode` / `prompt` / `assetName` / `sourceAssetId` / 泥点价档位,并断言**参数入口不存在**。变异验证三条(均已实测红灯):去掉 `onOpenCharacterAnimationPanel` 接线 → 端到端用例找不到动画面板;把 `character-animation` 无条件放行 → 三条反向守卫红灯;把档位常量改成 `480p` → 泥点价断言红灯(`生成40泥点` ≠ `80泥点`)。
+- 需要同步的既有文档(**本次只报告,不改远程 Issue**):Issue #309 §三 C3 的「明确未做」与 §六、以及 PR #316 的「明确未做」第 1 条现在需要改写——`character-animation` 已接通,「改造」按"改造 = 快速编辑"收口,其余 6 项(裁扩 / 去背景 / 完美像素 / 拆分图集 / 提取素材 / 参考图选择)保持未接通且已给出逐项证据。这两处都是远程写操作,等用户确认后再动。
+- 关联:Issue #309(C3)、`apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasToolbarModel.ts`、`apps/ai-game-creator-shell/src/view/project-development/{index.tsx,resourceEditModel.ts}`、`src/components/image-editor/ImageCanvasCharacterAnimationPanelView.tsx`、`apps/ai-game-creator-shell/tests/{resourceCanvasToolbarModel.test.ts,projectResourceLiveIntegration.test.tsx}`、`apps/ai-game-creator-shell/src-tauri/src/project/resource_editor.rs`(:111-123 editKind 枚举、:1222-1230 create 分支硬拦、:2314-2351 CharacterAnimation 路由、:2444-2458 远端路由白名单)。
diff --git a/docs/project-memory/shared-memory/pitfalls.md b/docs/project-memory/shared-memory/pitfalls.md
index f3865d00b..10e2a4a7e 100644
--- a/docs/project-memory/shared-memory/pitfalls.md
+++ b/docs/project-memory/shared-memory/pitfalls.md
@@ -5148,12 +5148,16 @@
- **样式缺口量化**:AGC 的宿主 chrome 样式集中在 `apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasChrome.css`(395 行,`main.tsx:3` 引入),目前只覆盖 **17 个** `image-canvas-editor__*` 类;而网页端 `src/index.css`(15542 行)里这套类有 **451 个、910 处**。样式靠手抄是"样式不齐 / 工具条折行"反复复发的根源,补样式时只补实际用到的那几个类。
- 关联:`apps/ai-game-creator-shell/src/view/project-development/resourceBookViewport.ts`、`resourceCanvasLayoutModel.ts`、`index.tsx`、`apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasChrome.css`、`apps/ai-game-creator-shell/tests/resourceBookViewport.test.ts`、`apps/ai-game-creator-shell/tests/resourceCanvasLayoutModel.test.ts`。
-## 资源画布工具条的「改造」「角色动画」按钮点了没反应(2026-09-10)
+## 资源画布工具条的「改造」「角色动画」按钮点了没反应(2026-09-10,2026-09-11 已收口)
- 现象:选中一张可用资源卡后,浮出工具条上出现「改造」按钮(音频卡同样)或「角色动画」按钮,点击没有任何反应——属于"点了没反应的按钮"这一类。
-- 原因:AGC 在 `view/project-development/index.tsx:5405-5417` 挂 `ImageCanvasSelectedLayerToolbarView` 时把 `onOpenRedrawPanel`(`:5406`)与 `onOpenCharacterAnimationPanel`(`:5416`)传成了**空回调**(同一处另有 6 个空回调:`onOpenCropExpandPanel` / `onRemoveBackground` / `onPerfectPixel` / `onSplitIconSpritesheet` / `onExtractUiDesignAssets` / `onDownloadLayer`),但 `features/resource-canvas/resourceCanvasToolbarModel.ts` 的 `resolveResourceCanvasToolbarActions` **仍然把 `redraw` 放进了 supportedActions**:图片/视频/音频只要 `canDeriveFromResource` 就加 `redraw`,`assetKind === 'character'` 再加 `character-animation`。于是这两个动作**渲染出来了但没人接**;其余动作没进集合,按钮不渲染,所以线上只在这两处暴露。
-- 处理方向(尚未修):要么给这两个动作接上真实链路,要么把它们从 `resolveResourceCanvasToolbarActions` 的返回集合里去掉。判据是「渲染出来的动作必须真的能跑通」,而不是「先把按钮显示出来」。
-- 关联:`apps/ai-game-creator-shell/src/view/project-development/index.tsx`、`apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasToolbarModel.ts`、`src/components/image-editor/ImageCanvasSelectedLayerToolbarView.tsx`(`:87-90` 判定、`:300-311` 图片分支「改造」、`:289-300` 「角色动画」)。
+- 原因:AGC 在 `view/project-development/index.tsx` 挂 `ImageCanvasSelectedLayerToolbarView` 时把 `onOpenRedrawPanel` 与 `onOpenCharacterAnimationPanel` 传成了**空回调**(同一处另有 6 个空回调),但 `features/resource-canvas/resourceCanvasToolbarModel.ts` 的 `resolveResourceCanvasToolbarActions` **仍然把 `redraw` 放进了 supportedActions**。于是这两个动作**渲染出来了但没人接**;其余动作没进集合,按钮不渲染,所以线上只在这两处暴露。
+- 处理结果(2026-09-11 收口,两侧都按「渲染出来的动作必须真的能跑通」办):
+ - **「生成动画」接上真实链路**:`resolveResourceCanvasToolbarActions` 只在「已登记的栅格角色图」上放行 `character-animation`,宿主把它接到 `derive(editKind='character-animation', generationMode='derive')` → 服务端 `/api/editor/character-animations/generations`,产出新素材、源素材不动;面板复用共享 `ImageCanvasCharacterAnimationPanelView`,**参数入口显式关掉**(比例/时长/清晰度由客户端 Rust 固定为 `same`/720p/32 帧/4 秒/`seedance2.0-fast`,改它不会改变请求)。
+ - **「改造」不再另起入口**:`redraw` 的语义由既有的「快速编辑」承担(`derive(image-reference, prompt)` 就是"按提示词基于源图重画");`redraw` 本身后端无源生成被 `resource_editor.rs` 的 create 分支硬拦、`/api/editor/images/edits` 又强制要 `sourceReferenceId`,接上去只会是同面板同链路的重复入口。
+ - 其余 5 个动作(裁扩 / 去背景 / 完美像素 / 拆分图集 / 提取素材)确认各自缺 editKind 或不在远端路由白名单里,一律按 opt-in 不渲染。
+- 复用共享组件时的一个连带坑:把 `ImageCanvasCharacterAnimationPanelView` 这类**面板**接到新宿主时,先确认它渲染的每个"可选参数"在该宿主真的会影响请求;不影响就显式关掉,否则等于新造一批假控件。同次还确认了面板提交按钮上的泥点价**就是提交按钮本身**(`cost` 非数字则不渲染按钮),所以档位常量必须与后端固定值一致,否则显示与实际计费不符的数字。
+- 关联:`apps/ai-game-creator-shell/src/view/project-development/index.tsx`、`apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasToolbarModel.ts`、`src/components/image-editor/ImageCanvasSelectedLayerToolbarView.tsx`、`src/components/image-editor/ImageCanvasCharacterAnimationPanelView.tsx`、`apps/ai-game-creator-shell/tests/resourceCanvasToolbarModel.test.ts`、`apps/ai-game-creator-shell/tests/projectResourceLiveIntegration.test.tsx`。
## AGC 资源画本的流式工具条必须抬到画本场景之上(2026-09-10)
diff --git a/docs/technical/【技术方案】GameAgent资源自由画板与快速编辑-2026-08-20.md b/docs/technical/【技术方案】GameAgent资源自由画板与快速编辑-2026-08-20.md
index 815e6f24e..98855d7b8 100644
--- a/docs/technical/【技术方案】GameAgent资源自由画板与快速编辑-2026-08-20.md
+++ b/docs/technical/【技术方案】GameAgent资源自由画板与快速编辑-2026-08-20.md
@@ -66,6 +66,10 @@
- 图片浮动工具条与图片精修草稿画布均已退役。图片的“编辑资源”入口走资源派生编辑,在资源编辑壳内提交,不再打开独立画布或图片下方快速编辑卡。
- 资源自由画板顶部不展示“生成视频”“生成音效”“生成背景音乐”和“新增 UI 设计”等手动新建入口;顶部只保留播放、未完成编辑恢复、排序与复位等画布级动作。无源资源生成由 Agent 语义工具进入既有生成合同,已有资源的编辑和图片“生成动画”入口不受影响。
- 图片派生编辑使用 `/api/editor/images/edits`,严格遵循 `EditorImageEditRequest`,不得携带 `assetKind`、`sourceImageSrc` 或 `sourceResourceId`。Game Agent 本地 kind 在登记编辑器来源前映射到现役 canonical kind;服务端安全业务错误必须结构化返回,不能把全部 400 折叠为同一个“平台明确拒绝”。
+- 选中资源工具的**动作集合按「放进来就必须真能跑通」放行**(`features/resource-canvas/resourceCanvasToolbarModel.ts` 的 `resolveResourceCanvasToolbarActions`):进集合的动作必须真的接到产出新素材的链路上,未接通的一律不渲染,避免"点了没反应"的假按钮。截止 2026-09-11 真实接通的只有三项——「快速编辑」(`normalize_local_project_raster_resource` → `derive(editKind='image-reference')` → `/api/editor/images/edits`)、「生成动画」(同一段源解析 → `derive(editKind='character-animation')` → `/api/editor/character-animations/generations`,门禁为**已登记的栅格角色图**)与「下载」。
+- 「生成动画」的浮层面板直接复用共享 `ImageCanvasCharacterAnimationPanelView`,与美术画布同一份源图缩略、同一套动作预设、同一个 4000 字上限;**参数入口显式关闭**(`showParameters={false}`),因为比例 / 时长 / 清晰度 / 模型由客户端 Rust 固定为 `same` / 720p / 32 帧 / 4 秒 / `seedance2.0-fast`,面板改它们不会改变请求。面板提交按钮上的泥点价即为按钮本身(`cost` 非数字则整按钮不渲染),因此档位常量必须与 Rust 固定值一致,价格按 `calculateCharacterAnimationPrice(CHARACTER_ANIMATION_MODEL, '720p', 4)` 计算。
+- **「改造」(`redraw`) 不再另起入口**:其语义由既有的「快速编辑」承担——AGC 的快速编辑就是"按提示词基于源图重画"(`derive(image-reference, prompt)`);`redraw` 本身在 AGC 无源图片生成被 `resource_editor.rs` 的 create 分支硬拦,`/api/editor/images/edits` 又强制要 `sourceReferenceId`,接一个独立按钮只会是同面板同链路的重复入口。
+- 其余工具条动作确认**未接通且本轮不做**,各自缺的是后端通道或交互前件:裁扩(edits 请求体不带裁扩框几何,接上是普通图片编辑)、去背景(服务端有 `/api/editor/images/background-removals`,但 AGC 无对应 `editKind`、也不在 `resource_editor.rs` 的远端路由白名单里)、提取素材(需要画布框选覆盖层 + 新 `editKind`)、完美像素 / 拆分图集(同无通道)。「参考图选择」同样不接:`ImageCanvasProjectAssetPickerDialog` 在 AGC 侧零引用,且 `DeriveLocalProjectResourceInput` 是 `deny_unknown_fields` 且没有任何参考图字段,弹窗能画但确认后的素材 id 无传输通道。
## 编辑结果投影与焦点竞态