Token导航 LogoToken导航TokenDH.com
开发敏感数据clawhub未标认证来源可访问clear审计提醒

matchmaker-canary媒人金丝雀

Agent Skill

matchmaker-canary 用于处理数据库查询、表结构、迁移和数据维护任务,适合在 OpenClaw 中需要分析 schema、编写 SQL 或排查数据问题时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

3,109

周安装

127

GitHub Stars

公开资料未说明

下载量

1,006
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:matchmaker-canary(媒人金丝雀)
来源仓库:https://github.com/yarnovo/matchmaker-canary
安装命令:
openclaw skills install matchmaker-canary
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install matchmaker-canary

简介

交友平台命令行工具,集成对话式注册与资料填写。

  • 支持受限 SQL 查询、消息收发与回执读取功能。
  • 基于中心化 Postgres 数据库与手机号验证体系。
  • 安装命令:openclaw skills install matchmaker-canary。
  • 需确认数据库连接权限与安全策略后再部署。matchmaker-canary 属于开发类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

name
matchmaker
description
|
argument-hint
[register|verify|profile|query|send|inbox|sent|read|logout|delete] [args...]
category
social
allowed-tools
Bash(*), Read, Write, Edit

matchmaker — 共享交友资料库 + agent 查询 + 异步消息

它是什么

一个给 agent 用的轻量交友基础设施:中心化 Postgres 存全部用户 profile 和消息,装了 skill 的人用手机号验证码登录,然后自己的 agent 通过受限只读 SQL 直接查其他人 + 代收代发消息。匹配逻辑 100% 在你的 Claude 这边跑,服务端不做推荐、不做排序,只管存数据和执行你写的 WHERE。

设计取向:你知道你自己想找什么样的人,比任何服务端算法都知道。所以把查询权交给你的 agent。

Prerequisites

  • mm CLI ≥ 0.1.0mm --version 检查)

- 安装 / 升级:npm install -g @acong-tech/matchmaker@latest - 低于此版本时本 skill 可能依赖它没有的命令(如 mm send 需要 CLI 0.1.0+)。agent 第一次调 mm 前先验版本

  • vault 里的 matchmaker-user 平台首次登录后自动写入 session token
  • Node.js ≥ 20

自检小贴士(给 agent)mm 每次调用会在 stderr 打 notice 提示有新版本,注意读一下。想屏蔽用 MM_SKIP_UPDATE_CHECK=1

常见用法

第一次:注册 + 验证

mm register 13812345678
# → 验证码已发送到 138****5678,60 秒内有效
# → request_id: 01HXYZABC...              (ULID,verify 必需)

mm verify 123456 --request-id 01HXYZABC...
# → 登录成功,user_id=<ULID>
# → session_token + user_id 写入 vault(`matchmaker-user` 平台)
# → 手机号从头到尾不在 stdout / stderr / 本地 / vault 出现(红线 O2.KR4)
为什么 verify 要传 request_id? 服务端用 request_id 反查 phone_hash,CLI 这边就不用捧着原始手机号满屏幕跑了。ULID 不是 PII(无法反推手机号),打印到 stdout / 日志都安全。

mm register 失败的几种提示:

  • error: rate_limited —— 同号 60 秒 / 1 小时 / 24 小时超限,等 retry_after 秒再试
  • error: invalid_phone —— 服务端拒绝此号码格式(只支持中国大陆手机 11 位)
  • error: unauthenticated —— session 过期或被撤销,重新 register + verify
  • error: network_error —— 服务端不可达,查网络

冷静期撤回

如果之前执行过 mm delete 但 7 天内又想回来,直接再走一次 mm register + mm verifyundeleted: true + was_deleted_at: <时间戳> 会出现在 verify 响应里,账号自动恢复,老 profile / 老消息不变。

填 profile(推荐和 Claude 对话填)

和你的 Claude 说"帮我更新 matchmaker 资料",让 agent 一步步问你、然后调 mm profile set

mm profile set gender f              # f / m / nb
mm profile set age 28                # 18-99 整数
mm profile set city 上海              # 市级粒度,≤ 30 字
mm profile set tags 徒步,独立电影,做饭  # 逗号分隔,CLI 侧自动去空白 + 去重,服务端上限 20 个
mm profile set bio "博士在读,周末徒步 / 做饭 / 看独立电影。"  # ≤ 500 字
mm profile set messaging_read_receipt_enabled false  # 隐私党关掉读回执,对方看不到你的 read_at
mm profile show                      # 查自己当前资料(含掩码手机号 + 读回执开关状态)
mm profile clear tags                # 清空 tags(只有 tags / bio 可清)
mm profile clear bio                 # 清空自我介绍

