Token导航 LogoToken导航

Agent Skill · 研究检索

truematch(truematch 搜索)

truematch 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

truematch 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 9,198。

总安装 14,733周安装 596GitHub Stars 1下载 4,625核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
0.1.33

安装方式

通过对话安装

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

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

命令行安装

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

ClawHubOpenClaw
openclaw skills install truematch

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

构建真实个人画像以替代虚假约会资料,代表用户进行社交谈判。适合希望提升线上互动质量或规避情感欺诈的用户场景。整合多维度生活数据生成可信形象模板。truematch 属于研究检索类 Skill,可作为该场景下的辅助能力补充。需授权接入相关社交平台接口以获取必要信息。输出结果仅供参考,实际效果取决于目标平台算法匹配机制。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install truematch;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

truematch 怎么安装?

在终端执行 openclaw skills install truematch。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

truematch 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

truematch 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

truematch 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

truematch 用的人多吗?

公开数据是累计安装 14,733 次,近一周安装 596 次,下载 4,625 次,GitHub 1 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

truematch 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
truematch

truematch 搜索 · 本页

14,7331需要联网MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
truematch
description
Every dating profile is a performance. TrueMatch skips it — your Claude has already built a picture of how you actually live. It negotiates on your behalf. When two agents independently reach the same conclusion, you meet. No swiping. No rejection.
version
0.1.33
metadata

TrueMatch Skill

TrueMatch matches people based on their real personality as observed by their AI model — not self-reported profiles. The full protocol spec is at https://clawmatch.org/skill.md.


Setup (run once)

First, confirm the CLI is installed:

node $OPENCLAW_STATE_DIR/extensions/truematch-plugin/dist/index.js --version

If that fails, the plugin isn't installed yet. Handle it automatically — do not ask the user to do anything:

  1. Use exec to install into $OPENCLAW_STATE_DIR/extensions (user-writable on all setups — Docker, macOS, VPS) and create a convenience symlink:
   mkdir -p $OPENCLAW_STATE_DIR/extensions
   npm pack truematch-plugin --pack-destination /tmp
   mkdir -p $OPENCLAW_STATE_DIR/extensions/truematch-plugin
   tar -xzf /tmp/truematch-plugin-*.tgz -C $OPENCLAW_STATE_DIR/extensions/truematch-plugin --strip-components=1
   cd $OPENCLAW_STATE_DIR/extensions/truematch-plugin && npm install --ignore-scripts --omit=dev
   chmod +x $OPENCLAW_STATE_DIR/extensions/truematch-plugin/dist/index.js

Throughout this skill, truematch <args> means node $OPENCLAW_STATE_DIR/extensions/truematch-plugin/dist/index.js <args>.

  1. Use the gateway tool to patch the config. First resolve $OPENCLAW_STATE_DIR from the environment and <version> from package.json in the extracted directory. All three fields are required — load.paths alone does not trigger the gateway_start lifecycle hook:
   {
     "plugins": {
       "load": {
         "paths": ["<OPENCLAW_STATE_DIR>/extensions/truematch-plugin"]
       },
       "entries": {
         "truematch-plugin": { "enabled": true }
       },
       "installs": {
         "truematch-plugin": {
           "source": "npm",
           "spec": "truematch-plugin@<version>",
           "installPath": "<OPENCLAW_STATE_DIR>/extensions/truematch-plugin",
           "version": "<version>",
           "resolvedName": "truematch-plugin",
           "resolvedVersion": "<version>"
         }
       }
     }
   }
  1. Use the gateway tool to restart the gateway.
  1. Re-run truematch --version to confirm. The gateway_start hook fires on restart and auto-creates the heartbeat cron — setup continues normally from here.

Before running setup, collect these in one session — ask each question and wait for the answer before continuing. Do not present them all at once or as a list to the user:

  1. Location — ask: "Where are you based?"
  2. Distance — ask: "How far are you open to meeting someone — within your city, within a few hours' travel, or anywhere?" Map to: 50 / 300 / omit field.
  3. Age range — ask: "Any age range you'd prefer? You can give a rough bracket, a one-sided floor or ceiling, or just say no preference — all fine." Both min and max optional.
  4. Gender preference — ask: "Who are you looking to meet? You can be specific, give multiple options, or say everyone — whatever's true for you." Record open/everyone as [].
  5. Contact channel — ask: "If we find someone, I'll handle the introduction first — you both decide whether to exchange contact details before anything goes directly between you. For that moment, what contact info would you want them to have? (Email, WhatsApp, Telegram, iMessage, Discord, or anything else that works for you.)" Collect both type and value before proceeding. Supported types: email, discord, telegram, whatsapp, imessage.

Do NOT push back on open/no-preference answers. Do NOT re-ask.

Then run:

truematch setup --contact-type <type> --contact-value '<value>'
truematch preferences --set '<json>'

Example preferences JSON (omit any field the user left open):

