dsh-text-guard: A DeepSeek Harness Plugin for Neutralizing Configured Code Point Sequences Before Session Logging

前言

DeepSeek Harness(DSH)运行在需要记录会话日志的环境中,而官方 DeepSeek API 对某些特定文本序列非常敏感。例如,某些区域指示符对(如 U+1F1F9 后接 U+1F1FC,即旗帜表情)会被 API 直接拒绝,返回 400 错误。由于 DSH 的机制要求每次请求都重发历史记录,一旦日志中包含这些被拒绝的序列,整个会话的后续轮次都会被阻断。

dsh-text-guard 是为此设计的一个插件,它在内容进入会话日志之前,对配置好的代码点序列进行中和处理。

插件定位

这是一个 DeepSeek Harness 插件,由开发者 7771sd 维护。它专注于解决因特定文本序列导致 API 拒绝请求,进而破坏会话连续性的问题。其核心价值在于在日志记录阶段拦截并替换这些敏感序列,确保会话可以正常继续。

核心功能

插件通过挂载到三个特定的钩子点来工作,在内容写入日志前进行重写:

  1. tools/post-execute: 拦截工具的执行结果,包括网页抓取、文件读取、命令输出等。
  2. tools/ptc-dispatch-log: 拦截 run_code 子分发的持久化日志副本。
  3. agent/pre-step: 拦截进入步骤的消息,包括用户粘贴的文本。

对于不匹配的序列,内容保持原样并保留原始对象身份,不影响性能。

安装与启用

使用 Harness CLI 进行安装,无需构建步骤或额外依赖:

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

安装后,插件会通过一个补丁挂载到“宽模式”(wide mode)。

配置说明

配置文件位于 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(匹配任意两个连续的区域指示符),设置为 exact 时仅匹配配置的 sequences。
  • sequences: 需要中和的代码点序列列表(在 exact 模式下有效)。
  • replacement: 替换文本模板,使用 {codepoints} 占位符插入匹配的代码点。
  • toolResults / userMessages / log: 控制在哪些阶段启用中和与日志记录。

注意: 修改配置后无法热加载,必须重新挂载插件包(禁用并启用)才能生效。

适用场景与注意

适用场景:
当你的智能体需要调用外部工具(如浏览器抓取、文件系统读写)时,这些输出可能包含 API 拒绝的文本。使用该插件可以防止这些内容进入会话日志,避免后续请求被阻断。

限制与注意事项:
1. 有损替换:插件的设计就是有损的。如果原始文本必须逐字保留,不要挂载此插件。
2. 系统提示不覆盖:通过 skill 文件或 instruction 文件注入到请求中的文本(系统提示部分)不会经过此拦截点,不受保护。
3. 日志不一致:被中和的用户消息在服务端日志中显示为替换后的文本,而客户端界面显示的仍是你发送的原始文本,两者会不一致。
4. 环境要求:需要 Node.js 版本 ^22.19 或 >=24。

结尾

dsh-text-guard 解决了因 API 内容风险过滤导致的会话崩溃问题。通过在日志记录前进行 ASCII 替换,它保证了会话历史的可重放性。更多细节可参考项目主页。

插件目录页
GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye