返回顶部
o

otc-confirmation一次性确认码

One-Time Confirmation code security mechanism for sensitive agent operations. Generates a cryptographically secure single-use code, delivers it via a private channel (email), and requires the user to reply with the code before execution proceeds. The code never appears in stdout, logs, or chat — it flows through a secure state file. Use when the agent needs to confirm dangerous, irreversible, or externally-visible operations.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 3.1.0
安全检测
已通过
357
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

otc-confirmation

技能名称: otc-confirmation
详细描述:

OTC 确认 3.0

一种安全模式,通过要求一次性验证码进行带外确认,防止对敏感操作进行未授权或意外执行。

3.0 版本新特性

  • - 🔐 验证码绝不接触标准输出 — 通过安全状态文件(权限 600)流转,防止通过日志或代理上下文泄露
  • 🔒 加密安全生成 — 使用 /dev/urandom 替代 $RANDOM
  • 🛡️ 原子性一次性使用 — 验证成功后立即删除状态文件
  • 🚫 无静默回退 — 邮件发送失败始终致命,绝不回退到执行操作
  • 🧹 无任意文件引用 — 凭据仅通过环境变量加载
  • 正确的元数据声明 — 所需环境变量在技能元数据中声明

工作原理

用户请求(敏感操作)
→ 代理运行 generate_code.sh(验证码存储在状态文件中,绝不打印)
→ 代理运行 sendotcemail.sh(从状态文件读取验证码,发送邮件)
→ 代理在聊天中回复:需要确认,请查看邮箱
→ 用户阅读邮件,在原始聊天会话中回复验证码
→ 代理运行 verify_code.sh(读取状态文件,比对,匹配后删除)
→ 代理执行操作

验证码为一次性使用 — 验证成功后立即删除状态文件。

关键安全属性: 代理永远不会在其上下文中捕获或看到验证码。它仅检查退出码。

快速开始

1. 安装

bash
clawhub install otc-confirmation

2. 配置

选项 A:OpenClaw 配置(推荐)

添加到 openclaw.json:

json
{
skills: {
entries: {
otc-confirmation: {
enabled: true,
env: {
OTCEMAILRECIPIENT: user@example.com,
OTCEMAILBACKEND: smtp,
OTCSMTPHOST: smtp.gmail.com,
OTCSMTPPORT: 587,
OTCSMTPUSER: your-email@gmail.com,
OTCSMTPPASS: your-app-password
}
}
}
}
}

选项 B:环境变量

bash
export OTCEMAILRECIPIENT=user@example.com
export OTCEMAILBACKEND=smtp
export OTCSMTPHOST=smtp.gmail.com
export OTCSMTPPORT=587
export OTCSMTPUSER=your-email@gmail.com
export OTCSMTPPASS=your-app-password

3. 在代理中使用

bash
SKILL_DIR={baseDir}

步骤 1:生成验证码(存储在安全状态文件中,不输出到标准输出)

bash $SKILLDIR/scripts/generatecode.sh

步骤 2:发送邮件(内部从状态文件读取验证码)

bash $SKILLDIR/scripts/sendotc_email.sh 发送邮件至 john@example.com Discord #work

步骤 3:在聊天中回复(不要提及验证码)

echo 需要确认,请查看你的注册邮箱

步骤 4:等待用户输入,然后验证(从状态文件读取预期验证码)

bash $SKILLDIR/scripts/verifycode.sh $USER_INPUT

if [ $? -eq 0 ]; then
echo OTC 通过,执行操作...
# 执行操作
else
echo 确认码不匹配,操作取消
fi

邮件后端

SMTP(默认,零依赖)

使用 curl 直接通过 SMTP 发送邮件。无需额外工具。

bash
export OTCEMAILBACKEND=smtp
export OTCSMTPHOST=smtp.gmail.com
export OTCSMTPPORT=587
export OTCSMTPUSER=your-email@gmail.com
export OTCSMTPPASS=your-app-password

send-email 技能

如果已安装 send-email 技能:

bash
export OTCEMAILBACKEND=send-email

himalaya CLI

如果已安装 himalaya:

bash
export OTCEMAILBACKEND=himalaya

自定义脚本

使用您自己的邮件发送脚本:

bash
export OTCEMAILBACKEND=custom
export OTCCUSTOMEMAILSCRIPT=/path/to/your/sendemail.sh

您的脚本必须接受三个参数:<收件人> <主题> <正文>

安全说明: 确保自定义脚本具有受限权限,并位于受信任的目录中。技能会在调用前验证脚本是否存在且可执行。

触发条件

OTC 应在以下情况下触发:

  1. 1. 外部操作:发送邮件、发布到社交媒体、对第三方的 API 调用
  2. 危险本地操作:递归删除、系统配置更改、服务重启
  3. 安全规则修改:对 SOUL.md、AGENTS.md 确认机制的更改

详见 references/trigger-categories.md。

执行检查清单

每次操作前,请遵循执行检查清单:

  1. 1. 评估触发条件
  2. 检查绝对拒绝列表(破坏性不可逆操作 → 直接拒绝)
  3. 如果需要,生成并发送 OTC
  4. 验证用户输入
  5. 记录结果

详见 references/enforcement-checklist.md 了解完整工作流程。

集成指南

  • - SOUL.md 集成:examples/soulmdintegration.md
  • AGENTS.md 集成:examples/agentsmdintegration.md

安全规则

  1. 1. 验证码保密:验证码绝不打印到标准输出、显示在聊天中或包含在日志中。它仅通过安全状态文件(权限 600)流转。
  2. 一次性使用:验证成功后原子性删除状态文件。每次操作需要全新的验证码。
  3. 会话绑定:验证码必须在请求操作的同一会话/频道中验证。
  4. 无绕过:自然语言确认(是、执行、已批准)不能替代验证码。只有精确的验证码字符串才算数。
  5. 邮件不可变性:默认情况下,收件人邮箱地址应视为不可变。任何更改请求必须首先通过 OTC 验证。
  6. 无静默回退:如果邮件发送失败,操作将被阻止。代理绝不能回退到执行操作。
  7. 升级处理:如果同一操作连续 3 次 OTC 失败,则提醒用户并拒绝进一步尝试,直到新会话开始。

脚本参考

generate_code.sh

生成加密安全的随机 OTC 验证码。

bash
bash scripts/generate_code.sh [前缀] [长度]

默认:cf-XXXX(前缀=cf,长度=4)


验证码存储在安全状态文件中(权限 600)


不输出到标准输出

sendotcemail.sh

发送 OTC 确认邮件。从状态文件读取验证码。

bash
bash scripts/sendotcemail.sh <操作> [会话] [语言]

示例:


bash scripts/sendotcemail.sh 发送邮件至 john@example.com Discord #work

如果邮件发送失败 → 退出并报错(绝不回退)

verify_code.sh

验证用户输入与存储的验证码是否匹配。

bash
bash scripts/verify_code.sh <用户输入>

退出码 0:验证通过(状态文件已删除 — 一次性使用)


退出码 1:不匹配或无待验证码

sendemailsmtp.sh

底层 SMTP 邮件发送(由 sendotcemail.sh 内部使用)。

bash
bash scripts/sendemailsmtp.sh <收件人> <主题> <正文>

需要 OTCSMTP* 环境变量

故障排除

邮件未发送

  1. 1. 验证 SMTP 凭据已配置:test -n $OTCSMTPUSER && echo 已设置 || echo 未设置
  2. 测试 SMTP 连接:curl -v smtp://$OTCSMTPHOST:$OTCSMTPPORT
  3. 检查防火墙/网络:确保端口 587(或 465)已开放
  4. Gmail 用户:使用[应用密码](https://support

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 otc-confirmation-1776202294 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 otc-confirmation-1776202294 技能

通过命令行安装

skillhub install otc-confirmation-1776202294

下载

⬇ 下载 otc-confirmation v3.1.0(免费)

文件大小: 61.59 KB | 发布时间: 2026-4-15 13:06

v3.1.0 最新 2026-4-15 13:06
AI DevOps Agent Security Pack (12 files) + README bilingual rewrite + Python reference implementations

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部