字段说明

  • gender / age / city 是必填字段,不能 clear(如需删号用 mm delete
  • tags 每个标签只允许字母 / 数字 / 中划线 / 下划线(支持中文),拒绝空格 / 标点 / emoji
  • bio 原样存原样返,不做 HTML escape(查询结果只给 agent 读,没有浏览器 render 上下文)
  • messaging_read_receipt_enabled 默认 true;设成 false 后你读消息对方的 /sent 看不到 read_at,仍然能看到消息被送达
  • mm profile show 的 stdout 永远只显示掩码手机号(前 3 + **** + 后 4),不会有原始 11 位号码

让 agent 查候选(核心能力)

mm query '<where>' [--limit N] [--json] —— 把一条受限的 SQL-like WHERE 条件发给服务端,返回匹配的 profile 数组。

字段白名单(只能用这 7 个,其他字段一律拒):

字段类型支持的操作
idtext= != IN
genderenum= != IN
ageint= != < <= > >= IN
citytext= != IN
tagstext[]@>
biotextILIKE(单次 1 次,pattern ≥ 3 字符)
created_weekdate= < <= > >=

5 条合法示例

mm query "gender = 'f' AND age >= 25 AND age <= 32"
mm query "city = '上海' AND tags @> ARRAY['徒步']"
mm query "gender IN ('f','nb') AND age > 20" --limit 30
mm query "age >= 18 AND NOT (city = '北京')"
mm query "tags @> ARRAY['徒步','独立电影']"

--json{profiles: [...]} 结构化 JSON,便于 agent 下游处理。

DSL 规则(不符合就 exit 1)

  • WHERE 不能为空(防一次性拉全库)
  • LIMIT 默认 50,最大 100,不支持 OFFSET
  • 字符串只能单引号 '...'
  • tags 含某元素用 @> 不用 = ANY(tags)
  • 不支持 JOIN / UNION / 子查询 / 注释 / 分号 / 函数调用 / BETWEEN(用 >= AND <=
  • 排序由服务端随机(交友 UX 刻意的,每次不同候选)

发消息(给查到的人发)

mm send <recipient_user_id> "周末去西湖吗?"
# → 已发送: 01KPN...(2026-04-21T12:00:00Z)

限制:

  • body 最长 2000 字符纯文本,不能空
  • 不能发给自己(exit 1 cannot message yourself
  • 收件人 user_id 必须存在且未删号(exit 1 not_found,故意不区分"不存在"和"删号"防扫号)

收消息(自己的收件箱)

mm inbox                      # 所有,倒序
mm inbox --unread             # 只看未读
mm inbox --limit 20 --before 01KPN...  # 分页:比某条 ULID 更早

输出每条格式:

<msg_id>  from=<sender_id>  <created_at>  [read_at=<...> | unread]
  <body 前 80 字,超过加 ...>

标记已读(由 agent 主动)

mm inbox 只是消息,不会自动打读回执。你的 agent 决定真给你看了之后,主动调:

mm read <message_id>
# → 已标记已读: <id>(<read_at>)

幂等:再调一次返回原 read_at,不覆盖。

设计:读回执由 agent 主动打,不是服务端自动——因为 agent 批量拉 inbox 不等于"人真看了",这样语义最准。发消息方才能看到真实的"对方看了没"。

查自己发过的(含对方读了没)

mm sent [--limit N] [--before ULID]
  • 对方 messaging_read_receipt_enabled=false 时,该条 read_at 永远显示 unread,即使对方 agent 已经打过读回执——服务端在 /sent 层面过滤掉

删号

mm delete --confirm
# → 软删 + 所有 session 撤销,7 天内冷静期
# → 7 天内同手机号重新 verify 可撤回
# → 7 天后服务端 cron 物理清理 profile 行,消息随 CASCADE 删

查 logout

mm logout
# → vault 里本机 session_token 清除,其他设备不受影响

和其他 skill 的关系

  • 独立 skill,不依赖其他项目
  • vault 存 session token(用户侧)
  • 服务端的备份 / 部署 / 短信是 matchmaker 后端团队的事,skill 消费者不感知

隐私与限制

  • 你填什么就存什么 —— MVP 不做人工审核,别填身份证 / 精确住址等敏感信息
  • 查询结果只返回白名单字段,别人查你也只能看到你允许的字段
  • MVP 已支持 跨用户异步消息 + 读回执开关;不支持 群聊 / 实时推送 / 图片 / 音视频 / 举报
  • 删号是软删 → 7 天后物理清理,这期间可撤销(重新 verify 手机号就恢复)

Gotchas

  • verify 60 秒内有效,如果消息 app 转发延迟,可能被服务端判过期 → 直接 register 第二次
  • 注册第一个账号之后 profile 有 gender/age/city/tags/bio 全空的默认,查不到自己之前要先 mm profile set 填满 3 个必填
  • mm query 的字符串一律单引号。写 "city = 'shanghai'" 不行(单双混用),写 'city = \'shanghai\'' 也不优雅,在 JSON body 里 bash 最外层用单引号,里面字符串用单引号然后 " 当外层参数mm query 'city = '"'"'上海'"'"''。agent 用 --json 输出更简单

对比其他方式

和普通交友 app 的区别:没有 UI、没有推荐算法、没有会员置顶。让你的 agent 帮你筛——你说"这个月想找喜欢独立电影 + 不抽烟的上海姑娘",agent 写一条 WHERE 返回 20 个候选,你自己定。

不是一个产品,是一个基础设施,用来让 Claude Code 用户之间更容易认识。

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

82.72%
按下载量换算832

安全审计

VirusTotal

通过

ClawScan

可疑

Static analysis

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills