把 Vaultwarden / Bitwarden 接入 DeepSeek Harness。密码库可在「设置 →…
36.5/100
综合分
2
GitHub 星标
2,627
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-vaultwardennpm 源 · dsh-vaultwarden 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-vaultwarden @ 0.13.1
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 20:48:10
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 55 处,展示前 46 条)
- 读取本地文件lib/index.js:862
const stat = statSync(path) - 读取本地文件lib/index.js:864
raw = readFileSync(path, 'utf8') - 写入剪贴板lib/client.js:4701
await navigator.clipboard.writeText(String(text ?? '')) - 读取剪贴板lib/client.js:4708
const current = await navigator.clipboard.readText() - 写入剪贴板lib/client.js:4712
await navigator.clipboard.writeText('') - 读取本地文件lib/gateway.js:47
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) - 删除本地文件lib/session-store.js:69
rmSync(this.path, { force: true }) - 读取本地文件lib/session-store.js:86
if (!existsSync(this.path)) return null - 读取本地文件lib/session-store.js:87
raw = readFileSync(this.path, 'utf8') - 读取本地文件lib/session-store.js:171
present = existsSync(this.path) && statSync(this.path).size > 0 - 读取本地文件lib/session-store.js:171
present = existsSync(this.path) && statSync(this.path).size > 0 - 删除本地文件lib/cache-store.js:90
rmSync(this.path, { force: true }) - 读取本地文件lib/cache-store.js:109
if (!existsSync(this.path)) return null - 读取本地文件lib/cache-store.js:110
raw = readFileSync(this.path) - 读取本地文件lib/cache-store.js:187
present = existsSync(this.path) && statSync(this.path).size > 0 - 读取本地文件lib/cache-store.js:187
present = existsSync(this.path) && statSync(this.path).size > 0 - 读取本地文件lib/cache-store.js:220
const key = readFileSync(this.keyPath) - 读取本地文件lib/mask.js:79
if (existsSync(keyPath)) { - 读取本地文件lib/mask.js:80
const key = readFileSync(keyPath) - 读取本地文件lib/mask.js:93
const landed = readFileSync(keyPath) - 读取本地文件lib/passkey.js:247
for (const name of readdirSync(dir)) { - 读取本地文件lib/passkey.js:251
const stat = statSync(file) - 删除本地文件lib/passkey.js:252
if (stat.isFile() && now - stat.mtimeMs > maxAgeMs) rmSync(file, { force: true }) - 读取本地文件lib/passkey.js:284
const stat = statSync(full) - 删除本地文件lib/passkey.js:286
rmSync(full, { force: true }) - 读取本地文件lib/passkey.js:297
for (const name of readdirSync(root)) { - 写入本地文件lib/passkey.js:319
appendFileSync(file, JSON.stringify(record) + '\n', { mode: 0o600 }) - 写入本地文件lib/passkey.js:321
chmodSync(file, 0o600) - 读取本地文件lib/passkey.js:335
const lines = readFileSync(join(dir, 'audit.jsonl'), 'utf8').split('\n').filter(Boolean) - 读取本地文件lib/sweeper.js:537
if (!existsSync(sessionsRoot)) return [] - 读取本地文件lib/sweeper.js:542
return readdirSync(dir, { withFileTypes: true }) - 读取本地文件lib/sweeper.js:562
files = readdirSync(dir) - 读取本地文件lib/sweeper.js:576
return { path, mtimeMs: statSync(path).mtimeMs } - 读取本地文件lib/sweeper.js:598
const lockStat = statSync(lockPath) - 读取本地文件lib/sweeper.js:599
const logStat = statSync(logPath) - 写入本地文件lib/sweeper.js:887
utimesSync(logPath, before.atime, before.mtime) - 写入本地文件lib/atomic-file.js:57
mkdirSync(directory, { recursive: true, mode: dirMode }) - 写入本地文件lib/atomic-file.js:59
chmodSync(directory, dirMode) - 写入本地文件lib/atomic-file.js:100
renameSync(temporary, path) - 删除本地文件lib/atomic-file.js:110
rmSync(temporary, { force: true }) - 发起网络请求lib/notifications.js:149
const response = await this.fetch(`${this.server}/notifications/hub/negotiate`, { - 读取本地文件lib/trail.js:264
const parsed = JSON.parse(readFileSync(path, 'utf8')) - 读取本地文件lib/trail.js:620
stat = statSync(session.path) - 读取本地文件lib/trail.js:1333
size = statSync(logPath).size - 执行外部命令固定命令lib/zstd-log.js:128
const proc = spawnSync('zstd', ['-d', '-c'], { input: frame, maxBuffer: 1 << 30 }) - 执行外部命令固定命令lib/zstd-log.js:154
const proc = spawnSync('zstd', ['-q', '-c'], { input, maxBuffer: 1 << 30 })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/dsh-typert-protocol@deepseek-ai/schemastery@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 实时同步密码库
- WebSocket推送
- 增量同步
最近更新
在 GitHub 查看全部 →v0.13.42026-10-30
· 修复
· 脱敏流水改为正面清单:只统计宿主声明为 bitwarden_* 工具的交换事件,系统提示词、读入源码、对话与 bash 输出里的标记字样不再计数(近 7 天 3433 → 52)。
· 索引版本升至 v9,修复口径变更后重启不重扫的问题。
· 优化
· sweeper 落盘标记带类别([REDACTED:BW_PASSWORD] 等),旧日志的裸标记保持原样。
· 详情页补「原值已被日志擦除」说明;「脱敏占位符」改为「脱敏标记」;PTC 结果事件改称「工具结果」。
· 回声种子文件按 30 天过期清理,4096 条上限,旧格式自动迁移。
v0.13.12026-10-29
· [0.13.1] — 2026-10-29
· 修复
· 修复 bitwarden_update 未传字段时误清空条目、密码修改日期被加密、maskMode 密钥不可用时回退明文的问题。
· 修复 sweeper 漏擦 card、fields、identity、sshKey 嵌套字段,以及与活跃日志 append 竞态丢事件的问题。
· 修复脱敏轨迹半扫描漏计、请求数重复、详情串模型/丢指纹、索引缓存不失效的问题。
· 修复详情切行加载态、轨迹页滚动误触密码列表分页、bitwarden_status 刷新绕过登录冷却的问题。
· 优化
· 优化 bitwarden_get 脱敏提示与系统提示词的失败恢复说明。
v0.13.02026-10-29
· [0.13.0] — 2026-10-29
· 新增
· 新增脱敏看板:数据总量、按天柱状图、门禁视图、脱敏量前三的会话与模型,以及「另外 N 个」汇总。
· 新增 flows 聚合:top3 会话、top3 模型、真实 session→model 配对计数与其余汇总。
· 优化
· 优化脱敏看板:三条完整会话到模型连线,左半段灰色表示脱敏前、右半段蓝色表示脱敏后;每根线一颗灰色粒子同速穿过;门禁竖线带上下扫描条;桌面三列、窄屏自适应。
· 优化看板与详情页文案:主标题改为「敏感信息防泄漏」;五步改为「接收请求 → 识别 N 个敏感值 → 完成 N 处脱敏 → 转发至模型 → 模型响应」;值卡改为「敏感类型 / 匹配次数 / 脱敏占位符 / 命中位置」,并合并重复占位符卡片。
· 优化标签栏与详情页返回按钮:标签栏按官方设置页对齐;返回按钮黑色加粗,悬停有底色、键盘聚焦有焦点环。
· 优化样式热更新:样式表内容变化时同步更新已有 style 元素。
· 测试
· test/client-card.test.mjs 514 项、test/trail.test.mjs 135 项。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-vaultwarden
把 Vaultwarden / Bitwarden 接入 DeepSeek Harness。密码库可在「设置 → 密码库」里浏览和编辑,模型可按需检索、读取和写入;密码、TOTP、卡号等默认以占位符脱敏,会话日志中的明文也可擦除。支持自建 Vaultwarden 与官方 Bitwarden 云。
界面预览
| 密码库面板 | 脱敏轨迹 |
| 密码库面板 | 脱敏轨迹页面 |
主要能力
- 实时同步与缓存:SignalR WebSocket 推送变更;不可用时自动降级轮询并定期重试升级;本地加密缓存与 revision 探测让冷启动更快。
- 密码库面板:分区导航、搜索、分页、条目详情、TOTP 倒计时、复制、创建/编辑、归档/回收站/恢复与文件夹移动;写操作按权限档控制。
- 脱敏与日志擦除:工具读取密码、TOTP、卡号等返回稳定占位符,按条目 + 字段单次取回;定期把会话日志中的明文替换为 [REDACTED:BW],支持增量与立即擦除。
- 脱敏看板:按天统计脱敏量与前三会话/模型,保留可下钻的脱敏流水和详情。
- 通行密钥:读取条目中的 passkey 元数据;按插件权限导出为 0600 的 WebAuthn 凭据文件,支持导入、移除和临时文件清理;登录配方见 docs/passkey-login.md。
展开完整文档(README 剩余 1 节)
dsh-vaultwarden
把 Vaultwarden / Bitwarden 接入 DeepSeek Harness。密码库可在「设置 → 密码库」里浏览和编辑,模型可按需检索、读取和写入;密码、TOTP、卡号等默认以占位符脱敏,会话日志中的明文也可擦除。支持自建 Vaultwarden 与官方 Bitwarden 云。
界面预览
| 密码库面板 | 脱敏轨迹 |
| 密码库面板 | 脱敏轨迹页面 |
主要能力
- 实时同步与缓存:SignalR WebSocket 推送变更;不可用时自动降级轮询并定期重试升级;本地加密缓存与 revision 探测让冷启动更快。
- 密码库面板:分区导航、搜索、分页、条目详情、TOTP 倒计时、复制、创建/编辑、归档/回收站/恢复与文件夹移动;写操作按权限档控制。
- 脱敏与日志擦除:工具读取密码、TOTP、卡号等返回稳定占位符,按条目 + 字段单次取回;定期把会话日志中的明文替换为 [REDACTED:BW],支持增量与立即擦除。
- 脱敏看板:按天统计脱敏量与前三会话/模型,保留可下钻的脱敏流水和详情。
- 通行密钥:读取条目中的 passkey 元数据;按插件权限导出为 0600 的 WebAuthn 凭据文件,支持导入、移除和临时文件清理;登录配方见 docs/passkey-login.md。
- 权限与安全边界:插件权限分只读 / 每次确认 / 完全权限;DSH 会话处于 workspace-write / read-only 时,写操作与通行密钥导出仍走宿主审批。面板使用宿主已认证的 /api RPC,插件不注册自己的 HTTP 路由;主密码和 API 密钥是只写字段。
- 设置页:连接、登录、两步验证与插件权限集中管理,支持自建服务器与官方 Bitwarden 云。
安装
最新稳定版(市场条目使用的地址)
dsh plugin --profile web add https://github.com/BuvkB/dsh-vaultwarden/releases/latest/download/dsh-vaultwarden.tgz
或从 npm 安装
dsh plugin --profile web add dsh-vaultwarden@latest
要求 Node.js >= 22。
配置
在 设置 → 插件 → dsh-vaultwarden 填写:
| 字段 | 说明 |
| serverUrl / email | Vaultwarden 地址与登录邮箱 |
| masterPassword | 主密码;只写,不落浏览器 |
| apiKeyClientId / apiKeyClientSecret | 可选,API 密钥登录(可绕过两步验证) |
| accessMode | readonly / ask / auto,控制模型工具的写回权限 |
| maskMode / sweepMode | 占位符脱敏与日志擦除开关 |
DSH 会话权限为 workspace-write / read-only(approval: ask)时,即使插件 accessMode 为 auto,写操作与通行密钥导出也会走审批;密码/TOTP 读取、日志擦除与通行密钥临时文件清理不需要审批,后两者属于强制执行的安全清理。
也支持 DSH_BITWARDEN_* 环境变量和 profile 组合配置。完整字段见 docs/ui-design.md。
工具
bitwarden_find · bitwarden_get · bitwarden_reveal · bitwarden_status · bitwarden_sync · bitwarden_folders · bitwarden_create · bitwarden_update · bitwarden_delete · bitwarden_restore
通行密钥:bitwarden_passkey_list · bitwarden_passkey_export · bitwarden_passkey_cleanup · bitwarden_passkey_import · bitwarden_passkey_remove;登录配方见 docs/passkey-login.md。
另有 bitwarden_sweep 立即擦除本地会话日志中的明文。
脱敏说明
- 占位符形如 {{BW_PASSWORD_xxxxxxxx}},由 HMAC 生成,不可逆;只能引用、比较或按字段取回。
- 脱敏看板与流水详情见 docs/ui-design.md。
- 擦除标记 [REDACTED:BW] 表示明文曾经落盘、随后被擦除;它没有可反查的盐。
开发
bash scripts/build.sh # 全量门禁
node test/client-card.test.mjs
node test/trail.test.mjs
发布流程见 docs/release.md。
链接
- GitHub Releases
- npm
- 问题反馈
许可
MIT。第三方项目见 THIRD-PARTY-NOTICES.md。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
BuvkB/dsh-vaultwarden
把 Vaultwarden / Bitwarden 接入 DeepSeek Harness。密码库可在「设置 →…
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,928已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目