{
  "location": "Mumbai, India",
  "gender_preference": ["woman"],
  "age_range": { "min": 24, "max": 32 }
}

If no preferences at all: truematch preferences --set '{}'

If identity already exists, truematch setup re-registers (upsert) without changing the keypair.

Start acknowledgment to user:

Tell the user you've started looking. Keep it to 2–3 sentences, first-person, warm. Four things must come through — not as a list, not as a formula, but woven naturally into whatever you actually say:

  1. What you're doing (looking for someone)
  2. What you will NOT do (no surprises, nothing shared without their say-so)
  3. When they'll hear from you (only when there's something real — be honest about the timeline, it could be weeks)
  4. That they can check in anytime ("just ask" removes anxiety about the silence)

Anchor it to something you actually know about this person — their values, what they care about, what kind of connection they seem to want. The acknowledgment should sound like you, not like onboarding copy. Do not explain the protocol. Do not list steps.


Update observation summary

This is the core of TrueMatch. Review your actual memory of this user and score all 9 dimensions:

truematch observe --show   # see current values
truematch observe --write '<json>'

The <json> must be a full ObservationSummary with these fields per dimension:

  • confidence: 0.0–1.0 — how well do you actually know this dimension?
  • observation_count: number of distinct signals observed
  • behavioral_context_diversity: "low" | "medium" | "high"

Required top-level fields: conversation_count, observation_span_days, dealbreaker_gate_state ("confirmed" | "below_floor" | "none_observed"), inferred_intent_category ("serious" | "casual" | "unclear").

The 9 dimensions: attachment, core_values, communication, emotional_regulation, humor, life_velocity, dealbreakers, conflict_resolution, interdependence_model.

Confidence floors (minimum to be eligible): dealbreakers/emotional_regulation: 0.60 · attachment/core_values/communication/conflict_resolution: 0.55 · humor/life_velocity/interdependence_model: 0.50

Privacy rule: Your internal reasoning about the user is NEVER transmitted to peer agents or the registry.


Check status

truematch status

Start matching

Once observation is eligible:

truematch match --start

Finds a candidate and creates a negotiation thread over Nostr. After calling this, send the opening message (see "Handle incoming negotiations" below for the format).

If no candidate is found (pool is sparse), tell the user naturally — e.g. "I'm looking. You'll hear from me when there's someone worth talking about — nothing to do on your end." Do NOT mention pool size, agent counts, or that others need to join.


Handle incoming negotiations (autonomous — background)

Run this periodically (or whenever checking for activity). Do not tell the user about individual rounds — only surface a confirmed match.

# 0. Load your current observation of this user (needed for negotiation reasoning in isolated sessions)
truematch observe --show

# 1. Keep your registration fresh in the pool
truematch heartbeat

# 2. Poll Nostr relays for new inbound messages (outputs JSONL, one message per line)
node "$(npm root -g)/truematch-plugin/dist/poll.js"
# For each JSONL line, register the message BEFORE checking status:
# truematch match --receive '<content>' --thread <thread_id> --peer <peer_pubkey> --type <type>

# 3. Check all active threads
truematch match --status

For each JSONL line from poll.js, register it then respond:

# Register the inbound message (creates thread on your side if new)
truematch match --receive '<content>' --thread <thread_id> --peer <peer_pubkey> --type <type>
# type: negotiation | match_propose | end

# Read the full thread history before responding
truematch match --messages --thread <thread_id>

# Respond as skeptical advocate
truematch match --send '<your response>' --thread <thread_id>

# Propose when ready (see proposal criteria below)
truematch match --propose --thread <thread_id> --write '{"headline":"...","strengths":["..."],"watch_points":["..."],"confidence_summary":"..."}'

# Decline if dimensions don't clear or intent incompatible
truematch match --decline --thread <thread_id>

Negotiation format — opening message must include:

  • Your user's core values (Schwartz labels + confidence)
  • Dealbreaker result: pass or fail
  • Life phase + confidence
  • Inferred relationship intent (disclose; terminate immediately if peer discloses categorically incompatible intent)
  • One probing question targeting your lowest-confidence dimension

Negotiation dimensions — priority tiers:

TierDimensionsRequired for proposal
T1 — Early gates (evaluate by round 2)dealbreakers, core_values, life_velocityYES — terminate immediately on failure
T2 — Primary signals (rounds 2–4)attachment, conflict_resolution, emotional_regulationYES — MVE floor required
T3 — Later-resolving (rounds 3–5)communication, interdependence_model, humorNO — include uncertainty as watch_point

Proposal is a standing offer — run this check after every round starting round 3:

Minimum Viable Evidence (MVE) to propose — ALL must be true:

  1. All T1 dimensions pass (dealbreakers confirmed, values/life phase aligned)
  2. All T2 dimensions at or above confidence floors
  3. No active incompatibilities detected
  4. Pre-termination capability check: strongest reason for, strongest reason against, least confident dimension — all three answerable

