停止向用户泄露抠图模型 #120

Merged
kdletters merged 15 commits from fix/show_model into master 2026-07-31 16:40:43 +08:00
Owner
No description provided.
lhk229 added 1 commit 2026-07-30 12:29:48 +08:00
停止向用户泄露抠图模型
Project CI / Repository checks (pull_request) Successful in 1m3s
Project CI / Native shell tests (pull_request) Successful in 2m34s
Project CI / Frontend tests (pull_request) Successful in 2m35s
Project CI / Backend tests (pull_request) Successful in 3m33s
31f7d5ea1b
Author
Owner

[P1] 历史“抠图模型”字段仍会泄露。
ImageCanvasGenerationModel.ts (line 557) 只过滤“处理模型”,但历史兼容数据明确使用“抠图模型”,见 ImageCanvasGenerationDialogModel.test.ts (line 526)。旧项目的信息弹窗和 ZIP 导出仍会展示 动漫风格 anime-seg。应同时过滤两种标题,并补弹窗、导出回归测试。

这是一个虚假问题,历史图片继续显示旧字段无任何不妥

[P1] 历史“抠图模型”字段仍会泄露。 [ImageCanvasGenerationModel.ts (line 557)](C:/projects/narrative/manual_bgremove/src/components/image-editor/ImageCanvasGenerationModel.ts:557) 只过滤“处理模型”,但历史兼容数据明确使用“抠图模型”,见 [ImageCanvasGenerationDialogModel.test.ts (line 526)](C:/projects/narrative/manual_bgremove/src/components/image-editor/ImageCanvasGenerationDialogModel.test.ts:526)。旧项目的信息弹窗和 ZIP 导出仍会展示 动漫风格 anime-seg。应同时过滤两种标题,并补弹窗、导出回归测试。 这是一个虚假问题,历史图片继续显示旧字段无任何不妥
Author
Owner

[P2] 内部模型仍参与素材和图层搜索。
ImageCanvasAssetLibraryModel.ts (line 212)ImageCanvasAssetLibraryModel.ts (line 225) 仍索引原始 model。例如手动去背景保存的 BgFilter complex 可以通过搜索命中素材,即使详情显示为 -,仍形成可观察泄漏及“命中但无可见匹配字段”的异常体验。内部模型不应进入搜索索引。

不违反契约,不构成问题。

[P2] 内部模型仍参与素材和图层搜索。 [ImageCanvasAssetLibraryModel.ts (line 212)](C:/projects/narrative/manual_bgremove/src/components/image-editor/ImageCanvasAssetLibraryModel.ts:212) 和 [ImageCanvasAssetLibraryModel.ts (line 225)](C:/projects/narrative/manual_bgremove/src/components/image-editor/ImageCanvasAssetLibraryModel.ts:225) 仍索引原始 model。例如手动去背景保存的 BgFilter complex 可以通过搜索命中素材,即使详情显示为 -,仍形成可观察泄漏及“命中但无可见匹配字段”的异常体验。内部模型不应进入搜索索引。 不违反契约,不构成问题。
lhk229 added 1 commit 2026-07-30 15:50:10 +08:00
合并 master 最新图集切片更新
Project CI / Repository checks (pull_request) Successful in 1m23s
Project CI / Frontend tests (pull_request) Successful in 2m6s
Project CI / Native shell tests (pull_request) Successful in 2m38s
Project CI / Backend tests (pull_request) Successful in 3m33s
0c4775f5ab
保留 master 的图集切片资源边界、尺寸校验和 deadline 处理
保留派生资源继承生图模型并隐藏内部处理模型的现有修复
Author
Owner

当前审计依赖现有实现,先不改

当前审计依赖现有实现,先不改
lhk229 closed this pull request 2026-07-30 16:17:44 +08:00
lhk229 reopened this pull request 2026-07-30 20:14:28 +08:00
lhk229 added 1 commit 2026-07-30 20:24:28 +08:00
合并远程 master 最新更新
Project CI / Repository checks (pull_request) Successful in 1m14s
Project CI / Backend tests (pull_request) Successful in 3m42s
Project CI / Frontend tests (pull_request) Successful in 3m5s
Project CI / Native shell tests (pull_request) Failing after 7m33s
faae647e9f
合并 AI 游戏创作智能体与通用 Runtime 基座。

保留抠图模型展示与内部元数据修复。
kdletters requested changes 2026-07-30 21:15:56 +08:00
Dismissed
kdletters left a comment
Member

