拦截网页国旗字形,避免会话被接口拒收
29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add KAsyori/dsh-unicode-guard该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 剔除审核敏感字形
- 避免会话被拒收
DSH 插件:把会触发内容审核的字形类从所有模型可见的界面里剔除,让抓来的页面不会永久搞坏会话。
README
由 DeepSeek 最新模型翻译生成dsh-unicode-guard
一个 DSH host 端插件:把某一类罕见字形挡在所有「模型可见面」之外。
它防的是什么
部分推理端点会在请求体含有某个特定字形时直接拒收,返回 HTTP 400,理由只有一个 Content Exists Risk。这种字形进入请求的方式几乎总是意外:agent 抓取了一个网页,页面里的语言切换菜单或页脚用了国旗类 emoji,整页落进 tool 结果,此后该会话的每一次请求都会重放它。每次重试的字节完全一样,于是每次都同样失败,会话无法自行恢复。
关键在于「区域指示符对」(regional indicator pair):U+1F1E6..U+1F1FF 区间里相邻的两个码位,这正是国旗 emoji 的编码方式。页面本身没有任何问题——一个页脚就够了。
插件做什么
它在载荷造成伤害之前改写载荷,分三层:
| 钩子 | 层次 | 作用 |
| tools/post-execute | 工具结果 | 在结果被追加进会话之前改写内容 |
| agent/pre-step | 已受影响的会话 | 用净化后的副本替换出问题的 surface 节点,使该会话的下一轮就是干净的 |
| llm/stream | 出站请求 | 直接擦洗序列化后的请求体,是适配器派发前的最后一道钩子 |
三层缺一不可,因为它们覆盖的产出方不同。
展开完整文档(README 剩余 1 节)
dsh-unicode-guard 一个 DSH host 端插件:把某一类罕见字形挡在所有「模型可见面」之外。 它防的是什么 部分推理端点会在请求体含有某个特定字形时直接拒收,返回 HTTP 400,理由只有一个 Content Exists Risk。这种字形进入请求的方式几乎总是意外:agent 抓取了一个网页,页面里的语言切换菜单或页脚用了国旗类 emoji,整页落进 tool 结果,此后该会话的每一次请求都会重放它。每次重试的字节完全一样,于是每次都同样失败,会话无法自行恢复。 关键在于「区域指示符对」(regional indicator pair):U+1F1E6..U+1F1FF 区间里相邻的两个码位,这正是国旗 emoji 的编码方式。页面本身没有任何问题——一个页脚就够了。 插件做什么 它在载荷造成伤害之前改写载荷,分三层: | 钩子 | 层次 | 作用 | | tools/post-execute | 工具结果 | 在结果被追加进会话之前改写内容 | | agent/pre-step | 已受影响的会话 | 用净化后的副本替换出问题的 surface 节点,使该会话的下一轮就是干净的 | | llm/stream | 出站请求 | 直接擦洗序列化后的请求体,是适配器派发前的最后一道钩子 | 三层缺一不可,因为它们覆盖的产出方不同。只有第一层看得见工具结果;只有第三层看得见那些从不以工具结果形式流动的文本(压缩摘要、指令文件正文、MCP 服务器 instructions、定时任务提示词)。 区域指示符对会被改写成可读的 ASCII 标签。紧跟在改写之后的变体选择符(U+FE0F)会被删除,以免留下裸露的选择符。其余内容一律不动——普通 emoji、中日韩文字、以及其它任何非 BMP 字符都原样通过。 安装 作为组合包(推荐) dsh plugin add dsh-unicode-guard 本包自带 cordis.patch.yml,会把自身的插件行插入 profile,所以把它加进 profile 的 bundles 列表即可。 手工装进 profile 把目录链进 profile 的 node_modules,并在 profile 的 cordis.patch.yml 末尾追加一行: - insert: - id: unicode-guard name: dsh-unicode-guard config: mode: regional verbose: true 改 cordis.patch.yml 会热重载;新建链接本身需要重启。 配置 | 键 | 默认 | 含义 | | mode | regional | regional 只处理区域指示符对。astral 会把所有非 BMP 字符替换成 replacement,那会破坏正常输出——要刻意开启。 | | replacement | U+FFFD | 仅 astral 模式使用的替换字符。 | | toolResults | true | 工具结果落盘前擦洗。 | | userMessages | true | 会话自愈时擦洗 user 角色消息。 | | assistantMessages | false | 会话自愈时擦洗 assistant 消息。 | | request | true | 启用 llm/stream 兜底。 | | verbose | true | 每次改写通过 ctx.logger 记一行。 | 配置项写错(未知键或类型不对)会在挂载时报错,而不是静默失效。 怎么验证它在工作 挂载成功会记且只记一行: [I] [unicode-guard] unicode-guard: mounted (mode=regional, toolResults=true, ...) 每次改写都会记一条 warning,所以可以实时观察: [W] [unicode-guard] unicode-guard: scrubbed the web_fetch tool result [W] [unicode-guard] unicode-guard: healed 1 surface node(s), removed 2 glyph(s) [W] [unicode-guard] unicode-guard: scrubbed the outgoing request 一个不依赖任何日志的端到端验证:读一个含区域指示符对的文件,工具结果里必须显示 [FLAG:AB] 形式,而不是文件里的原始字形。 已经中毒的会话如何恢复 已遭拒收的会话会在下一轮自愈,不需要重试:agent/pre-step 在该轮请求组装之前运行,所以节点会先被替换掉,这一轮的第一个请求就已经是干净的。 修复手段是 surface replacement(表面替换)。会话日志是 append-only 的,所以原始记录仍留在磁盘上,只是在当前表面上被遮蔽了。这与内核自身做 tool 结果剪枝用的是同一套机制,也正是它保住了日志的完整性承诺。 设计要点 - 投影而非就地修改。 llm/stream 里的 message 是深度冻结的;被改动过的 message 必须以克隆体替换。就地改要么抛异常,要么破坏其它监听器还持有的那份对象。 - assistant/message 不能携带 sourceEventSeqs。 内核会拒绝,因为该事件自身内嵌了来源数据流,所以替换意图因事件类型而异。 - 擦洗整个载荷,而不只是 message。 tool 结果可能在 data.meta 里携带第二份载荷副本(read 工具把它带行号的窗口存在 meta.lines)。这份副本从不发给服务商,但留着它会让会话文件在 fork、导出、UI 回放时依然脏,所以一并擦洗。 - 修复动作绝不能反过来弄坏它所修复的那一轮。 自愈过程中抛异常的节点会被记日志并跳过,该轮继续正常进行。 - UTF-16 细节。 区域指示符是代理对。配对时按码位行走,绝不按裸码元,孤立代理会被原样通过而不是被弄坏。 测试 node --test test/ 测试套件没有任何依赖,也不需要下载 fixture。覆盖掩码器的边界情况(配对、落单、变体选择符、幂等、代理完整性)、钩子契约,以及请求期兜底的改写。 test/selfcheck.test.mjs 会在本仓库任何文件里出现真实非 BMP 字符时让整个测试失败。 一个自己就带着触发字形的插件本身就是污染源,所以这条性质是被强制的,而不是被承诺的。 适用范围与边界 - 它只处理被配置的字形类别;mode: astral 会扩大到所有非 BMP 字符。 - 它会改变模型看到的内容:国旗类 emoji 变成 [FLAG:AB]。这正是目的——用 ASCII 标签保住信息可读性,同时去掉让请求失败的那些字节。 - 修复不会让日志变小:被遮蔽的记录仍留在磁盘上。 - 它是客户端侧的健壮性措施,不替代服务端可能做的任何事。如果端点不再拒收这类字形,本插件就退化为一个无害的规范化器。 许可 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
KAsyori/dsh-unicode-guard
拦截网页国旗字形,避免会话被接口拒收
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7