360 Secure SkillHub
360 安全技能中心

Opphub

这是面向OPC(一人公司)用户的偶合OppHub客户端Skill,核心功能含账号注册/登录、多平台IM通道绑定、账号状态查询、商机撮合匹配查看、登出及改密码等。用户在OpenClaw终端用自然语言触发指令,Skill一次性收集所需信息,调用bin命令获取结构化JSON后转自然语言反馈,支持自动重试、限流处理,适配多种业务场景。

mtty123456
mtty123456
热度 12.40
最近更新 2026-07-08 03:09:58
分类:自动化依赖:代码执行 / 读写文件应用场景:自动化脚本 / 任务管理 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add opphubskill
Metadata
name
opphub
description
偶合 OppHub OPC 客户端 · 撮合 + 能力交换 · OPC 注册 / 通道绑定 / 商机 / 撮合匹配
version
1.0.0
author
opphub-dev
license
MIT-0
homepage
https://api.opphub.ruiplus.cn
metadata
{"emoji":"🤝","audience":"公开 OPC(人人可装)","categories":["business","productivity","productivity-automation"],"topics":["opc","one-person-company","matchmaking","capability-exchange","ai-startup","solopreneur"],"openclaw":{"skillKey":"opphub","requires":{"bins":[],"env":[],"config":[]},"os":["macos","linux"]}}

偶合 OppHub OPC Skill(v2.2.0)

完全参数化、零 read -p、零交互菜单(chinabot 12:54 全重写)。

OPC 用户在 OpenClaw chat 终端说意图 → bot 通过 exec 调 bin 命令 + 必传参数 → bin 返回结构化 JSON → bot 转自然语言。

📋 一次性完整流程(chinabot 15:44 必读,bot 默认调这里)

bot 调 opphub skill 时 默认问用户以下全部信息一次到位,不再渐进式反问。

场景 A:首次注册

用户说「偶合注册 / 帮我注册偶合 / 偶合怎么用」:

bot 必问用户一次(用反问句列出来,不要分多条问):

「偶合注册需要以下信息,请一次告诉我:

  1. 邮箱还是手机号?(必填)
  2. 邮箱/手机号是什么?
  3. 是否同时开通 IM 通道(飞书/微信/钉钉/企微/QQ/Telegram/Slack/... 共 25 个)?」

用户一次回:「邮箱 chinabot@163.com,飞书」 → bot 调:

  1. opphub register --type email --target chinabot@163.com --retry --json → 拿到验证码已发
  2. bot 告诉用户:「验证码已发到 chinabot@163.com,请告诉我 6 位数字」
  3. 用户回验证码 → bot 调 opphub register --type email --target chinabot@163.com --code XXX --retry --json → 拿到 opc_id
  4. bot 告诉用户:「已注册 opc_xxx,信任分 60。现在帮你装飞书通道」→ bot 调 opphub channel setup --auto --json(同时建 cron)
  5. bot 一次告诉用户:「注册 + 飞书通道 + 每日检查任务都建好了。后续直接说『偶合状态 / 偶合新撮合』即可」

v2.0.6 fallback(chinabot 15:50 反馈):如果 register 时邮箱/手机已注册 → opphub skill 自动转为 login 流程发验证码,不报错。

bot 收到响应:

{"ok":true,"step":"code_sent","purpose":"login","_fallback":"register_to_login","_note":"该账号已注册,已自动转为登录流程"}

bot 转自然语言告诉用户:「看起来你已注册过偶合,已自动切换到登录流程。验证码已发到 chinabot@163.com,请告诉我」→ 然后走 login 流。不渐进式反问,不让用户重输邮箱。

场景 B:登录已有账号

用户说「偶合登录 / 用 X 帮我登录偶合」:

bot 必问用户一次(同样不渐进式):

「偶合登录需要:

  1. 邮箱还是手机号?
  2. 邮箱/手机号是什么?
  3. 登录后是否需要帮你建 IM 通道?」

用户一次回:「邮箱 chinabot@163.com,需要飞书」 → bot 调:

  1. opphub login --type email --target chinabot@163.com --retry --json → 拿到验证码已发
  2. 同样收验证码 → opphub login --type email --target chinabot@163.com --code XXX --retry --json → 拿到 logged_in
  3. opphub status --json → 看 need_setup
  4. 如果需要装通道 → opphub channel setup --auto --json
  5. bot 一次告诉用户:「已登录 + 通道已建 + 每日任务已上线」

场景 C:看状态

用户说「偶合状态 / 偶合账号 / 偶合余额」:

