Arang.dev
搜索

OpenClaw Discord 表情符号技能开发记 - 用户批准工作流程实现

在 OpenClaw AI 代理中开发通过 Discord 表情符号反应来接收用户决策的技能,并将该技能上传到 GitHub 的经验。同时分享了 ClawdHub 部署过程中遇到的问题和解决方案。

#OpenClaw#Discord#AI Agent#Skill Development#ClawdHub
🌐 已翻译

本文由 AI 从韩语机器翻译,部分表达可能与原文有所不同。

阅读原文(韩语)

引言

使用 AI 代理时,总会遇到“这个真的可以执行吗?”的瞬间。尤其是在推特发帖、邮件发送、文件删除等不可逆操作中更是如此。

因此,我创建了一个通过 Discord 表情符号反应来接收用户批准的技能。

📸 Discord 中带有 1️⃣ 2️⃣ 3️⃣ 🔥 ❌ 等表情符号的消息示例


问题定义

我正在使用 OpenClaw 创建一个名为“AlphaHunter”的加密货币市场自动推特机器人。AI 收集新闻并生成推特候选内容做得很好,但问题是未经批准不能直接发布。

现有方式的局限:

  • 使用 ✅/❌ 表情符号在 Discord 中会被截断,无法显示
  • 难以从多个候选内容中进行选择
  • 发生未经批准就发布的情况

解决方案:数字表情符号批准系统

设计原则

이모지 승인 워크플로우

实现代码 (approval_workflow.py)

class ApprovalManager:
    """승인 워크플로우 관리자"""
    
    EMOJI_MAP = {
        '1️⃣': 0,
        '2️⃣': 1,
        '3️⃣': 2,
        '🔥': 'all',
        '❌': 'reject'
    }
    
    def __init__(self):
        self.pending = {}  # message_id -> candidates
        self.approved = []  # 승인된 후보 큐
        
    def submit_candidates(self, candidates: list, message_id: str):
        """후보 제출 및 이모지 달기"""
        self.pending[message_id] = {
            'candidates': candidates,
            'submitted_at': datetime.now(),
            'expires_at': datetime.now() + timedelta(hours=24)
        }
        return self.EMOJI_MAP.keys()  # 달아야 할 이모지 목록
    
    def process_reaction(self, message_id: str, emoji: str):
        """이모지 반응 처리"""
        if message_id not in self.pending:
            return None
            
        action = self.EMOJI_MAP.get(emoji)
        candidates = self.pending[message_id]['candidates']
        
        if action == 'all':
            self.approved.extend(candidates)
        elif action == 'reject':
            del self.pending[message_id]
        elif isinstance(action, int) and action < len(candidates):
            self.approved.append(candidates[action])
            
        return self.approved

Discord 联动

使用 OpenClaw 的 message 工具添加表情符号:

# 후보 전송 후 이모지 달기
message_id = send_candidates_to_discord(candidates)
 
for emoji in ['1️⃣', '2️⃣', '3️⃣', '🔥', '❌']:
    message(
        action='react',
        channel='discord',
        messageId=message_id,
        emoji=emoji
    )

GitHub 上传

技能开发完成后,需要上传到 GitHub。OpenClaw 技能遵循以下结构:

skills/
└── discord-emoji-approval/
    ├── SKILL.md           # 스킬 문서
    ├── scripts/
    │   └── approval_workflow.py
    └── config.json        # 설정

SKILL.md 编写

# Discord Emoji Approval Skill
 
디스코드 이모지 반응으로 사용자 승인을 받는 스킬.
 
## 사용법
 
1. 후보를 디스코드로 전송
2. 이모지 5개 달기 (1️⃣ 2️⃣ 3️⃣ 🔥 ❌)
3. 사용자가 이모지 클릭
4. 승인된 후보만 실행
 
## 의존성
- OpenClaw message 도구 (react 액션)

Git 提交 & 推送

cd ~/.openclaw/workspace/skills/discord-emoji-approval
git add .
git commit -m "feat: 디스코드 이모지 승인 스킬 추가"
git push origin main

ClawdHub 部署尝试(失败)

ClawdHub 是 OpenClaw 技能市场。您可以在这里分享您创建的技能。

部署尝试

clawdhub publish ./skills/discord-emoji-approval

发生的错误

Error: Unable to connect to clawdhub.com
Status: 503 Service Unavailable

服务暂时不稳定。稍后再试。

替代方案:从 GitHub 直接安装

如果 ClawdHub 不可用,您可以直接使用 GitHub URL 进行安装:

# 다른 사람이 설치할 때
git clone https://github.com/arang/openclaw-skills.git
cp -r openclaw-skills/discord-emoji-approval ~/.openclaw/workspace/skills/

教训

1. 用户批准是必需的

即使 AI 再聪明,不可逆操作也需要人工确认。

2. 表情符号是直观的

与文本“选择 1”相比,1️⃣ 表情符号更快。

3. 需要排队系统

如果同时执行多个选择,会遇到速率限制。顺序执行更安全。

4. 离线回退

为了应对 ClawdHub 等外部服务不可用的情况,请将 GitHub 直接安装方法也记录在文档中。


结尾

得益于这项技能,AlphaHunter 机器人从“AI 自动发推的危险机器人”变成了“用户批准后才发推的安全机器人”。

接下来,我将分享利用此批准系统创建自我发展的 AI 代理的经验。


相关链接:

评论

正在加载评论...
OpenClaw Discord 表情符号技能开发记 - 用户批准工作流程实现 | Arang