现象
v1.5.0 引入的敏感词过滤器(sensitive_filter.py)目前覆盖了以下路径:
- ✅ 文本 LLM 输入(
service.py:617)
- ✅ 文本 LLM 输出(
service.py:896)
- ✅ 对话历史 scrub(
service.py:772)
- ✅ 工具调用 arguments(
tool_loop.py:235)
- ✅ 工具调用 results(
tool_loop.py:259)
以下多模态路径未接入过滤器:
- ❌
/draw 图片生成 — prompt 未扫描(generation/image.py)
- ❌
/tts 语音合成 — 输入文本未扫描(generation/audio.py)
- ❌ ASR 语音识别 — 转写文本注入 LLM 前未扫描(
generation/asr.py)
- ❌ 图片理解 — 视觉模型转述文本注入 LLM 前未扫描(
llm/image_preprocessor.py,VisionImagePreprocessor.describe_images 返回的 ImageDescription.text_description)
- ❌
/music 音乐生成 — 歌词文本未扫描(generation/music.py)
- ❌
/defectify 故障机器人 — 输入文本未扫描(llm/defectify.py)
另外 generation/config.py 中 ImageGenerationConfig / AudioGenerationConfig / MusicGenerationConfig 均声明了 prompt_blocklist: list[str] 字段,但实际代码中未发现读取或执行该字段的逻辑。
影响
- 用户可能通过
/draw / /tts / /music 等命令提交含敏感词的文本,绕过输入侧过滤器直接发给外部生成服务(可能触发服务商的审核网关)
- ASR 转写和视觉模型转述的外部内容注入 LLM 时同样绕过了过滤器(与 v1.5.0 工具调用结果扫描修复的"外部来源拉取违规内容"场景类似)
/defectify 作为 LLM 调用的变体,未被过滤器保护
现象
v1.5.0引入的敏感词过滤器(sensitive_filter.py)目前覆盖了以下路径:service.py:617)service.py:896)service.py:772)tool_loop.py:235)tool_loop.py:259)以下多模态路径未接入过滤器:
/draw图片生成 — prompt 未扫描(generation/image.py)/tts语音合成 — 输入文本未扫描(generation/audio.py)generation/asr.py)llm/image_preprocessor.py,VisionImagePreprocessor.describe_images返回的ImageDescription.text_description)/music音乐生成 — 歌词文本未扫描(generation/music.py)/defectify故障机器人 — 输入文本未扫描(llm/defectify.py)另外
generation/config.py中ImageGenerationConfig/AudioGenerationConfig/MusicGenerationConfig均声明了prompt_blocklist: list[str]字段,但实际代码中未发现读取或执行该字段的逻辑。影响
/draw//tts//music等命令提交含敏感词的文本,绕过输入侧过滤器直接发给外部生成服务(可能触发服务商的审核网关)/defectify作为 LLM 调用的变体,未被过滤器保护