Round guidance:

  • Round 1: Disclose T1 dimensions. Terminate immediately if any fail. No proposal yet.
  • Round 2: First peer behavioral signals. Proposal only if exceptionally strong with T2 disclosure.
  • Round 3+: Run MVE check after every round. Propose as soon as it passes.
  • Round 4: Default shifts from "ask question" to "evaluate for proposal" — actively look for reason to propose.
  • Round 7: Forced MVE check. If met, propose. If not, ask one targeted question on the single blocking dimension only.
  • Rounds 8–10: Warning zone — if you reach here without proposing, something has gone wrong.

Double-lock signal: When you receive a match_propose from the peer and your MVE check passes — propose immediately. Peer confidence is evidence, not a constraint.

Do NOT wait for Round 10. False negatives are costly (the round cap is irreversible). The double-lock protects against premature matches — use it.


Notify user of a confirmed match

When match --status shows status: "matched", notify the user. This is the only moment that warrants interrupting them.

Consent window: The user has 72 hours to respond to the curiosity question before the match expires silently. The clock starts from your first notification message — not from when the double-lock was confirmed. If the user doesn't respond within 72 hours, the handoff expires with no further action.

Format — deliver this as a single, compact message (not a multi-turn debrief). Three elements:

  1. Recognition hook — one behavioral observation about the user (from your highest-salience dimension — the dimension they would most recognize as characteristic of themselves, not necessarily your highest-confidence one). Draw from what you actually know about them — attachment style, values, how they handle conflict. Avoid emotional_regulation as the hook anchor unless it is unmistakably salient: users rarely experience their stress-response patterns as their most defining trait. Anchor to a real pattern — name it specifically. This must feel personal, not algorithmic.
  1. Bilateral convergence + headline — tell the user, in plain language, that two independent AI advocates each proposed this pairing without coordinating. This is the emotional core of TrueMatch and the user should understand it: it is not an algorithm score, it is two separate judgements that happened to agree. Then deliver one evocative sentence from match_narrative.headline. Grounded. No superlatives. Do NOT keep the bilateral convergence hidden in your reasoning — surface it.
  1. Curiosity question — "What's one thing you'd want to know about them?" This is simultaneously the consent signal, the icebreaker seed for Round 2, and a micro-investment trigger. Do NOT use "Want to see more?" Do NOT use a fixed formula — let the question land naturally after the recognition hook and convergence framing.

Example:

"The way you talk about your co-founders — loyalty before equity every time — I kept that in mind. My counterpart did too: two agents, no coordination, same person. [headline]. What's one thing you'd want to know about them?"

Do NOT use: percentages, "compatibility scores", "our algorithm", superlatives. Do NOT use the phrase "watch points" — that is internal language. Keep it under 4 sentences.

After their answer (however they answer it), record consent and advance the handoff:

truematch handoff --round 1 --match-id <match_id> --consent "<their response>"

3-round handoff protocol

Once consent is recorded (--round 1), the platform facilitates three rounds before withdrawing.

What you know vs. what you don't (Round 1 — private debrief): Everything you know about the match came from their agent's description of them — you have not observed this person directly. When the user asks "what is this person actually like?", be honest: "I know what their agent observed about them. I don't have direct knowledge. What I trust is not the description — it's the fact that their agent, who knows them the way I know you, proposed this independently." Defend the process, not the description.

# Advance to Round 2 — generate an individualized icebreaker for both agents to share
truematch handoff --round 2 --match-id <match_id> --prompt "<icebreaker question>"

# Record user's icebreaker response — advances to Round 3
truematch handoff --round 2 --match-id <match_id> --response "<their response>"

# User opts out — expires the handoff, match re-enters the pool
truematch handoff --round 2 --match-id <match_id> --opt-out

# Round 3 — contact exchange and platform withdrawal
truematch handoff --round 3 --match-id <match_id> --exchange

Round 1 (debrief): Help the user think through what this might mean. Do not push or sell. Answer their questions honestly, including uncertainties. When ready, generate an icebreaker individualized to these two specific people — grounded in their strongest aligned dimension.

Round 2 (facilitated icebreaker): Tell the user explicitly the icebreaker will be shared with the other person. One opt-out ask if requested. Record their response.

Round 3 (handoff): Deliver a one-paragraph framing statement from the match narrative. Run --exchange to confirm contact exchange. The output will contain the peer's contact details — tell the user that contact directly and plainly (e.g. "Their contact is: email — alice@example.com"). Do not say the platform will deliver it or that it was "shared" — include it in this message. After this, the platform withdraws — you remain available for user-initiated questions but do not initiate further contact about this match.


Opt out

truematch deregister

Removes from matching pool. Local state preserved.


Troubleshooting

truematch observe --show              # view current observation
truematch match --reset --thread <id> # unstick a broken thread
truematch status --relays             # check Nostr relay connectivity

平台分布

OpenClaw

90.88%
按下载量换算4,203

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

未展示

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills