呱来点人口牙...再也不会误把api key粘贴喂给ai了!!!可自定义的安全等级与安全措施,解决容易泄漏api…
30.1/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/uwu9039/dsh-airbag.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 24 处,展示前 24 条)
- 发起网络请求src/client/api.ts:103
const res = await fetch(`${this.base}${path}`, { headers: { accept: 'application/json' } }) - 发起网络请求src/client/api.ts:109
const res = await fetch(`${this.base}${path}`, { - 发起网络请求src/client/api.ts:119
const res = await fetch(`${this.base}${path}`, { - 发起网络请求src/client/api.ts:129
const res = await fetch(`${this.base}${path}`, { method: 'DELETE' }) - 写入剪贴板src/client/paste-guard.ts:206
void navigator.clipboard?.writeText(`[REDACTED:${match.rule.label}]`).catch(() => {}) - 读取本地文件src/config.ts:162
const info = await stat(this.configPath).catch(() => null) - 读取本地文件src/config.ts:166
if (existsSync(this.configPath)) { - 读取本地文件src/config.ts:167
const text = await readFile(this.configPath, 'utf8').catch(() => null) - 写入本地文件src/config.ts:184
await writeFile(this.configPath, `${JSON.stringify(normalized, null, 2)}\n`, 'utf8') - 读取本地文件src/config.ts:186
this.cachedMtimeMs = await stat(this.configPath).then((s) => s.mtimeMs).catch(() => 0) - 读取本地文件src/config.ts:203
if (!existsSync(this.rulesPath)) return '' - 读取本地文件src/config.ts:204
return readFile(this.rulesPath, 'utf8').catch(() => '') - 写入本地文件src/config.ts:210
await writeFile(this.rulesPath, content, 'utf8') - 读取本地文件src/index.ts:102
const info = await stat(root).catch(() => null) - 读取本地文件src/scan.ts:39
const info = await stat(path) - 读取本地文件src/scan.ts:53
entries = await readdir(current, { withFileTypes: true }) - 读取本地文件src/scan.ts:107
const gitText = await readFile(gitConfig, 'utf8').catch(() => '') - 读取本地文件src/scan.ts:123
const info = await stat(file).catch(() => null) - 读取本地文件src/scan.ts:125
const content = await readFile(file, 'utf8').catch(() => '') - 写入本地文件src/store.ts:46
await mkdir(this.dir, { recursive: true }) - 写入本地文件src/store.ts:52
await appendFile(this.eventsFile, `${JSON.stringify(event)}\n`, 'utf8') - 读取本地文件src/store.ts:59
const text = await readFile(this.eventsFile, 'utf8').catch(() => '') - 删除本地文件src/store.ts:81
if (existsSync(this.eventsFile)) await rm(this.eventsFile) - 读取本地文件src/store.ts:81
if (existsSync(this.eventsFile)) await rm(this.eventsFile)
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 拦截粘贴的API密钥
- 拦截写入的API密钥
- 记录泄露事件
展开完整介绍(78 字)↓
呱来点人口牙...再也不会误把api key粘贴喂给ai了!!!可自定义的安全等级与安全措施,解决容易泄漏api key的底层问题。同时有报告记录可查!!!
README
由 DeepSeek 最新模型翻译生成dsh-airbag
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.
DeepSeek Harness 的非侵入式安全护栏:拦截粘贴给 Agent 的 API 密钥、追踪泄露事件、拦截密钥写入,并提供首次工作区安全体检。
Features
- Paste guard (A1) — pasting a secret (DeepSeek / OpenAI / Anthropic keys, AWS, GitHub PATs, JWT, PEM private-key blocks, Aliyun / Tencent Cloud AccessKeys, and 45+ built-in patterns) into the composer is blocked, redacted, or warned per your settings. The decision happens synchronously inside the paste event; nothing is ever
展开完整文档(README 剩余 1 节)
dsh-airbag
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.
DeepSeek Harness 的非侵入式安全护栏:拦截粘贴给 Agent 的 API 密钥、追踪泄露事件、拦截密钥写入,并提供首次工作区安全体检。
Features
- Paste guard (A1) — pasting a secret (DeepSeek / OpenAI / Anthropic keys, AWS, GitHub PATs, JWT, PEM private-key blocks, Aliyun / Tencent Cloud AccessKeys, and 45+ built-in patterns) into the composer is blocked, redacted, or warned per your settings. The decision happens synchronously inside the paste event; nothing is ever sent to the model.
- Write guard (A2) — model write-direction tool calls (write / edit / bash / run_code) whose arguments carry a secret are denied (hard block) or routed through the native approval seam (ask) — the confirmation stays in the harness UI, never a bypass.
- Approval-fatigue insights (B) — a passive observer on the native approval waterfall: it never decides, but it measures asked→decided timing and flags blind approvals (granted in under 2s — rubber-stamping) and fatigue episodes (30 minutes of dense, near-universal grants). Insights land in the event feed as ordinary records.
- Corner notification center (G1) — four non-intrusive levels: L0 silent, L1 badge only, L2 corner toast (auto-dismisses, no sound, no focus steal), L3 persistent badge. Events collapse under the same 5-minute window; a global do-not-disturb switch hides everything.
- First-run health scan (G6) — read-only scan of a workspace for .env files, credential files, embedded secrets, and git remote credentials. Reports masked fragments only.
- Privacy by construction — plaintext secrets never touch disk, logs, or telemetry: only masked fragments (sk-0*cdef) and SHA-256 prefixes are persisted, under ~/.dsh/airbag/.
Install
Pick any of the three methods below, then restart DSH Web. A 🛡️ Airbag button appears in the bottom-right corner (with a badge on first run — that's the health-scan invitation).
Method 1: From npm (recommended)
dsh plugin --profile web add dsh-airbag
Method 2: From a tarball
Download dsh-airbag-0.4.2.tgz from the GitHub Release page (or generate it yourself with npm pack dsh-airbag), then:
dsh plugin --profile web add ./dsh-airbag-0.4.2.tgz
You can also point add directly at the release asset (identical content to the npm package):
dsh plugin --profile web add https://github.com/uwu9039/dsh-airbag/releases/download/v0.4.2/dsh-airbag-0.4.2.tgz
Method 3: From GitHub
dsh plugin --profile web add github:uwu9039/dsh-airbag#<commit-sha>
A GitHub install fetches source, not built artifacts: pnpm runs the prepare script (tsdown) to build on install. pnpm ≥10 refuses to run a git dependency's build script until it is explicitly allowed, so the first add fails — add the package to the profile's pnpm-workspace.yaml first, then re-run the command above:
at ~/.dsh/profiles/<profile>/pnpm-workspace.yaml
allowBuilds:
dsh-airbag: true
To uninstall: dsh plugin --profile web remove dsh-airbag.
Usage
Click the 🛡️ button to open the panel with three tabs:
| Tab | What it does |
| 拦截记录 (Events) | Today's interceptions: time, category, action, masked fragment; clear history |
| 体检 (Scan) | Enter a workspace path and run the read-only health scan |
| 设置 (Settings) | Default action (block/redact/warn), per-event notice levels (L0–L4), do-not-disturb, sound, whitelist, custom regex rules (rules.yaml) |
All notice levels and dispositions are configured only in the settings tab — notifications never offer in-place toggles.
Custom rules live in ~/.dsh/airbag/rules.yaml (YAML list):
- pattern: 'INT_[A-Z0-9]{12}'
label: 内网 Token action: block severity: high notice: 3
Configuration
The plugin accepts a config block in your cordis.yml row (all optional):
- id: airbag
name: dsh-airbag
config:
dataDir: ~/.dsh/airbag # where events/config/rules live
defaultAction: block # block | redact | warn
maxPasteBytes: 10240 # max pasted bytes scanned
maxScanFileBytes: 262144 # per-file scan cap
maxScanFiles: 200 # files content-scanned per health scan
Development
Requirements: Node.js ^22.19 || >=24, pnpm.
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
pnpm pack # produces dsh-airbag-0.4.2.tgz
Smoke-test a local checkout:
pnpm run build
dsh plugin --profile web add ./dsh-airbag-0.4.2.tgz
dsh --profile web
Architecture
src/index.ts Host plugin entry: event store, settings file, scan, A2 write guard, HTTP API
src/rules.ts Pure secret-detection engine (45+ built-in patterns, custom rules, whitelist)
src/store.ts Append-only JSONL event store
src/config.ts Deployment Config schema + user settings file (config.json / rules.yaml)
src/scan.ts Read-only workspace health scan
src/write-guard.ts A2 write-direction decision engine (pre-execute payload scanning)
src/approval-insight.ts B approval-fatigue observer (blind-burst / fatigue detection, pure logic)
src/routes.ts /dsh-airbag/api/ HTTP routes (web profiles only, via ctx.inject(['webServer']))
src/client/index.ts Web client entry: mounts paste guard + notification center + panel
src/client/paste-guard.ts A1 paste interception (composer-scoped, synchronous decision)
src/client/notify.ts G1 corner notification center (4 levels, aggregation, DND)
src/client/panel.ts Panel UI (events / scan / settings)
The host communicates with the browser half through the same-origin /dsh-airbag/api/ routes — no extra RPC surface. The A2 write guard listens on the official tools/pre-execute waterfall and returns deny / ask decisions; the browser half polls the event API every 30s so host-side interceptions surface as badge updates.
Non-goals
- Reading-direction redaction is intentionally left to dsh-guardian.
- The write time-machine (C — pre-write snapshots and one-click rollback) is planned for a later milestone.
- The plugin never replaces the native approval seam — every decision stays with you.
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
uwu9039/dsh-airbag
呱来点人口牙...再也不会误把api key粘贴喂给ai了!!!可自定义的安全等级与安全措施,解决容易泄漏api…
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1