下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-out31vpi--task-raise-hand.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-out31vpi/task-raise-hand。- 举手提醒(Raise Hand):AI 遇到必须由人拍板的决策点时,主动用中文语音「举手」提醒用户并留痕。举手方是 AI(任务方),用户零输入、不必盯屏。用户会这么说:装个举手提醒、AI 有事主动叫我一声、任务卡住了没人提醒、AI 要拍板时怎么通知我。命中任一即举手:多方案取舍、对外内容过目、资金合同用印、凭据缺失或授权过期、大范围不可逆改动。默认离线语音(…
- 零依赖、不常驻、不起服务、不读数据库、无 Token
- 需更自然音色可自行开在线通道。仅 Windows。兼用于查询/标记待确认项、语音自检。
阅读全文 (展开查看完整说明)
概述
举手协议
核心规则
举手是任务方的动作,不是用户的动作。
用户不需要在任何界面输入文字。他只要听见语音提醒,或者在接收端看到一行提示。
绝不向用户索要举手入口。不要提供「举手示意」按钮、不要让用户填表上报、不要让用户在命令行里敲文字。任务方该举手时就举手。
何时举手
命中任意一条即举手:
- 需要用户在多个方案间取舍
- 对外发布、发给客户或合作方的内容需他过目
- 涉及资金、合同、用印、客户承诺
- 卡在必须人工确认的关口(授权过期、凭据缺失、数据异常无法自愈)
- 需要你拿不到的信息(账号、密钥、口径、政策)
- 大范围、不可逆或跨系统改动
不举手:纯进度汇报、你自己能判断的小事、同一件事反复举。
完整判据、措辞要求和反例见 references/protocol.md。
语音提醒
默认使用离线通道(Windows SAPI5),任何数据都不出本机。
用户想要更自然的声音时,再切换到在线通道:
- 先告知用户在线通道会把播报文本提交给微软的语音服务。
- 用户同意后才执行
pip install edge-tts。 - 把
scripts/config.json的engine改成online。
用户没明确同意前,保持 offline。不要为了声音好听就擅自外发文本。
音色清单与降级链见 references/voice-config.md。
怎么举手
脚本位置:scripts/raise_hand.py
命令行
# 基本用法
python scripts/raise_hand.py "需要决策的一句话"
# 带来源和优先级
python scripts/raise_hand.py -s 客户项目 -p high "直播主题有两条路,需要您定一条走"
# 带上会话 id,用户可一键跳回你所在的对话
python scripts/raise_hand.py -S <会话uuid> "方案有 A/B 两版,请定夺"
# 只记录不播报
python scripts/raise_hand.py --quiet "内容"
# 本次临时用在线音色
python scripts/raise_hand.py --engine online "内容"Python 内调用
import sys
sys.path.insert(0, '<技能目录>/scripts')
from raise_hand import raise_decision
ok, message, channel = raise_decision(
"方案有 A/B 两版,需要您选一版",
source="客户项目",
session_id="<当前会话 uuid>",
)在对话里怎么拿到会话 id
会话 id 就是 WorkBuddy 状态库 sessions 表的 id,格式为标准 UUID。如果无法确定当前会话 id,不要瞎填一个串——不带 id 举手仍然有效,只是用户无法一键跳回。
查询与处理
python scripts/raise_hand.py --list # 列出待处理的决策点
python scripts/raise_hand.py --resolve 2 # 标记第 2 条已处理
python scripts/raise_hand.py --resolve all # 全部标记已处理必须带会话 id
这是最容易踩的坑。
带了 session_id,接收端那一行才会出现跳转入口,用户点一下就回到你所在的对话。不带,那一行只能显示、不能点 —— 用户看到一句「需要您定方向」,却不知道该去哪儿处理,等于没汇报。
所以:只要举手发生在某个对话里,就一定要带会话 id。
脚本行为
- 写入
data/decisions.jsonl,一条一行 JSON。 - 立即同步播报一次,进程随即退出。不常驻后台、不起HTTP 服务、不读任何数据库。
- 对文本零判断:给什么播什么,不做筛选。漏报的唯一原因是没人举手。
环境检查
首次使用或换机器后,先运行:
python scripts/check_environment.py输出四种状态:
| 状态 | 含义 | 下一步 |
|---|---|---|
ready | 全部可用 | 直接使用,跳过配置引导 |
partial | 核心可用,可选能力缺失 | 直接使用,说明受影响功能 |
needs_setup | 必需依赖缺失 | 只展示缺失项的配置步骤 |
unavailable | 配置存在但服务故障 | 展示原因和恢复步骤 |
依赖安装与配置见 references/setup-guide.md。
也可运行综合自检(包含实际播报测试):
python scripts/selfcheck.py # 完整自检,会实际出声
python scripts/selfcheck.py --quiet # 跳过实际播报接入其他接收端
本技能只负责记录和播报。若还需要面板展示或一键跳转,把 data/decisions.jsonl交给对应的接收程序读取即可 —— 每行是独立 JSON,含 ts、title、detail、source、priority、session_id 字段。
不要修改 decisions.jsonl 的字段名,接收端依赖这些名字。
输出约定
- 举手成功后,在对话里也明确写一句已举手及其内容,不要只依赖语音。
- 记录写入成功但播报失败时,必须如实说明播报失败,不能让用户以为已经听见了。
- 用户回应后调用
--resolve标记,不要留下已处理完的条目继续提醒。