首页龙虾技能列表 › Vaultwarden Secrets — Vaultwarden 密钥管理

Vaultwarden Secrets — Vaultwarden 密钥管理

v1.0.1

通过包装脚本管理 Vaultwarden 密钥。所有脚本处理会话状态、缓存、日志记录和错误处理,支持在集合或个人保险库中进行范围化的读写操作。

0· 71·0 当前·0 累计·💬 1
by @mbojer (Morten Bojer)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/4
安全扫描
VirusTotal
Pending
查看报告
OpenClaw
可疑
high confidence
脚本和 SKILL.md 明确需要 Bitwarden CLI (bw)、jq 和多个敏感环境变量及特定文件系统路径,但注册表元数据声明没有任何依赖要求——这种不匹配和一些文件系统/日志选择值得在安装前谨慎考虑。
评估建议
该技能似乎实现了所宣传的 Vaultwarden 包装器,但注册表元数据和 SKILL.md 存在分歧:脚本需要 Bitwarden CLI (bw) 和 jq 以及敏感的环境变量(BW_CLIENTID、BW_CLIENTSECRET、BW_PASSWORD),尽管注册表中没有列出任何依赖。在安装前:1) 验证并接受安装/使用 bw CLI(SKILL.md 固定了一个较旧版本 2023.10.0)并安装 jq;2) 在确认服务器 URL 并审查脚本之前不要提供真实密钥——它们将会话令牌和日志写入磁盘(默认:/run/openclaw/vw 和 /var/log/openclaw/vaultwarden.log);如需要请将 VW_SESSION_DIR 和 VW_LOG_FILE 改为安全位置,并确保日志文件权限受限;3) 考虑在非生产环境中测试,并审计日志以确保不泄露密钥值;4) 要求发布者更新注册表元数据以列出所需的二进制文件和环境变量(当前的不匹配是一个危险信号)。...
详细分析 ▾
用途与能力
该技能声称管理 Vaultwarden 密钥,脚本也确实这样做了,但包元数据声明没有必需的二进制文件或环境变量,而 SKILL.md 和脚本需要 Bitwarden CLI (bw)、jq 和 BW_CLIENTID/BW_CLIENTSECRET/BW_PASSWORD 以及可选的 VW_* 环境变量。元数据的遗漏是一个不一致——安装此技能的用户合理地需要 bw、jq 和列出的环境变量。
指令范围
运行时指令和脚本范围很窄,仅调用 bw CLI 和 jq,并在 $VW_SESSION_DIR 和 VW_LOG_FILE 下读取/写入会话、缓存和日志文件。脚本不包含除 bw 之外的明显网络调用(bw 与配置的 Vaultwarden 服务器通信)。然而,SKILL.md 建议了一个特定的服务器 URL(https://vaultwarden.mbojer.dk)作为示例;请确保配置你想要的服务器。脚本还将日志(名称/ID/操作结果)和会话令牌写入磁盘,这是此目的的预期行为,但应审查暴露风险。
安装机制
这是纯指令式的(没有安装规范),但 SKILL.md 指示用户通过 npm 全局安装一个固定的 bw CLI(npm install -g @bitwarden/cli@2023.10.0)。脚本还需要 jq,但 SKILL.md/注册表元数据没有明确声明 jq 是前置依赖。缺少的依赖声明和需要安装特定(较旧)CLI 版本的不匹配是用户在遵循之前应该验证的问题。
凭证需求
该技能需要敏感的环境变量(BW_CLIENTID、BW_CLIENTSECRET、BW_PASSWORD),这对于登录/解锁 Vaultwarden 是合理的,但注册表元数据没有列出所需的环境变量——这是一个不一致。会话和日志路径的默认值(/run/openclaw/vw、/var/log/openclaw/vaultwarden.log)可能需要提升权限,如果日志文件没有适当保护,可能会暴露元数据。对于所述目的而言,环境变量的数量是合理的,但必须安全处理。
持久化与权限
该技能是用户可调用的,不是始终启用,允许正常的自主调用。它在自己的会话目录中存储会话令牌和缓存,不修改其他技能或全局代理配置。没有请求过多的持久化权限。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.12026/4/4

移除 SSH 密钥脚本(bw 2023.10.0 对多行内容的加密漏洞)。个人保险库回退功能正常工作。会话持久化和缓存保持完整。

● Pending

安装命令 点击复制

官方npx clawhub@latest install vaultwarden-skill
镜像加速npx clawhub@latest install vaultwarden-skill --registry https://cn.clawhub-mirror.com

技能文档

通过包装脚本管理 Vaultwarden 中的密钥。所有脚本处理会话状态、缓存、日志记录和错误处理——不要直接调用 bw

CLI 版本要求 — 关键

Bitwarden CLI 2024.x+ 破坏 Vaultwarden 认证,会提示「需要用户解密选项」。

# 安装所需版本
npm install -g @bitwarden/cli@2023.10.0

# 验证 bw --version # 必须显示 2023.10.0

如果检测到不兼容版本,vw-unlock.sh 将硬退出。

设置(运行一次)

bw config server https://vaultwarden.mbojer.dk

必需的环境变量

在 OpenClaw 配置中设置,切勿存储在保险库中:

变量用途
BW_CLIENTIDAPI 密钥客户端 ID
BW_CLIENTSECRETAPI 密钥客户端密钥
BW_PASSWORD解锁主密码
VW_COLLECTION_NAME限定范围的集合名称(默认:openclaw)— 仅组织账户
VW_COLLECTION_ID硬编码集合 ID — 名称查找失败时使用(仅组织账户)
VW_SESSION_DIR会话令牌目录(默认:/run/openclaw/vw
VW_LOG_FILE审计日志路径(默认:/var/log/openclaw/vaultwarden.log
VW_CACHE_TTL读取缓存 TTL 秒数(默认:60,设为 0 禁用)

集合限定范围 — 个人保险库 vs 组织保险库

个人 Vaultwarden 账户无法通过 API 密钥访问集合——这是 Bitwarden 限制,不是此技能的 bug。bw list collections 在个人保险库上返回 []。技能自动处理此问题:如果未找到集合,所有操作回退到无范围(完整保险库)查询。对于组织账户,设置 VW_COLLECTION_NAMEVW_COLLECTION_ID 将操作限定到特定集合。

会话管理

vw-unlock.sh # 认证并解锁 — 在任何保险库操作前运行
vw-lock.sh # 锁定保险库并清除所有缓存
vw-sync.sh # 与服务器同步本地缓存 — 如果保险库在外部被修改则运行
vw-status.sh # 检查连接和会话状态

会话令牌存储在 $VW_SESSION_DIR/.bw_session(chmod 600)。集合 ID 缓存在 $VW_SESSION_DIR/.collection_id — 锁定和同步时失效。读取缓存存储在 $VW_SESSION_DIR/cache/ — TTL 由 VW_CACHE_TTL 控制。

读取操作

所有读取都限定范围到 $VW_COLLECTION_NAME。频繁读取的项目会被缓存以减少 API 调用。

vw-list.sh [query] # 列出 openclaw 集合中的项目,可选搜索
vw-get.sh  # 完整项目 JSON
vw-get-pass.sh  # 仅密码(限定集合范围,已缓存)
vw-get-user.sh  # 仅用户名(限定集合范围,已缓存)
vw-get-field.sh   # 单个自定义字段值
vw-get-totp.sh  # 当前 TOTP 码(不缓存 — 码会过期)

写入操作

写入操作自动使读取缓存失效。

echo  | vw-create-login.sh   # 创建登录项目(密码通过 stdin)
echo  | vw-create-note.sh  # 创建安全笔记(内容通过 stdin)
echo  | vw-update.sh   # 更新字段:password|username|notes|custom:
vw-delete.sh   # 移至回收站 — 需要 ID 和名称都匹配
vw-rotate-pass.sh  [length] # 生成新密码并原子更新

清晰捕获轮换的密码(状态输出到 stderr):

NEW_PASS=$(vw-rotate-pass.sh "MyService")

规则

  • 始终在保险库操作前运行 vw-unlock.sh,完成后运行 vw-lock.sh
  • 如果保险库通过 Web UI 或其他客户端被修改,在读取前运行 vw-sync.sh
  • 始终使用项目 ID(而非名称)进行 vw-update.shvw-delete.sh
  • vw-delete.sh 将项目移至回收站 — 非永久删除。如需要通过 Web UI 清空回收站
  • 所有密钥值必须通过 stdin 传递 — 切勿作为 CLI 参数
  • 切勿记录或输出原始密钥值 — 仅记录名称、ID 和操作结果
  • 如果任何脚本退出非零,停止并报告 — 不要静默重试
  • 当集合可用时,所有操作都限定范围到 $VW_COLLECTION_NAME。个人保险库(无组织)回退到完整保险库 — 无需集合

错误参考

错误修复
bw CLI X.X.X is incompatiblenpm install -g @bitwarden/cli@2023.10.0
User Decryption Options are required同上 — 错误的 CLI 版本
no active session运行 vw-unlock.sh
session invalid or expired运行 vw-unlock.sh
collection not found检查 VW_COLLECTION_NAME,运行 vw-sync.sh
name mismatch删除前用 vw-get.sh 验证项目 ID
custom field does not existvw-get.sh 检查字段名
server not configured运行 bw config server https://vaultwarden.mbojer.dk
API key login failed检查 BW_CLIENTIDBW_CLIENTSECRET
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务