| name | remote-control |
| description | 远程协作模式控制器。当 Stop Hook 提示"远程模式已启用"时自动使用。
负责发送微信通知、等待回复、处理指令循环。必须配合 gewe-cli 工具使用。
|
| allowed-tools | Bash, TaskOutput |
远程控制 Skill
⚡ 激活后立即执行
当此 Skill 被激活时(Stop Hook 触发),直接执行以下步骤,不要输出任何说明或询问用户:
- 生成任务摘要 - 1-2 句话总结刚才完成的工作
- 发送微信通知 - 使用 gewe-cc wait-reply(后台运行)
- 等待回复 - 使用 TaskOutput 获取微信回复
- 执行下一步 - 根据回复继续工作或停止
❌ 禁止的行为(激活后):
- 输出"我已理解工作流程"、"远程模式已激活"等元信息
- 询问用户"希望我完成什么任务?"
- 等待用户在终端输入任何内容
✅ 正确的行为(激活后):
- 立即生成摘要(如:"回答了简单的数学问题")
- 立即发送微信通知并等待回复
- 根据回复继续下一个任务或停止
概述
此 Skill 实现了基于微信的远程协作模式。当任务完成时,你需要:
- 发送微信通知告知用户任务完成
- 等待用户通过微信发送下一个指令
- 根据指令继续工作或结束远程模式
⚠️ 关键约束:禁止直接询问用户
在远程协作模式下,你不能直接向用户提问并等待终端输入。
问题场景
❌ 禁止的行为:
你:方案 A、B、C 各有优势,您觉得哪个更好?
[等待用户在终端输入...]
后果:
- 你的消息输出后,
stop_reason: null
- Stop Hook 不会触发
- 远程模式循环中断
- 用户在微信收不到通知
正确做法:通过微信询问
✅ 需要用户选择时,使用 gewe-cc wait-reply
gewe-cc wait-reply -M "【Claude Code】
📁 项目: $(basename "$(pwd)")
❓ 需要选择实现方案
方案 A: 简单但功能受限
方案 B: 复杂但灵活
方案 C: 平衡(推荐)
请回复「A」「B」或「C」"
为什么可行:
gewe-cc wait-reply 阻塞运行直到收到微信回复
- 回复后你的输出完整,
stop_reason 正常
- Stop Hook 正常触发,远程模式继续循环
设计原则
该问就问:需要用户输入时,通过 gewe-cc wait-reply 获取微信回复,永远不要直接向用户提问并等待终端输入。
配置信息
配置会自动从 ~/.gewe-cc/config.toml 读取:
- 目标微信 ID: 配置文件中的
notification.wxid
- 监听地址: 配置文件中的
notification.listen
- 命令工具:
gewe-cc(封装了 gewe-cli)
工作流程
步骤 1:生成任务摘要
根据本次会话完成的工作,生成简洁的 1-2 句话摘要。
好的示例:
- "创建了用户认证模块,添加了 JWT 支持"
- "修复了数据库连接池泄漏问题"
- "重构了配置系统,支持环境变量覆盖"
避免:
- ❌ "完成了任务"(太笼统)
- ❌ "修改了 3 个文件,添加了 150 行代码"(太技术细节)
步骤 2:发送微信通知并等待回复
有两种发送方式:文本消息(简短摘要)或 链接卡片(完整 transcript)
方式 A:发送文本消息(简短摘要)
适用于摘要简短(< 200 字符)的情况。
gewe-cc wait-reply -M "【Claude Code】
📁 项目: $(basename "$(pwd)")
✅ 任务完成
📝 摘要: <你生成的摘要>
回复任何内容继续,回复「停止」结束远程模式。"
必须使用 run_in_background=true 参数!
方式 B:发送链接卡片(完整 transcript)
适用于摘要较长或需要查看完整对话历史的情况。
前置检查:
在发送链接卡片前,必须先检查 HTTP 服务器是否运行:
if ! pgrep -f "gewe-cc serve" > /dev/null; then
echo "⚠️ HTTP 服务器未运行,正在启动..."
gewe-cc serve &
sleep 2
fi
前置要求:
-
确保配置文件中已设置 transcript_domain
gewe-cc config --transcript-domain "https://transcript.example.com"
-
确保 ~/.gewe-cc/assets/thumb.png 存在且小于 50KB
使用方法:
SESSION_ID="<从提示中获取的 session_id>"
gewe-cc send-link \
--session-id "${SESSION_ID}" \
--summary "<你生成的摘要>"
该命令会自动:
- 从配置读取 wxid 和 transcript_domain
- 构建完整的 transcript URL
- 发送链接卡片到微信
- 等待用户回复
- 返回用户的回复内容
必须使用 run_in_background=true 参数!
链接卡片优势:
- 展示完整对话历史(包括 tool use、tool result)
- 支持 Markdown 渲染和代码高亮
- 响应式设计,移动端友好
- 提供"跳到底部"按钮快速查看最新内容
选择建议:
- 摘要 < 200 字符 → 使用文本消息
- 摘要 ≥ 200 字符 → 使用链接卡片
- 需要查看详细 tool 调用 → 使用链接卡片
步骤 3:等待并获取回复
使用 TaskOutput 工具等待后台命令完成:
1. 从步骤 2 的返回中获取任务 ID
2. 使用 TaskOutput(task_id=<id>, block=true, timeout=300000) 阻塞等待
超时设置:
- 默认超时 300000 毫秒(5 分钟)
- 如果超时,询问用户是否继续等待
步骤 4:解析回复内容
从 TaskOutput 的输出中直接获取用户的回复内容。
gewe-cc wait-reply 输出格式:
<用户的回复内容>
直接获取输出即为用户回复。
步骤 5:根据回复决定下一步
检查回复内容(不区分大小写):
情况 A:用户回复"停止"
如果回复是以下任意一个(不区分大小写):
执行操作:
gewe-cc off --session-id <会话ID>
然后告知用户当前会话已结束,正常结束(不要继续循环)。
会话 ID 说明:从 Stop Hook 的提示中获取,格式为:5e64d0b7 等
情况 B:用户回复其他内容
将回复内容作为新的用户指令执行:
1. 将回复作为新任务
2. 执行该任务
3. 任务完成后回到步骤 1(重新循环)
示例:
用户回复:"添加单元测试"
↓
你应该:
1. 理解这是要添加单元测试的任务
2. 执行添加单元测试
3. 完成后再次生成摘要
4. 再次发送微信通知
5. 等待下一个指令
错误处理
gewe-cc 命令失败
如果 gewe-cc wait-reply 命令失败:
1. 显示错误信息给用户
2. 询问用户是否退出远程模式
3. 如果用户确认,执行 gewe-cc off
TaskOutput 超时
如果等待超过 5 分钟没有回复:
询问用户:
"等待微信回复已超时(5 分钟)。是否继续等待?
1. 继续等待(再等 5 分钟)
2. 退出远程模式"
完整示例
成功流程示例
[Claude 完成任务:重构配置系统]
↓
Stop Hook 检测到远程模式
↓
remote-control Skill 激活
↓
生成摘要:"重构了配置系统,支持环境变量覆盖"
↓
发送微信(后台运行):
gewe-cc wait-reply -M "【Claude Code】..."
[返回任务 ID: abc123]
↓
使用 TaskOutput 等待:
TaskOutput(task_id="abc123", block=true, timeout=300000)
↓
收到回复:"添加配置文档"
↓
执行新任务:添加配置文档
↓
[任务完成,回到开始循环]
停止流程示例
[Claude 完成任务]
↓
发送微信通知
↓
等待回复
↓
收到回复:"停止"
↓
执行命令:
gewe-cc off
↓
告知用户:"✅ 远程模式已结束"
↓
正常结束(不再循环)
注意事项
-
必须使用 run_in_background
gewe-cc wait-reply 会阻塞等待回复
- 必须后台运行,否则会卡住
-
摘要要有意义
- 用户通过微信查看,需要快速理解完成了什么
- 避免技术术语过多
-
循环条件
- 只有收到"停止"指令才退出
- 其他任何回复都继续执行
-
配置自动读取
- gewe-cc 会自动从 ~/.gewe-cc/config.toml 读取配置
- 无需手动解析配置文件
-
退出方式
- 使用
gewe-cc off 命令禁用远程模式
- 不要手动删除文件