deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DeepSeek Harness 的非侵入式安全护栏:拦截粘贴给 Agent 的 API 密钥、追踪泄露事件、拦截密钥写入,并提供首次工作区安全体检。
Non-intrusive safety belt for DeepSeek Harness: blocks API keys pasted to the agent, tracks leak events, blocks secret writes, and offers a first-run workspace health scan.
write / edit / bash / run_code)的参数携带密钥时,硬拦截(deny) 或转交原生审批通道(ask)——确认始终停留在 DSH 界面,绝无绕过。.env 文件、凭据文件、内嵌密钥、git 远端凭据,仅报告掩码片段。sk-0***cdef)与 SHA-256 前缀,存放于 ~/.dsh/airbag/。任选以下一种方式安装,完成后重启 DSH Web。右下角会出现 🛡️ Airbag 按钮(首次运行带角标,即安全体检邀请)。
dsh plugin --profile web add dsh-airbag
从 GitHub Release 下载 dsh-airbag-0.4.2.tgz(或运行 npm pack dsh-airbag 自行生成),然后:
dsh plugin --profile web add ./dsh-airbag-0.4.2.tgz
也可以直接使用 Release 资产地址(与 npm 包内容一致):
dsh plugin --profile web add https://github.com/uwu9039/dsh-airbag/releases/download/v0.4.2/dsh-airbag-0.4.2.tgz
dsh plugin --profile web add github:uwu9039/dsh-airbag#<commit-sha>
GitHub 安装拉取的是源码,pnpm 会在安装时执行
prepare脚本(tsdown)现场构建。pnpm ≥10 默认禁止执行 git 依赖的构建脚本,首次add会失败——先在 profile 的pnpm-workspace.yaml中授权该包,再重新执行上面的命令:
# 位于 ~/.dsh/profiles/<profile>/pnpm-workspace.yaml
allowBuilds:
dsh-airbag: true
卸载:dsh plugin --profile web remove dsh-airbag。
点击右下角 🛡️ 按钮打开面板,共三个标签页:
| 标签页 | 功能 |
|---|---|
| 拦截记录 | 今日拦截事件:时间、类别、处置动作、掩码片段;可清空历史 |
| 体检 | 输入工作区路径,运行只读安全体检 |
| 设置 | 默认处置(阻止 / 脱敏 / 警告)、各事件通知级别(L0–L4)、免打扰、声音、白名单、自定义规则(rules.yaml) |
所有通知级别与处置方式只在设置页配置,通知浮层不提供就地开关。
自定义规则位于 ~/.dsh/airbag/rules.yaml(YAML 列表):
- pattern: 'INT_[A-Z0-9]{12}'
label: 内网 Token
action: block
severity: high
notice: 3
插件接受 cordis.yml 行中的 config 块(所有项均可选):
- id: airbag
name: dsh-airbag
config:
dataDir: ~/.dsh/airbag # 事件 / 配置 / 规则存放目录
defaultAction: block # block | redact | warn
maxPasteBytes: 10240 # 粘贴扫描的最大字节数
maxScanFileBytes: 262144 # 单文件体检上限
maxScanFiles: 200 # 每次体检扫描的文件数
要求:Node.js ^22.19 || >=24,pnpm。
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm pack # 产出 dsh-airbag-0.4.2.tgz
本地冒烟测试:
pnpm run build
dsh plugin --profile web add ./dsh-airbag-0.4.2.tgz
dsh --profile web
src/index.ts 宿主插件入口:事件存储、设置、体检、A2 写入拦截、HTTP API
src/rules.ts 纯密钥检测引擎(45+ 内置模式、自定义规则、白名单)
src/store.ts 追加式 JSONL 事件存储
src/config.ts Deployment Config schema + 用户设置文件(config.json / rules.yaml)
src/scan.ts 只读工作区安全体检
src/write-guard.ts A2 写方向判定引擎(执行前 payload 扫描)
src/approval-insight.ts B 审批疲劳观察(盲批 / 疲劳检测,纯逻辑)
src/routes.ts /dsh-airbag/api/* HTTP 路由(web profile,经 ctx.inject(['webServer']))
src/client/index.ts Web 客户端入口:粘贴拦截 + 通知中心 + 面板
src/client/paste-guard.ts A1 粘贴拦截(composer 作用域,同步判定)
src/client/notify.ts G1 边角通知中心(四级、聚合、免打扰)
src/client/panel.ts 面板 UI(拦截记录 / 体检 / 设置)
宿主与浏览器端通过同源 /dsh-airbag/api/* 路由通信,无额外 RPC 面。A2 写入拦截监听官方 tools/pre-execute waterfall 并返回 deny / ask;浏览器端每 30s 轮询事件 API,使宿主侧拦截实时反映为角标更新。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。