[P1] 新增内部抠图元数据会进入匿名精选接口。 editor_project.rs:2295 将 mattingProvider/mattingModel 写入 generationInputs;素材提交精选时原样快照,公开 mapper 在 6318 行 只清理内联媒体。匿名 GET /api/editor/showcase/resources 因而可直接看到 BgFilter/birefnet、Aliyun Matting/segment-common-image 等内部实现。应仅在 public payload 边界移除内部键,保留 owner/admin 审计读取。

[P1] 历史“抠图模型”仍会直接展示和导出。 ImageCanvasGenerationModel.ts:557 只过滤“处理模型”,但现有历史 fixture 明确使用“抠图模型 = 动漫风格 anime-seg”。信息弹窗和 ZIP metadata 都会保留它。作者虽在评论中认为历史字段可以显示,但这与当前文档“前端用户路径不展示抠图模型”的口径冲突;若确实要例外,应先明确收窄契约。

[P2] 隐藏模型仍参与素材和图层搜索。 ImageCanvasAssetLibraryModel.ts:212225 行 仍索引 raw model,会出现“搜索命中、界面却没有任何可见匹配字段”的异常,也可侧向判断内部模型。

[P1] 新增内部抠图元数据会进入匿名精选接口。 [editor_project.rs:2295](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/faae647e9f0a6cb085ad3793a72e50dfe3c22995/server-rs/crates/api-server/src/editor_project.rs#L2295) 将 mattingProvider/mattingModel 写入 generationInputs;素材提交精选时原样快照,公开 mapper 在 [6318 行](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/faae647e9f0a6cb085ad3793a72e50dfe3c22995/server-rs/crates/api-server/src/editor_project.rs#L6318) 只清理内联媒体。匿名 GET /api/editor/showcase/resources 因而可直接看到 BgFilter/birefnet、Aliyun Matting/segment-common-image 等内部实现。应仅在 public payload 边界移除内部键,保留 owner/admin 审计读取。 [P1] 历史“抠图模型”仍会直接展示和导出。 [ImageCanvasGenerationModel.ts:557](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/faae647e9f0a6cb085ad3793a72e50dfe3c22995/src/components/image-editor/ImageCanvasGenerationModel.ts#L557) 只过滤“处理模型”,但现有历史 fixture 明确使用“抠图模型 = 动漫风格 anime-seg”。信息弹窗和 ZIP metadata 都会保留它。作者虽在评论中认为历史字段可以显示,但这与当前文档“前端用户路径不展示抠图模型”的口径冲突;若确实要例外,应先明确收窄契约。 [P2] 隐藏模型仍参与素材和图层搜索。 [ImageCanvasAssetLibraryModel.ts:212](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/faae647e9f0a6cb085ad3793a72e50dfe3c22995/src/components/image-editor/ImageCanvasAssetLibraryModel.ts#L212) 和 [225 行](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/faae647e9f0a6cb085ad3793a72e50dfe3c22995/src/components/image-editor/ImageCanvasAssetLibraryModel.ts#L225) 仍索引 raw model,会出现“搜索命中、界面却没有任何可见匹配字段”的异常,也可侧向判断内部模型。
lhk229 added 1 commit 2026-07-30 21:22:59 +08:00
修复自主任务等待测试竞态
Project CI / Frontend tests (pull_request) Failing after 24s
Project CI / Repository checks (pull_request) Successful in 1m24s
Project CI / Backend tests (pull_request) Successful in 4m0s
Project CI / Native shell tests (pull_request) Successful in 10m45s
4b50f879d2
使用待处理任务夹具替代会启动后台 drain 的高层入口

避免 planning 与 waiting-for-manifest-tasks 并发写入同一 run

定向测试连续运行五十次通过
Author
Owner

[P1] 历史“抠图模型”仍会直接展示和导出。 ImageCanvasGenerationModel.ts:557 只过滤“处理模型”,但现有历史 fixture 明确使用“抠图模型 = 动漫风格 anime-seg”。信息弹窗和 ZIP metadata 都会保留它。

明确不改

[P1] 历史“抠图模型”仍会直接展示和导出。 [ImageCanvasGenerationModel.ts:557](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/faae647e9f0a6cb085ad3793a72e50dfe3c22995/src/components/image-editor/ImageCanvasGenerationModel.ts#L557) 只过滤“处理模型”,但现有历史 fixture 明确使用“抠图模型 = 动漫风格 anime-seg”。信息弹窗和 ZIP metadata 都会保留它。 明确不改
lhk229 added 3 commits 2026-07-31 13:07:39 +08:00
匿名精选响应省略 provider,并清理 generationInputs 中的内部抠图字段。

保留素材 owner、精选提交响应和后台管理接口的原始审计信息。

补充公开边界回归测试并同步后端契约、前端说明和项目决策。
素材与图层搜索排除内部处理模型和 Provider。
补充模型层与侧栏回归测试,确认审计元数据不被删除。
同步图片画布搜索契约与项目决策记录。
收紧编辑器内部处理元数据边界
Project CI / Native shell tests (pull_request) Successful in 12m45s
Project CI / Frontend tests (pull_request) Successful in 2m58s
Project CI / Repository checks (pull_request) Failing after 9s
Project CI / Backend tests (pull_request) Failing after 9s
56fe1cb85d
普通用户与公开响应统一移除生成 provider、内部处理模型和抠图审计字段。
普通生成请求移除 segModel,由后端固定抠图策略并清理客户端伪造的保留字段。
手动去背景继承可信源模型,角色动作与去背景失败统一使用稳定用户文案。
后台原始审计继续保留真实 provider 与抠图模型,并补齐 Owner、Public、Admin 和紧凑结果测试。
同步更新前端响应契约、外部 OpenAPI、后端架构文档和项目决策记录。
Author
Owner

只涉及历史素材的都不改,模型泄露不是强安全问题

只涉及历史素材的都不改,模型泄露不是强安全问题
lhk229 added 2 commits 2026-07-31 14:07:06 +08:00
恢复角色、图标和 UI 素材提取自动提交默认 segModel。
后端重新接收并校验 segModel,非法值不回显内部 provider 或模型。
保持普通用户响应、搜索、详情、导出与错误文本的内部信息脱敏。
修正 Owner/Public、External OpenAPI 与站内 BFF 请求边界文档。
补齐前后端请求序列化和安全回归测试。
合并远程 master 最新更新
Project CI / Repository checks (pull_request) Successful in 59s
Project CI / Frontend tests (pull_request) Successful in 3m11s
Project CI / Backend tests (pull_request) Successful in 4m6s
Project CI / Native shell tests (pull_request) Successful in 10m54s
16e4b3164c
保留画布抠图模型默认请求契约与用户响应脱敏边界。

合入每日免费泥点配置、延期备份和图集切片等远程更新。

解决项目决策记录冲突并修正图集切片持久化断言。
Member

[P1] External OpenAPI v1 出现未版本化 breaking change。 PR 从同一个 v1 / 1.0.0 的图片、图集、视频、音频生成响应中删除原本 required 的 provider,例如 EditorImageGenerationResponse。现有严格反序列化或 OpenAPI 生成客户端会直接失败。脱敏目标合理,但应提供兼容响应、弃用周期或升级 API 版本。

[P1] 历史“抠图模型”仍直接展示和导出。 ImageCanvasGenerationModel.ts:557 仍只过滤“处理模型”,而历史 fixture 明确存在“抠图模型 = 动漫风格 anime-seg”。Owner mapper 不清理 fields,因此信息弹窗和 ZIP metadata 仍暴露。作者已明确表示历史素材不改,所以这是当前文档契约与产品决定的显式冲突。

[P2] 手动去背景新增重复全量读取。 解析 object key 所有权时已经遍历账号全部项目/素材;随后 resolve_editor_background_removal_source_model 又无条件重新读取全部项目和完整素材库。账号数据增大后,每次去背景都会重复传输全部画布、资源和素材快照。应合并解析过程或增加按资源/素材/object key 定向查询。

[P1] External OpenAPI v1 出现未版本化 breaking change。 PR 从同一个 v1 / 1.0.0 的图片、图集、视频、音频生成响应中删除原本 required 的 provider,例如 [EditorImageGenerationResponse](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/16e4b3164c394f3f5f5f8505c147f899ef046c66/docs/openapi/genarrative-external-v1.openapi.json#L2834)。现有严格反序列化或 OpenAPI 生成客户端会直接失败。脱敏目标合理,但应提供兼容响应、弃用周期或升级 API 版本。 [P1] 历史“抠图模型”仍直接展示和导出。 [ImageCanvasGenerationModel.ts:557](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/16e4b3164c394f3f5f5f8505c147f899ef046c66/src/components/image-editor/ImageCanvasGenerationModel.ts#L557) 仍只过滤“处理模型”,而历史 fixture 明确存在“抠图模型 = 动漫风格 anime-seg”。Owner mapper 不清理 fields,因此信息弹窗和 ZIP metadata 仍暴露。作者已明确表示历史素材不改,所以这是当前文档契约与产品决定的显式冲突。 [P2] 手动去背景新增重复全量读取。 解析 object key 所有权时已经遍历账号全部项目/素材;随后 [resolve_editor_background_removal_source_model](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/16e4b3164c394f3f5f5f8505c147f899ef046c66/server-rs/crates/api-server/src/editor_project.rs#L8658) 又无条件重新读取全部项目和完整素材库。账号数据增大后,每次去背景都会重复传输全部画布、资源和素材快照。应合并解析过程或增加按资源/素材/object key 定向查询。
Author
Owner

[P1] External API 仍可执行未公开的 segModel
external_editor_api.rs (line 612)
三个 External handler 直接复用站内 DTO,因此 API Key 调用方仍可手写 segModel: "anime-seg" 并实际传给 BgFilter。OpenAPI 的 additionalProperties: false 不提供运行时校验。应使用 External 专用 DTO,或明确拒绝该字段

API Key 调用方仍可手写 segModel: "anime-seg" 与契约不冲突

[P1] External API 仍可执行未公开的 segModel [external_editor_api.rs (line 612)](C:/projects/narrative/.codex-pr120-review-56fe1cb85/server-rs/crates/api-server/src/external_editor_api.rs:612) 三个 External handler 直接复用站内 DTO,因此 API Key 调用方仍可手写 segModel: "anime-seg" 并实际传给 BgFilter。OpenAPI 的 additionalProperties: false 不提供运行时校验。应使用 External 专用 DTO,或明确拒绝该字段 API Key 调用方仍可手写 segModel: "anime-seg" 与契约不冲突
Author
Owner

[P2] 模型为空时未沿来源资源恢复正常模型
ImageCanvasEditorModel.ts (line 789)
后端会删除派生资源上的内部模型,导致 persistedModel 为空;当前代码随即返回,不再沿 sourceResourceId 查找祖先资源的 gpt-image-2 等正常模型。历史素材刷新后详情和 ZIP 会显示 -。

已修复

[P2] 模型为空时未沿来源资源恢复正常模型 [ImageCanvasEditorModel.ts (line 789)](C:/projects/narrative/.codex-pr120-review-56fe1cb85/src/components/image-editor/ImageCanvasEditorModel.ts:789) 后端会删除派生资源上的内部模型,导致 persistedModel 为空;当前代码随即返回,不再沿 sourceResourceId 查找祖先资源的 gpt-image-2 等正常模型。历史素材刷新后详情和 ZIP 会显示 -。 已修复
Author
Owner

[P1] External OpenAPI v1 出现未版本化 breaking change。 PR 从同一个 v1 / 1.0.0 的图片、图集、视频、音频生成响应中删除原本 required 的 provider,例如 EditorImageGenerationResponse。现有严格反序列化或 OpenAPI 生成客户端会直接失败。脱敏目标合理,但应提供兼容响应、弃用周期或升级 API 版本。

目前阶段不需要考虑兼容性问题

[P1] External OpenAPI v1 出现未版本化 breaking change。 PR 从同一个 v1 / 1.0.0 的图片、图集、视频、音频生成响应中删除原本 required 的 provider,例如 [EditorImageGenerationResponse](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/16e4b3164c394f3f5f5f8505c147f899ef046c66/docs/openapi/genarrative-external-v1.openapi.json#L2834)。现有严格反序列化或 OpenAPI 生成客户端会直接失败。脱敏目标合理,但应提供兼容响应、弃用周期或升级 API 版本。 目前阶段不需要考虑兼容性问题
Author
Owner

docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md:178 — 把「前端同时过滤历史项目中已持久化的处理模型字段」这句从全覆盖承诺降级为事实描述:过滤是标题精确匹配 处理模型,不做语义识别;「抠图模型」是已知例外,会继续出现在图片信息与 ZIP;这是接受状态而非缺陷;约束只对新写入生效。

docs/technical/【前端架构】图片画布编辑器MVP接入方案-2026-06-11.md:178 — 把「前端同时过滤历史项目中已持久化的处理模型字段」这句从全覆盖承诺降级为事实描述:过滤是标题精确匹配 处理模型,不做语义识别;「抠图模型」是已知例外,会继续出现在图片信息与 ZIP;这是接受状态而非缺陷;约束只对新写入生效。
lhk229 added 4 commits 2026-07-31 15:52:25 +08:00
模型被用户响应脱敏为空时继续沿来源资源回溯正常生成模型。

补充 Owner payload 回归测试并更新画布模型展示契约文档。
服务端收紧内部处理元数据边界后不再返回素材与项目资源的生成 provider,作品集侧该字段恒为空。
getAssetHaystack 只服务美宣、角色和 UI 三条分类正则,历史 provider 取值(VectorEngine、
BgFilter、Aliyun Matting、Genarrative Local)从未命中任何一条,移除后分类行为不变。
projectResourceToShowcaseAsset 中的同名映射唯一下游即该搜索串,一并移除。

读取侧契约类型与画布图层 provider 元数据管道保持不变,沿用素材库搜索既定处理方式。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
合并手动去背景的 object key、所有权与源模型解析,复用同一轮项目和素材快照。
保留 asset_object 定向授权兜底,并新增快照读取次数回归测试。
同步图片画布技术方案与项目避坑记录。
补齐外部契约版本策略与历史抠图模型口径
Project CI / Repository checks (pull_request) Failing after 8s
Project CI / Backend tests (pull_request) Failing after 10s
Project CI / Frontend tests (pull_request) Successful in 2m31s
Project CI / Native shell tests (pull_request) Successful in 12m16s
7b9433c23f
External v1 从四个生成响应移除原本 required 的 provider 时未升 info.version,属
breaking change 而非文档同步。接入方案新增「版本与兼容策略」,记录当前无外部存量调用方
的豁免前提、失效条件与今后的 breaking 判定;openapi info.description 补充面向集成方的
兼容性说明。API Key 由用户自助发放,「无调用方」不是受控状态,改契约前需先确认活跃密钥。

用户可见性过滤是标题精确匹配「处理模型」,不做语义识别,历史素材中标题为「抠图模型」的
字段会继续出现在图片信息弹窗与画布 ZIP。收敛 MVP 接入方案原有的全覆盖表述,明确该例外
属已知且接受的产品决策:历史素材不迁移、不回溯清理,约束只对新写入生效。

两条决策记入 decision-log,排查要点记入 pitfalls。本次均为文档变更,不修改响应结构、
请求 DTO、过滤实现或素材数据。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Member

[P1] 外部 API 仍直接复用站内请求 DTO。API Key 调用方可提交未公开的 segModel: "anime-seg" 并实际执行;但权威 OpenAPI 未声明该字段且设置了 additionalProperties: false。这既违反外部契约,也没有真正隔离内部抠图模型。应使用外部专用 DTO 并拒绝该字段。位置:external_editor_api.rs

[P1] 外部 API 仍直接复用站内请求 DTO。API Key 调用方可提交未公开的 segModel: "anime-seg" 并实际执行;但权威 OpenAPI 未声明该字段且设置了 additionalProperties: false。这既违反外部契约,也没有真正隔离内部抠图模型。应使用外部专用 DTO 并拒绝该字段。位置:[external_editor_api.rs](http://192.168.35.82/git/GenarrativeAI/Genarrative/src/commit/7b9433c23f073fa413dc88c941a228fda6af9679/server-rs/crates/api-server/src/external_editor_api.rs#L608)。
lhk229 added 1 commit 2026-07-31 16:19:22 +08:00
合并远程 master 最新更新
Project CI / Repository checks (pull_request) Successful in 1m11s
Project CI / Native shell tests (pull_request) Successful in 11m49s
Project CI / Frontend tests (pull_request) Successful in 3m3s
Project CI / Backend tests (pull_request) Successful in 3m11s
0e73083d4d
合入游戏聊天 0.1.1、AGC 资源画布布局与跨平台运行修复。

合入画板素材上传后的私有图片预览修复。

保留历史派生图层模型恢复与抠图契约更新。
kdletters scheduled this pull request to auto merge when all checks succeed 2026-07-31 16:40:15 +08:00
kdletters approved these changes 2026-07-31 16:40:42 +08:00
kdletters merged commit 72acd0ec05 into master 2026-07-31 16:40:43 +08:00
kdletters deleted branch fix/show_model 2026-07-31 16:40:43 +08:00
Sign in to join this conversation.