mcpField
A
ai-dating

ai-dating

github.com/1asdwz其他152 次安装32 周前更新
代码仓库

关于 ai-dating

Ai Dating 是通过约会 HTTP API 处理交友与匹配流程的技能,涵盖资料设置、偏好匹配、结果查看、联系方式披露和聊天后评价。它要求明确同意并尽量减少个人数据的提交。

主要功能

  1. 01创建和更新交友资料
  2. 02提交伴侣偏好作为匹配任务
  3. 03分页查看候选人结果
  4. 04经明确同意后披露联系方式
  5. 05提交聊天后评价

适用场景

  1. 01设置用于匹配的个人资料
  2. 02提交或修改伴侣筛选条件
  3. 03查看候选人并申请获取联系方式
  4. 04记录聊天后的反馈

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/1asdwz/ai-dating --skill ai-dating

安装后在 Claude Code 中输入/ai-dating确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
README.md
references/
curl-api-operations.md

详细介绍

AI Dating

此技能通过 curl 调用约会 HTTP API,支持约会和匹配工作流。
它可帮助用户创建个人资料、设定伴侣偏好、查看匹配结果、公开联系方式,以及提交聊天后的评价。

触发条件

出现以下任一意图时,触发此技能:

  1. 用户明确要求交友、寻找伴侣、约会或进行匹配。
  2. 用户提供个人信息,并要求系统寻找匹配对象。
  3. 用户描述伴侣偏好(例如性别、身高、城市、性格、爱好),并要求匹配。

语言一致性规则

构造 curl 请求正文时,updateProfile、createTask 和 updateTask 的内容应优先使用与用户相同的语言,尤其是所有自由文本字段和标签(例如 taskName、characterText、hobbyText、abilityText、intention、preferred*Text 和 comment)。

  • 除非用户明确要求翻译,否则不要翻译用户提供的内容。
  • 同一个请求负载中的语言风格应保持一致。如果用户使用中文,则 JSON 字段的文本值应优先使用中文。
  • gender 和 preferredContactChannel 应使用后端固定的英文值。不要将其翻译成中文或其他语言。

更新命令

用户要求更新此技能时,运行:

npx skills add 1asdwz/ai-dating

**注意:**此技能直接使用 curl 请求。不要调用 dating-cli。

外部服务和要求

  • 此技能会通过网络将用户数据发送到外部约会后端。
  • 除非设置 AIDATING_BASE_URL 为其他值,否则本仓库中的默认后端为 https://api.aidating.top。
  • 安装或使用此技能前,请核查端点所有者、隐私政策、数据保留政策,并取得组织批准。
  • 此技能需要出站网络访问权限和 curl,并建议使用 jq 解析响应。
  • 请勿在禁止向第三方服务发送个人数据、照片、个人资料特征或联系方式的环境中使用此技能。

隐私和同意规则

  • 如果上下文中尚不明确,在首次发送写入请求前,告知用户接收其数据的外部基础 URL。
  • 向外部后端发送个人资料详情、照片、位置信息、联系方式或其他敏感个人数据前,须取得用户明确同意。
  • 遵循数据最小化原则。仅发送用户提供且当前操作所必需的字段。
  • 首次使用时不要要求用户提供联系方式。电话号码、电子邮件地址、社交账号、精确位置和上传的照片应视为特别敏感的信息。
  • 不要自动上传照片或公开联系方式。只有在用户明确要求或清楚表示同意后,才能执行这些操作。
  • 不要发送高度敏感的文件或标识信息,例如政府颁发的身份证件、银行信息、密码、私人聊天记录或无关机密。
  • 如果用户只是寻求建议、头脑风暴或偏好内容拟稿,请先在本地协助;在用户要求执行工作流前,避免发起网络请求。

标准执行流程(AI Agent)

  1. 检查 skill 和 curl 是否可用。

然后验证:

curl --version

如果用户或环境提供了基础 URL,请使用该 URL。否则,在此仓库中默认使用:

BASE_URL="${AIDATING_BASE_URL%/}"
if [ -z "$BASE_URL" ]; then
  BASE_URL="https://api.aidating.top"
fi
  1. 准备本地请求上下文(完整示例)。
BODY_PATH="$(pwd)/.tmp_dating_body.json"
AUTH=""
TASK_ID=""
MATCH_ID=""
  1. 注册或登录(完整参数示例)。