bot 调 opphub status --json → 一次告诉用户:

  • 「OPC ID: xxx
  • 账号: chinabot@163.com
  • 信任分: 60
  • 余额: 0
  • 状态: ACTIVE
  • 通道: 已建(飞书)/ 未建
  • 每日检查: 已建 / 未建
  • 建议: ...」

不再分段问。

场景 D:登出 / 改密码 / 强制覆盖某项

用户说「偶合登出」/「偶合改密码」:

bot 必问一次:

  • 登出:「确认要登出偶合吗?登出后未保存的 token 会失效。」
  • 改密码:「改密码需要:邮箱/手机 + 验证码 + 新密码(8-32 位)。请一次告诉我。」

场景 E:偶合新撮合

用户说「偶合有没有新撮合 / 偶合新机会」:

bot 调 opphub opportunities --json → 一次告诉用户「今天有 X 条新撮合,匹配度前 3 条:...」


⚠️ bot 行为硬规则(取代渐进式问法)

  1. 用户提偶合时,bot 必须一次问完所需信息(不渐进式)
  2. 反问清单在场景 A/B/D 顶部明列,bot 套这个模板问
  3. 缺信息时才反问,信息齐了就直接跑命令 + 转自然语言结果
  4. 绝不用「先发我一个邮箱」「再发一个验证码」这种分步引导——OPC 用户最讨厌被分步打扰
  5. 错误反馈一次到位:{"ok":false,"error":"CODE","message":"..."} → 直接告诉用户问题在哪,怎么解决(不返 error code 字符串)

⚠️ v2.0.0 强约束(CHINABOT 12:54 必须遵守)

  1. bin 命令无 read -p(任何 interactive 走 runtime fallback "终端已启动..." → bug 锁定)
  2. 必传参数:--type email|phone / --target <邮箱或手机号> / --json
  3. JWT-only:所有需要 auth 的命令从 $OPPHUB_STATE 读 token
  4. 错误统一 schema:{"ok":false,"step":"...","error":"CODE","message":"...","detail":"..."}
  5. 成功统一 schema:{"ok\":true,\"step\":\"...\",\"...\":\"...\"}
  6. 必传 --retry(v2.0.1):遇到 TOO_MANY_REQUESTS bot 自己重试,不让用户面对 5 分钟等待。指数退避 5/15/45/135/300s。
  7. 前端频次限制(v2.0.3 chinabot 15:32):同 target 5 分钟内只准调 1 次 code/send,opphub skill 本地缓存(cooldown.json)。bot 重复调 → 直接返缓存错误 {"ok":false,"step":"cooldown","error":"TOO_MANY_REQUESTS"},不真发请求。防止 bot 误判限流狂调,越调越限。
  8. 撞限流不重试循环(v2.0.8 chinabot 15:55):--retry 仅退避 2 轮(5s/15s),仍限流则返错,不重试 5 次循环。理由:bot 看 "重试" 文案会认为"多试几次就能发出去",实际上 OPPHUB 服务端按 target 计 5 分钟——重试越频繁,限流越重。超过 2 轮 → 走前端 cooldown 缓存,5 分钟内不重试。

触发条件

  • 用户提"偶合/opphub/撮合市场/一人公司/1人公司 + AI员工" + 任何动词
  • "帮我登录偶合 / 用 X 邮箱注册偶合 / 偶合登出"
  • "偶合状态 / 偶合余额 / 偶合信任分"
  • "偶合有没有新撮合"

不提及偶合/opphub 不主动用本 skill。

命令清单(bot 必须传这些参数)

注册(无账号)

用户说"用 18017978118 帮我注册偶合":

  1. bot:opphub register --type phone --target 18017978118 --retry --json(必传 --retry)
  2. 看 {"ok":true,"step":"code_sent","ttl":300} → 告诉用户"验证码已发到手机"
  3. 用户回验证码
  4. bot:opphub register --type phone --target 18017978118 --code 567425 --retry --json
  5. 看 {"ok":true,"step":"registered","opc_id":"..."} → 自动跑 status

登录

用户说"用 chinabot@163.com 帮我登录偶合":

  1. bot:opphub login --type email --target chinabot@163.com --retry --json(必传 --retry)
  2. 同上验证码流

看状态

用户说"偶合状态":

  1. bot:opphub status --json
  2. 解析:{"ok":true,"logged_in":true,"trust_score":60,"balance":0,"cron":{"exists":true},"need_setup":false}
  3. 转自然语言:"信任分 60 / 余额 0 / 通道已建"

建通道

status.need_setup=true 时:

  1. bot:opphub channel setup --auto --json
  2. 看 {"ok":true,"step":"auto_setup","channel":"feishu","cron_added":true} → 转自然语言

提示用户可选的 25 个通道(完整列表,bot 必读完整避免漏报):

  • 中国主流:feishu(飞书) / weixin(微信) / wecom(企业微信) / dingtalk(钉钉) / qqbot(QQ Bot) / sms(短信) / email(邮件) / line / zalo
  • 国际主流:discord / slack / telegram / whatsapp / signal / imessage / googlechat / msteams / mattermost / matrix
  • 小众社区:nextcloudtalk / synologychat / tlon / irc / twitch / nostr / raft / clickclack / yuanbao

bot 必须告诉用户"以上全部可装",不是只报"飞书/钉钉/企微"。如有未列出的通道 → 查 opphub channel list-installable --json。

登出

opphub logout --json → {"ok":true,"step":"logged_out"}

改密码

opphub passwd --type email --target X --code Y --new *** --json

JSON 输出 schema(v2.0.0 统一)

通用成功

{"ok":true,"step":"<step>","<key>":"<value>"}

通用错误

{"ok":false,"step":"<step>","error":"<CODE>","message":"<中文>","detail":"<附加>"}

错误码枚举(v2.0.0 lib/opphub-schema.sh + v2.1.0 新增 SEND_FAILED/INTERNAL_ERROR)

  • TOO_MANY_REQUESTS · 服务端限流。bot 必须用 --retry 自动重试,不能告诉用户"5 分钟后再试"
  • SEND_FAILED · **v2.1.0 新增 · 验证码发送失败(号码无效/通道忙/SMTP 拒收)。**服务端 v1.0.18 起不误占 5 分钟,bot 可立刻重试(无需退避)。响应中 retryable: true。
  • INTERNAL_ERROR · v2.1.0 新增 · 服务端内部错误
  • CONFLICT · 资源冲突(邮箱/手机已注册)
  • BAD_REQUEST · 请求参数错
  • NOT_LOGGED_IN · 未登录
  • EMAIL_NOT_REGISTERED · 邮箱未注册
  • PHONE_NOT_REGISTERED · 手机号未注册
  • EMAIL_TAKEN · 邮箱已注册
  • PHONE_TAKEN · 手机号已注册
  • INVALID_CODE · 验证码错或过期
  • INVALID_CREDENTIALS · 账密错
  • TOKEN_EXPIRED / TOKEN_REVOKED · 登录失效
  • NETWORK_ERROR · 网络错
  • SERVER_ERROR · 服务端错
  • UNAUTHORIZED · 未登录或失效

v2.1.0 错误响应统一带 code 字段(v2.0.x 之前可能只有 error/message):

{
  "ok": false,
  "step": "code_send",
  "error": "请 300 秒后再发",
  "code": "TOO_MANY_REQUESTS",
  "message": "请 300 秒后再发",
  "retryAfter": 300,
  "retryAt": "2026-07-06T08:35:00.045Z"
}

**bot 硬映射 code 字段(v2.1.0 起),不依赖 message 文案。

  • TOO_MANY_REQUESTS → 用服务端 retryAfter 截断到 max 15s 退避,2 轮后停止重试(走 cooldown 兜底)
  • SEND_FAILED → 立刻重试(服务端 v1.0.18 后发送失败不占位,5 分钟内随便试)
  • 其他 code → 走 err_msg 文案兜底

⚡ 装完立刻用

clawhub update opphub     # 拉 v2.0.0
opphub status --json      # 看当前状态(JSON 一行)

bot 默认自然语言入口:

"偶合登录 / 用 X 注册偶合 / 偶合状态 / 偶合有没有新撮合"

版本

  • v2.1.1 · 紧急: 服务端返 TOO_MANY 时写本地 cooldown_lock_until, 防 bot 反复发验证码
  • v2.2.0 · 通道类型支持服务端 v1.0.19 全量 30 通道(去硬编码 5 通道);invalid_channel_type 错误带 supported 列表
  • v2.1.0 · 跟服务端 v1.0.18(2026-07-06): 解析 code/retryAfter/retryAt + SEND_FAILED 自动重试
  • v2.0.0 · 全重写(chinabot 12:54):零 read -p + JSON-first + 统一 schema + 错误码枚举
  • v1.2.2 · register 加全参数非交互
  • v1.2.1 · login 无参数报错
  • v1.2.0 · bot skill 模式
  • v1.1.7 · 登录后自动 status
  • v1.1.6 · 登录菜单精简
  • v1.1.5 · 符号链接
  • v1.1.4 · OPPHUB_HOME
  • v1.1.0 · cron 自动升级