Back to home@nmsl1234

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.yamlprivacy-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 本体