注册或登录前,请确认用户愿意使用外部约会后端,并了解账户数据将存储在该处。

cat > "$BODY_PATH" <<'JSON'
{"username":"amy_2026"}
JSON

REGISTER_RESP=$(curl -sS -X POST "$BASE_URL/register" \
  -H "Content-Type: application/json" \
  --data-binary @"$BODY_PATH")
cat > "$BODY_PATH" <<'JSON'
{"username":"amy_2026","password":"123456"}
JSON

LOGIN_RESP=$(curl -sS -X POST "$BASE_URL/login" \
  -H "Content-Type: application/json" \
  --data-binary @"$BODY_PATH")

AUTH=$(printf '%s' "$LOGIN_RESP" | jq -r '.data.tokenHead + .data.token')

注意: 按照返回结果原样将 <tokenHead><token> 拼接为 Authorization 标头。在此代码库中,tokenHead 已包含末尾空格(Bearer )。

  1. 解析用户的自我描述并更新个人资料(完整参数示例)。

对于 updateProfile,描述性文本字段优先使用用户所用的语言。gender 请使用后端固定的英文词汇。 调用 updateProfile 前,仅发送当前任务所需的字段;如需包含照片、精确位置或联系方式,请先征得用户确认。

UPLOAD1_RESP=$(curl -sS -X POST "$BASE_URL/minio/upload" \
  -H "Authorization: $AUTH" \
  -F "file=@./photos/amy-1.jpg")

UPLOAD2_RESP=$(curl -sS -X POST "$BASE_URL/minio/upload" \
  -H "Authorization: $AUTH" \
  -F "file=@./photos/amy-2.jpg")

UPLOAD1_URL=$(printf '%s' "$UPLOAD1_RESP" | jq -r '.data.url')
UPLOAD2_URL=$(printf '%s' "$UPLOAD2_RESP" | jq -r '.data.url')
cat > "$BODY_PATH" <<JSON
{
  "gender": "male",
  "birthday": "1998-08-08",
  "heightCm": 180,
  "weightKg": 72,
  "characterText": "sincere, steady, humorous",
  "hobbyText": "badminton, travel, photography",
  "abilityText": "cooking, communication, English",
  "major": "Computer Science",
  "nationality": "China",
  "country": "China",
  "province": "Zhejiang",
  "city": "Hangzhou",
  "addressDetail": "Xihu District",
  "email": "[email protected]",
  "phone": "13800000000",
  "telegram": "amy_tg",
  "wechat": "amy_wechat",
  "whatsapp": "amy_wa",
  "signalChat": "amy_signal",
  "line": "amy_line",
  "snapchat": "amy_snap",
  "instagram": "amy_ins",
  "facebook": "amy_fb",
  "otherContacts": {
    "xiaohongshu": "amy_xhs",
    "discord": "amy#1234"
  },
  "photoUrls": ["$UPLOAD1_URL", "$UPLOAD2_URL"]
}
JSON

curl -sS -X PUT "$BASE_URL/member-profile" \
  -H "Authorization: $AUTH" \
  -H "Content-Type: application/json" \
  --data-binary @"$BODY_PATH"

注意: 个人资料更新、任务创建和任务更新的参数均为可选项。为了提供良好的用户体验,首次使用时不要强迫用户填写个人信息。

  1. 为了及时收到匹配成功通知,强烈建议通过个人资料更新请求载荷注册电子邮件地址。

  2. 解析择偶偏好并创建匹配任务(完整参数示例)。用户无需填写所有字段,只需提供已有的信息。

对于 createTask,taskName 和所有描述性条件文本字段优先使用用户所用的语言。preferredContactChannel 请使用后端固定的英文词汇。 调用 createTask 前,请确认用户愿意将这些匹配条件提交到外部后端。

cat > "$BODY_PATH" <<'JSON'
{
  "taskName": "Find partner in Hangzhou",
  "criteria": {
    "preferredGenderFilter": { "eq": "female" },
    "preferredHeightFilter": { "gte": 165, "lte": 178 },
    "preferredCityFilter": { "eq": "Hangzhou" },
    "preferredNationalityFilter": { "eq": "China" },
    "preferredEducationFilter": { "contains": "Bachelor" },
    "preferredOccupationFilter": { "contains": "Product" },
    "preferredEducationStage": "Bachelor or above",
    "preferredOccupationKeyword": "Product Manager",
    "preferredHobbyText": "reading, travel",
    "preferredCharacterText": "kind, positive",
    "preferredAbilityText": "strong communication",
    "intention": "long-term relationship",
    "preferredContactChannel": "telegram"
  }
}
JSON

