🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

文本守卫 7771sd/dsh-text-guard

DeepSeek Harness
7771sd26 天前有提交已提供中文文档扫描:未发现敏感能力

拦截危险码点序列,避免会话被 API 拒收报废

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/6 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 7771sd/dsh-text-guard
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · security
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 拦截危险码点序列
  • 进入日志前中和

DeepSeek Harness 插件:在配置的码点序列进入会话日志前将其中和

README

由 DeepSeek 最新模型翻译生成
dsh-text-guard 一个 DeepSeek Harness 插件:在工具结果与进入步骤的消息写入会话日志之前,中和掉配置的码点序列。 它解决什么问题 官方 DeepSeek API 在请求携带某些文本时,会把整条请求判为 400 INVALID_REQUEST (Content Exists Risk)。对实测到的那一串——区域指示符 U+1F1F9 紧跟 U+1F1FC,即合成一面旗帜 emoji 的那一对——字符级二分显示:这一对会被拒收,而任一单字符、倒序、其他组合都正常。 由于每一轮都会重发已存历史,序列一旦进入会话日志,该会话其后每一轮都会被拒收。会话就此报废:重试无效,重启程序无效,只能新建。而这类序列通常不是用户敲进去的,而是抓取回来的网页、文件内容或命令输出经由工具结果带进来的。 它做什么 在内容进入日志的位置改写配置的序列: | 挂钩点 | 覆盖内容 | | tools/post-execute | 被接受的工具结果——联网抓取、读文件、命令输出、子代理与工作流结果 | | tools/ptc-dispatch-log | 一次 run_code 子派发结果的持久日志副本 | | agent/pre-step | 进入本步的消息,包括用户粘贴的文本 | 没有命中的内容原样通过并保留原有对象身份,因此未受影响的派发只付出一次正则探测的代价。
展开完整文档(README 剩余 1 节)
dsh-text-guard

一个 DeepSeek Harness 插件:在工具结果与进入步骤的消息写入会话日志之前,中和掉配置的码点序列。

它解决什么问题

官方 DeepSeek API 在请求携带某些文本时,会把整条请求判为 400 INVALID_REQUEST (Content Exists Risk)。对实测到的那一串——区域指示符 U+1F1F9 紧跟 U+1F1FC,即合成一面旗帜 emoji 的那一对——字符级二分显示:这一对会被拒收,而任一单字符、倒序、其他组合都正常。

由于每一轮都会重发已存历史,序列一旦进入会话日志,该会话其后每一轮都会被拒收。会话就此报废:重试无效,重启程序无效,只能新建。而这类序列通常不是用户敲进去的,而是抓取回来的网页、文件内容或命令输出经由工具结果带进来的。

它做什么

在内容进入日志的位置改写配置的序列:

| 挂钩点 | 覆盖内容 |
| tools/post-execute | 被接受的工具结果——联网抓取、读文件、命令输出、子代理与工作流结果 |
| tools/ptc-dispatch-log | 一次 run_code 子派发结果的持久日志副本 |
| agent/pre-step | 进入本步的消息,包括用户粘贴的文本 |

没有命中的内容原样通过并保留原有对象身份,因此未受影响的派发只付出一次正则探测的代价。改写发生在写入之前,这正是 Session 的重放、分叉以及其后每个请求保持一致的原因;替换文本是纯 ASCII,绝不会把该序列重新带回来。

安装

用 Harness 命令行:

dsh plugin --profile <profile> add github:7771sd/dsh-text-guard

或在 Plugin Manager 的安装框里填同一个 spec。本插件无依赖、无构建步骤。

配置

随附的组合包补丁以宽模式挂载。每个字段都可以在你自己 profile 的 cordis.patch.yml 里覆盖:

- id: text-guard
config:
mode: exact
sequences: [[0x1F1F9, 0x1F1FC]]
replacement: '[flag U+{codepoints}]'
toolResults: true
userMessages: true
log: true

| 字段 | 默认值 | 含义 |
| mode | regional-pairs | regional-pairs 匹配任意两个连续的区域指示符(U+1F1E6–U+1F1FF);exact 只匹配配置的 sequences。 |
| sequences | [[0x1F1F9, 0x1F1FC]] | mode: exact 要中和的码点序列;每一项按连续顺序匹配。 |
| replacement | [flag U+{codepoints}] | 替换模板;每个 {codepoints} 会替换为命中的码点,例如 U+1F1F9 U+1F1FC。 |
| toolResults | true | 中和被接受的工具结果与 run_code 派发日志。 |
| userMessages | true | 中和进入步骤的消息。 |
| log | true | 每个受影响的派发记录一行摘要,只记数量,绝不记命中的文本。 |

改配置不会热生效:改完补丁后需要重新挂载该组合包(先停用再启用)。

为什么挂在日志入口

dsh-agent-loop 会深冻结请求消息,并明确记录 agent/request 监听器不能修改请求消息;而 Harness 的规则是模型看到的一切都必须能从会话日志重建。在写入之后改写会破坏这种可重建性,因此中和器运行在内容进入日志的位置,而不是报文出口。

已验证

- node test/text-guard.test.mjs —— 九项离线检查:内容与 value 形式的改写、block 决策透传、干净结果返回同一引用、消息改写保留身份与 startsRequestSeries、不修改入参、两个作用面可干净关闭、成对匹配、单字符透传。
- 在真实 profile 里端到端跑通:把插件临时配置为中和一个 ASCII 探针后,输出含该探针的命令结果在到达模型时已被改写。

未验证:作者从未真的向它发过一面真旗帜 emoji —— 因为证明过滤器会拒收它的那个实验,同时也会毁掉跑实验的那个会话。

已知限制

- 经由系统提示段落抵达请求的文本——自带该序列的技能文件或指令文件——不经过这些入口。
- 被改写的用户消息以中和后的形式入日志,而聊天客户端仍显示你发出的原文,两处对同一条消息的呈现不一致。
- 改写在设计上是有损的。当原文对任务必须逐字保真时,不要挂载它。

许可

MIT
预览分享卡片长什么样 ↓7771sd/dsh-text-guard
分享 · DeepSeek Harness Hub
7771sd/dsh-text-guard

拦截危险码点序列,避免会话被 API 拒收报废

回到顶部