AGC 工具详情的路径脱敏误删 HTML 结束标签与转义内容,完整回包展示被破坏 #553

Open
opened 2026-09-30 15:53:44 +08:00 by lhk229 · 1 comment
Member

问题

工具结果先序列化为文本,再做无语境的绝对路径脱敏。HTML 结束标签中的 / 被识别为路径,嵌套 JSON 转义也可能被误判。完整工具结果已经到达,展示与诊断仍被改坏。

现场与独立复现

心情花园四季记-r2:project.jsonl:9 的 canonical HTML 回包正常、redacted=false;tool-calls.jsonl:4 的工具详情中 lang/charset/结束标签出现错误 <absolute-path> 替换。模型收到的 canonical 结果在此样本中未损坏,不能声称模型因这项读取了错误代码。

从当前仓库提取原始 redact_absolute_path_tokens 及其无依赖辅助函数,单独用 rustc 编译调用,实测:

输入:<div>ok</div>
实际:<div>ok<<absolute-path>>
预期:<div>ok</div>

当前代码

与 #532 的区别

#532 修复/跟踪的是逐 delta 的换行和片段路径问题;本项在完整工具结果上即可复现,不需要流式拆分,且影响工具详情。不会重复提交原 delta 问题。

验收

  • 普通 HTML 结束标签、属性、嵌套 JSON 转义在完整工具详情中保持原内容。
  • 展示投影与 canonical 中的非敏感代码片段一致;保留真实路径/凭据脱敏。
  • 回归同时覆盖 Unix/Windows/UNC/file URI 真路径和普通源码语法,不能简单关闭脱敏。
  • 对结构化字段使用合适的语境处理,避免序列化后反复脱敏引入二次损坏。

核查范围

2026-09-30 对九份项目导出做只读审计,代码基线 3540c5660fd294b70e054810b5384a2855908df5。本 Issue 仅登记问题,尚未实施修复。未重放项目付费操作,不提交原始会话、凭据或本地私密绝对路径。已排除 #529、#525、#518;偶发 Provider/网络错误不作为新增缺陷。

## 问题 工具结果先序列化为文本,再做无语境的绝对路径脱敏。HTML 结束标签中的 `/` 被识别为路径,嵌套 JSON 转义也可能被误判。完整工具结果已经到达,展示与诊断仍被改坏。 ## 现场与独立复现 `心情花园四季记-r2`:`project.jsonl:9` 的 canonical HTML 回包正常、redacted=false;`tool-calls.jsonl:4` 的工具详情中 lang/charset/结束标签出现错误 `<absolute-path>` 替换。模型收到的 canonical 结果在此样本中未损坏,不能声称模型因这项读取了错误代码。 从当前仓库提取原始 `redact_absolute_path_tokens` 及其无依赖辅助函数,单独用 rustc 编译调用,实测: ```text 输入:<div>ok</div> 实际:<div>ok<<absolute-path>> 预期:<div>ok</div> ``` ## 当前代码 - [`agent/direct_tool_calls.rs:104`](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/3540c5660fd294b70e054810b5384a2855908df5/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_calls.rs#L104):结构化结果转 `to_string_pretty`;第 269–273 行对整串调用 `sanitize_detail_text`。 - [`agent/direct_thread_wire.rs:928`](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/3540c5660fd294b70e054810b5384a2855908df5/apps/ai-game-creator-shell/src-tauri/src/agent/direct_thread_wire.rs#L928):对完整字符串做路径脱敏。 - [`repository_context.rs:2201`](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/3540c5660fd294b70e054810b5384a2855908df5/apps/ai-game-creator-shell/src-tauri/src/repository_context.rs#L2201):`<` 被视为边界,后续 `/` 被当成绝对路径;第 2255–2271 行不理解 HTML/JSON 语境。 ## 与 #532 的区别 #532 修复/跟踪的是逐 delta 的换行和片段路径问题;本项在**完整工具结果**上即可复现,不需要流式拆分,且影响工具详情。不会重复提交原 delta 问题。 ## 验收 - [ ] 普通 HTML 结束标签、属性、嵌套 JSON 转义在完整工具详情中保持原内容。 - [ ] 展示投影与 canonical 中的非敏感代码片段一致;保留真实路径/凭据脱敏。 - [ ] 回归同时覆盖 Unix/Windows/UNC/file URI 真路径和普通源码语法,不能简单关闭脱敏。 - [ ] 对结构化字段使用合适的语境处理,避免序列化后反复脱敏引入二次损坏。 ## 核查范围 2026-09-30 对九份项目导出做只读审计,代码基线 `3540c5660fd294b70e054810b5384a2855908df5`。本 Issue 仅登记问题,尚未实施修复。未重放项目付费操作,不提交原始会话、凭据或本地私密绝对路径。已排除 #529、#525、#518;偶发 Provider/网络错误不作为新增缺陷。
lhk229 added the
Priority
Medium
3
Kind/Bug
labels 2026-09-30 15:53:44 +08:00
k88936 self-assigned this 2026-09-30 16:39:41 +08:00
Member

....我记得tool-calls.jsonl应该被删除了

....我记得`tool-calls.jsonl`应该被删除了
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GenarrativeAI/Genarrative#553