dsh-privacy-gate
dsh-plugin
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 31, 2026
- Updated
- Aug 31, 2026
Introduction
dsh-privacy-gate(隐私判断)
云端主模型会话下,用户输入与工具结果在进入云端上下文之前被自动拦截:敏感内容替换为占位符,原文不上云。判断模型由用户自填(本机 Ollama 或任意 OpenAI 兼容 API)。主模型本地或未配置 judge 时插件自动跳过(零开销)。
topic:
dsh-plugin· DeepSeek Harness 插件
工作原理
挂载两个 harness 事件瀑布(零本体改动):
agent/pre-step:用户消息进入模型请求前,对文本过敏感判断;命中 → 原位替换为占位符 + 注入拦截说明tools/post-execute:工具结果物化进上下文前,对结果文本过判断;命中 → 替换为占位符
判断器为裸调用(零注入):直接 fetch 用户配置的 API,无 AGENTS.md/记忆/技能上下文,无状态,带 LRU 缓存。
安装
# 在插件 checkout 目录(或任意本地路径):
dsh plugin --profile <你的profile> add <本仓库URL>
# 然后在预设的 agent.cordis.yml 追加挂载行:
# - id: privacy-gate
# name: dsh-privacy-gate
(与 dsh-heart 同安装模式。)
配置
在挂载行的 config: 块填写(默认全空,填了才激活):
- id: privacy-gate
name: dsh-privacy-gate
config:
enabled: true
judge:
provider: ollama # ollama | openai
baseUrl: http://127.0.0.1:11434
model: Ornith-128k:latest
multimodal: false # 原生多模态模型可开启(图片附件也过判断)
timeoutMs: 15000
maxChars: 20000
localProviders: # 视为本地的主模型 provider,命中则跳过
- ollama
- OpenAI 兼容端点:apiKey 填
.dsh/.credentials.yaml的privacy-gate.judge.apiKey(不进配置文件) localProviders默认['ollama']——主模型是本地时插件不起效(全链路本就本地)
行为
- 命中 → 占位符
[隐私拦截: <类别>|<原因>]+ 拦截说明(不含原文) - judge API 不可用 → fail-open:放行 + 提示(不阻断对话;失败结果不缓存,下次重判)
- 同文本缓存(LRU 1024,FNV 键),
ok:false不缓存
隐私注意
判断文本(含敏感原文)会发送给用户自填的 judge API:本机 Ollama 不出本机;若填云端 API,原文将上云——用户自选模型的自负责行为。多模态开启时图片附件同样发给 judge API。
测试
node --test lib/gate.test.mjs
依赖
- npm:仅
@deepseek-ai/cordis(peer,optional) - 服务:
agents(agent/pre-step)、tools(tools/post-execute)、credentials(可选 seam) - 零运行时 npm 依赖;不碰 DSH 本体