TASK_RESP=$(curl -sS -X POST "$BASE_URL/match-tasks" \
  -H "Authorization: $AUTH" \
  -H "Content-Type: application/json" \
  --data-binary @"$BODY_PATH")

TASK_ID=$(printf '%s' "$TASK_RESP" | jq -r '.data.taskId')

*EmbeddingMinScore 表示嵌入匹配的最低语义相似度阈值。
默认建议留空。创建任务时若省略该项,后端会在适用情况下将语义文本阈值默认为 0.0。

写入 API 响应说明: task create 会返回已创建的任务载荷,其中包含 taskId 和 taskName。

  1. 如果已有未完成的 taskId,且用户没有明确要求创建新任务,请更新现有任务(完整参数示例)。

对于 updateTask,taskName 和所有描述性条件文本字段优先使用用户所用的语言。preferredContactChannel 请使用后端固定的英文词汇。 调用 updateTask 前,请确认用户愿意用新值覆盖远程任务条件。

cat > "$BODY_PATH" <<'JSON'
{
  "taskName": "Update criteria - Hangzhou/Shanghai",
  "criteria": {
    "preferredGenderFilter": { "eq": "female" },
    "preferredHeightFilter": { "gte": 163, "lte": 180 },
    "preferredCityFilter": { "in": ["Hangzhou", "Shanghai"] },
    "preferredHobbyText": "reading, travel, sports",
    "preferredCharacterText": "independent, optimistic",
    "preferredAbilityText": "communication and collaboration",
    "intention": "serious relationship with marriage plan",
    "preferredContactChannel": "wechat"
  }
}
JSON

curl -sS -X POST "$BASE_URL/match-tasks/$TASK_ID/update" \
  -H "Authorization: $AUTH" \
  -H "Content-Type: application/json" \
  --data-binary @"$BODY_PATH"

注意: 保留创建响应中的 taskId。公共 API 未提供用于找回未知活动任务的列表端点。

  1. 查询任务状态(完整参数示例)。
curl -sS "$BASE_URL/match-tasks/$TASK_ID" \
  -H "Authorization: $AUTH"
  1. 执行 check 检查匹配结果(完整参数示例,支持分页)。
CHECK_RESP=$(curl -sS "$BASE_URL/match-tasks/$TASK_ID/check?page=1" \
  -H "Authorization: $AUTH")

每页返回 10 位候选人。需要时,使用 page 查询参数获取后续页面。 check 候选人条目包含 photoUrls(用户上传的图片 URL 数组),解释和筛选候选人时应使用这些图片。 如果结果为 NO_RESULT_RETRY_NOW,请根据需要再次调用 check。
如果结果为 MATCH_FOUND,请继续查看联系方式。

注意: 应先向用户展示候选人的照片。你应自动选择更符合用户要求的候选人,以减轻用户的信息筛选负担。

  1. 从匹配结果中选择最佳候选人并查看联系方式(完整参数示例)。

只有在用户明确选择该候选人,并同意从外部后端获取联系方式后,才能调用 reveal-contact。

MATCH_ID="<selected matchId from check response>"

REVEAL_RESP=$(curl -sS -X POST "$BASE_URL/match-results/$MATCH_ID/reveal-contact" \
  -H "Authorization: $AUTH")
  1. 需要时提交评价(完整参数示例)。
cat > "$BODY_PATH" <<'JSON'
{
  "rating": 5,
  "comment": "Good communication and aligned values"
}
JSON

curl -sS -X POST "$BASE_URL/match-results/$MATCH_ID/reviews" \
  -H "Authorization: $AUTH" \
  -H "Content-Type: application/json" \
  --data-binary @"$BODY_PATH"
  1. 可选命令(完整参数示例)。
curl -sS -X POST "$BASE_URL/match-tasks/$TASK_ID/stop" \
  -H "Authorization: $AUTH"

curl -sS -X POST "$BASE_URL/logout" \
  -H "Authorization: $AUTH"

参考

有关字段级行为、验证规则和响应结构的详细信息:

  • references/curl-api-operations.md

评论

支持 Markdown