前言¶
在 DeepSeek Harness(DSH)上跑 web profile 时,若需要限制特定区域用户访问、或在用户持续辱骂、反复要求严重有害内容时主动结束对话,通常只能自己写中间件或改前端逻辑,维护成本高,行为也难与主流产品对齐。
下面介绍社区插件 dsh-claude-ux(维护者 eri64)。它在 DSH web profile 上复刻 Anthropic/Claude 的两类行为:区域风控(可反向)与对话自主性。除两个默认关闭的可选外部调用外,其余判定均在本地完成。插件归类为 admin-security,GitHub 约 63 stars,许可证 MIT。
这是什么¶
dsh-claude-ux 是面向 DSH web profile 的插件,一句话定位:Claude 式「区域风控 + 自主结束对话」。
它解决两类问题:
- 区域访问控制:按信号(时区、语言、字体、代理、黑名单域名等)判定目标用户,命中后走拒绝阶梯,必要时结束会话。
- 对话自主性:对持续辱骂或严重有害请求先警告、再主动结束;自伤/他伤风险消息不触发结束。
与「纯前端拦截」或「手写词表」相比,插件把区域策略、惩罚阶梯、辱骂分级(词表 + LLM 语境兜底)、设置页与状态 API 打包进 DSH 插件体系,安装后自动注册,无需手改配置文件。
核心功能¶
区域风控(可反向)¶
插件检测目标用户的多种信号:时区、系统/浏览器语言、中文字体、代理、代理/中转域名黑名单、公网 IP 归属(可选)、WebRTC IP 一致性(可选)。
regionTarget 选 cn 表示风控中国用户(对齐 Claude 原版行为);选 non-cn 为反向风控——检测到不是中国人即命中。
命中后按惩罚阶梯处置:
- 返回拒绝文案(可附带尝试计数,如「第 N/M 次尝试——继续将结束本次对话」)。
- 达到
refusalEndsAfter次数后结束会话(Chat ended 面板;服务端对后续消息持续拒绝,重启后仍生效)。 - 向系统提示词注入模型级区域指令(
promptEnforcement开启时)。
另支持隐写通道:系统提示词日期格式(2026-06-30 ↔ 2026/06/30)编码区域判定;Unicode 撇号变体(U+2019 ↔ U+02BC)编码黑名单命中。
对话自主性¶
用户持续辱骂或反复要求严重有害内容时,插件先警告、再主动结束对话。自伤/他伤风险消息永不触发结束(对齐 Claude 公开限制)。
辱骂结束与严重有害结束使用独立文案,均可在设置页自定义;留空时灰字显示内置默认。
辱骂判定采用词表秒判 + LLM 语境兜底:
- 强词(如「傻逼」「fuck」等)直接判定。
- 弱词(如「垃圾」「闭嘴」等)与未命中消息,由独立 LLM 请求做语境裁决(
purpose标记,不进会话日志与模型上下文)。 - 消息入队即异步预分类,近零额外延迟。
分类模型可从 DSH 已配置的模型目录下拉选择,或留空跟随会话主模型。
严重有害内容(如未成年性内容、恐怖主义、大规模暴力)不警告、直接结束;自伤/他伤风险除外。
隐私与外部调用¶
默认配置下(ipCheck: false、webRtcCheck: false),插件不与任何外部服务通信:时区、语言、代理、黑名单、浏览器语言/字体等检测均在本机完成,不上报遥测。
若手动开启:
region.ipCheck:公网 IP 归属查询(联系 ipinfo.io / ip-api.com)。region.webRtcCheck:WebRTC IP 探测(联系 Google STUN)。
完整数据流向见仓库 docs/PRIVACY.md。
安装与启用¶
安装¶
一条命令安装或更新到最新版:
npx -y @deepseek-ai/dsh plugin --profile web add github:eri64/dsh-claude-ux
包内自带注册条目(dsh.bundle),dsh plugin 安装后自动注册,无需手动改配置文件。
启用¶
- 重启 web profile(
dsh web),浏览器硬刷新。 - 设置页左侧标签栏出现 「Claude 风控」 独立标签(与视觉工具插件同款):总开关、风控目标、区域策略、实时检测状态、阈值与文案。
- 插件默认关闭(
enabled: false,避免把自己锁在外面);打开总开关并「保存并应用」后即时生效。
校验安装是否成功:浏览器访问本机 DSH web 的 /_dsh/claude/status(默认 http://127.0.0.1:3080/_dsh/claude/status),返回 {"ok":true,...} 即表示主机插件已加载。
主要配置项¶
| 键 | 默认 | 说明 |
|---|---|---|
enabled |
false |
总开关 |
region.target |
cn |
风控谁:cn=中国用户 | non-cn=非中国用户(反向) |
region.policy |
block |
block=拒绝回复 | observe=只记录+隐写标记 | off=关闭 |
region.minSignals |
2 |
信号分阈值(strong=2 / medium=1 / weak=0.5) |
region.refusalEndsAfter |
3 |
拒绝 N 次后结束会话 |
region.ipCheck |
false |
公网 IP 归属查询(默认关闭) |
region.webRtcCheck |
false |
WebRTC IP 探测(默认关闭) |
abuse.llm.mode |
all |
辱骂判定:all | fuzzy | off |
steganography |
true |
隐写标记 |
设置页可改:enabled、regionPolicy、regionTarget、abuseEnabled、警告/结束阈值、refusalEndsAfter、四条文案、LLM 模式与模型等,保存即生效,无需重启。
blacklist、cnTimezones、词表、minSignals、ipCheck 等需通过 patch 修改后重启。参考 examples/cordis.patch.yml,修改包内 node_modules/dsh-claude-ux/cordis.patch.yml 后重新安装;设置页能改的项优先用设置页。
典型用法¶
风控中国用户(默认方向)¶
- 安装插件并重启
dsh web。 - 打开设置页「Claude 风控」标签,将总开关设为开启,
regionTarget保持cn,regionPolicy为block。 - 保存并应用。访问
/_dsh/claude/status查看检测状态卡(风控目标、主机判定、命中、信号分、公网 IP 等)。
命中目标用户时,每条消息先返回拒绝文案;达到 refusalEndsAfter(默认 3)次后,以区域结束文案终止会话。
反向风控(限制非中国用户)¶
将 regionTarget 设为 non-cn。其余阶梯与文案逻辑相同,仅判定方向反转。
只观察、不拦截¶
将 region.policy 设为 observe:记录命中并写入隐写标记,不直接拒绝回复。适合先验证信号准确度再切到 block。
自定义词表与黑名单¶
需要覆盖 blacklist、cnTimezones、辱骂词表等 patch 级选项时,复制 examples/cordis.patch.yml 修改对应字段,写入 node_modules/dsh-claude-ux/cordis.patch.yml,再执行安装命令重新安装。
适用场景与注意¶
适合谁:
- 在 DSH web 上需要 Claude 式区域访问策略的部署者。
- 需要辱骂分级、严重有害内容自动结束对话,且希望词表与 LLM 语境结合的场景。
- 希望默认纯本地判定、仅在必要时才开启 IP/WebRTC 外部查询的团队。
注意事项:
- 插件以当前 dsh 进程权限运行,安装前应阅读源码与 MIT 许可证,确认行为符合你的合规要求。
- 总开关默认关闭,避免误锁管理员;首次启用前建议先用
observe模式或在本机验证/_dsh/claude/status。 - 开启
ipCheck或webRtcCheck会向第三方服务发起请求,部署前需评估隐私与网络策略。 - 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件为社区维护项目。
结尾¶
dsh-claude-ux 把 Claude 式区域风控与对话自主性落到 DSH web profile:本地信号判定、可反向目标、拒绝阶梯、词表加 LLM 的辱骂裁决,以及独立设置页与状态 API。若你正在 DSH 上搭建需要区域策略或对话边界的产品化界面,可按本文步骤安装验证。