Token导航 LogoToken导航

Agent Skill · 研究检索

hedy(hedy 搜索)

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

hedy 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为接触敏感数据;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 17,174。

总安装 6,756周安装 276GitHub Stars 2下载 2,164核验 2026-05-01

安装说明

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

安装方式

通过对话安装

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

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

命令行安装

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

ClawHubOpenClaw
openclaw skills install hedy

这个 Skill 是做什么的

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

通过 Hedy REST API 访问 Hedy 会议数据:会议、记录、亮点、待办事项、主题、上下文和 Webhook。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

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

  2. 2

    拿到安装命令

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

  3. 3

    安装后重启宿主

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

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

hedy 怎么安装?

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

hedy 支持哪些 AI 工具?

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

hedy 需要什么权限?

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

hedy 是免费的吗?

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

hedy 用的人多吗?

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

hedy 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

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

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要厂商级技术支持和 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调用外部服务未明确有提醒
hedy

hedy 搜索 · 本页

6,7562接触敏感数据MIT-0通过

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

SKILL.md 原文

name
hedy
description
Access Hedy meeting data: sessions, transcripts, highlights, todos, topics, contexts, and webhooks via the Hedy REST API.
metadata
{"openclaw": {"emoji": "🎙️", "requires": {"env": ["HEDY_API_KEY"], "bins": ["curl", "jq"]}, "primaryEnv": "HEDY_API_KEY"}}

Hedy

Access a user's Hedy meeting data through the Hedy REST API. Read sessions with transcripts, highlights, and todos. Manage topics, session contexts, and webhooks.

Hedy is an AI-powered meeting coach that provides real-time speech transcription and AI-powered conversation analysis. This skill lets you query the user's meeting history, search for specific sessions, retrieve structured meeting outputs, and manage organizational features like topics and webhooks.

Setup

1. Get your API key

Generate an API key inside the Hedy app under Settings > API. Keys start with hedy_live_.

2. Configure OpenClaw

Add the following to ~/.openclaw/openclaw.json:

{
  "skills": {
    "entries": {
      "hedy": {
        "enabled": true,
        "apiKey": "hedy_live_YOUR_KEY_HERE",
        "config": {
          "region": "us"
        }
      }
    }
  }
}

Set "region" to "eu" if your Hedy account uses EU data residency. Default is "us".

3. Sandbox users

If you run OpenClaw in a Docker sandbox, apiKey and env values from openclaw.json are injected into the host process only. Add the key to your sandbox environment separately:

{
  "agents": {
    "defaults": {
      "sandbox": {
        "docker": {
          "env": {
            "HEDY_API_KEY": "hedy_live_YOUR_KEY_HERE"
          }
        }
      }
    }
  }
}

4. Restart OpenClaw

Start a new session so the skill is picked up.

Region and Base URL

Determine the base URL from the configured region:

RegionBase URL
us (default)https://api.hedy.bot
euhttps://eu-api.hedy.bot

If no region is configured, default to us.

All endpoints below use {BASE_URL} as a placeholder. Replace it with the resolved URL.

Authentication

Every request requires:

Authorization: Bearer {HEDY_API_KEY}

The API key is injected via the HEDY_API_KEY environment variable. Never display, log, or include the API key in output shown to the user.

Endpoints

All endpoints return JSON. Response shapes vary by endpoint (documented individually below). Error responses always use:

{
  "success": false,
  "error": { "code": "error_code", "message": "Human-readable message" }
}

GET /me

Returns the authenticated user's profile. Response is a bare JSON object (no wrapper).

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/me" | jq

Response:

{
  "id": "uid_123",
  "email": "user@example.com",
  "name": "John Doe"
}

GET /sessions

List recent meeting sessions. Only cloud-synced sessions are returned. Response is wrapped in { success, data, pagination }.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/sessions?limit=20" | jq

Query parameters:

  • limit (int, 1-100, default 50): Number of sessions to return

Note: This endpoint returns the most recent limit sessions only. There is no cursor-based pagination. To retrieve more sessions, increase the limit value (max 100).

Response:

{
  "success": true,
  "data": [
    {
      "sessionId": "sess_123",
      "title": "Weekly Sync",
      "startTime": "2026-03-15T14:30:00Z",
      "duration": 45,
      "topic": { "id": "topic_1", "name": "Team Meetings" }
    }
  ],
  "pagination": { "hasMore": false, "next": null, "total": 42 }
}

GET /sessions/{sessionId}

Full session detail including transcript, AI outputs, highlights, and todos. Response is a bare JSON object (no wrapper).

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/sessions/{sessionId}" | jq

Response:

{
  "sessionId": "sess_123",
  "title": "Weekly Sync",
  "startTime": "2026-03-15T14:30:00Z",
  "endTime": "2026-03-15T15:15:00Z",
  "duration": 45,
  "transcript": "full meeting transcript text",
  "cleaned_transcript": "AI-cleaned version or null",
  "cleaned_at": "2026-03-15T16:00:00Z",
  "conversations": "Q&A structured format",
  "meeting_minutes": "formatted minutes",
  "recap": "brief summary",
  "highlights": [],
  "user_todos": [],
  "topic": { "id": "topic_1", "name": "Team Meetings" }
}

GET /sessions/{sessionId}/highlights

Highlights (key quotes) from a specific session.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/sessions/{sessionId}/highlights" | jq

GET /sessions/{sessionId}/todos

Todos from a specific session.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/sessions/{sessionId}/todos" | jq

GET /sessions/{sessionId}/todos/{todoId}

A specific todo item.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/sessions/{sessionId}/todos/{todoId}" | jq

GET /highlights

List all highlights across all sessions, sorted by timestamp (newest first). Response is wrapped in { success, data, pagination }.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/highlights?limit=20" | jq

Query parameters:

  • limit (int, 1-100, default 50)

Note: This endpoint returns the most recent limit highlights only. There is no cursor-based pagination. To retrieve more highlights, increase the limit value (max 100).

Response:

{
  "success": true,
  "data": [
    {
      "highlightId": "high_123",
      "sessionId": "sess_456",
      "timestamp": "2026-03-15T14:35:00Z",
      "title": "Key Decision"
    }
  ],
  "pagination": { "hasMore": false, "next": null, "total": 15 }
}

GET /highlights/{highlightId}

Full highlight detail. Response is a bare JSON object (no wrapper).

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/highlights/{highlightId}" | jq

Response:

{
  "highlightId": "high_123",
  "sessionId": "sess_456",
  "timestamp": "2026-03-15T14:35:00Z",
  "timeIndex": 300000,
  "title": "Key Decision on Mobile App",
  "rawQuote": "yeah I think we should prioritize the mobile app",
  "cleanedQuote": "We should prioritize the mobile app",
  "mainIdea": "Team agreed to prioritize mobile app development",
  "aiInsight": "Strategic prioritization of mobile platform"
}

GET /todos

All todos across all sessions. Returns a flat array (no pagination wrapper).

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/todos" | jq

Response (array of):

{
  "id": "uuid-1234",
  "text": "Follow up with John",
  "dueDate": "Tomorrow",
  "sessionId": "sess_123",
  "completed": false,
  "topic": { "id": "topic_1", "name": "Team Meetings" }
}

GET /topics

List all topics (conversation groupings), sorted by last update. Response is wrapped in { success, data }. No pagination.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/topics" | jq

Response data (array of):

{
  "id": "topic_123",
  "name": "Project Alpha",
  "description": "All about Project Alpha",
  "color": "#FF5733",
  "iconName": "lightbulb_outline",
  "topicContext": "Custom instructions for this topic",
  "topicContextUpdatedAt": "2026-03-15T16:00:00Z",
  "sessionCount": 12,
  "lastSessionDate": "2026-03-15T14:30:00Z",
  "dominantSessionType": "brainstorm",
  "overview": { "summary": "..." },
  "overviewUpdatedAt": "2026-03-15T16:00:00Z",
  "createdAt": "2026-02-01T10:00:00Z",
  "updatedAt": "2026-03-15T16:00:00Z"
}

Fields like overview, overviewUpdatedAt, topicContext, and dominantSessionType may be null or absent if not yet generated.

GET /topics/{topicId}

Full topic detail including overview and insights. Response is wrapped in { success, data }.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/topics/{topicId}" | jq

GET /topics/{topicId}/sessions

Sessions grouped under a topic. This is the only endpoint with cursor-based pagination.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/topics/{topicId}/sessions?limit=20" | jq

Query parameters:

  • limit (int, 1-100, default 50)
  • startAfter (string): Session ID cursor for next page (from data.pagination.nextCursor)

Response:

{
  "success": true,
  "data": {
    "sessions": [
      {
        "sessionId": "sess_123",
        "title": "Q1 Planning",
        "startTime": "2026-03-15T14:30:00Z",
        "duration": 45,
        "topicInfo": { "id": "topic_123", "name": "Project Alpha" }
      }
    ],
    "pagination": {
      "count": 20,
      "hasMore": true,
      "nextCursor": "sess_456"
    }
  }
}

To paginate: pass ?startAfter={data.pagination.nextCursor} until hasMore is false.

GET /contexts

List session contexts (pre-meeting preparation notes), sorted by most recently updated. Response is wrapped in { success, data }. No pagination.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/contexts" | jq

Response data (array of):

{
  "id": "ctx_abc123",
  "title": "Sales Call Context",
  "content": "Focus on customer pain points...",
  "isDefault": true,
  "createdAt": "2026-02-01T10:00:00Z",
  "updatedAt": "2026-03-15T16:00:00Z"
}

GET /contexts/{contextId}

A specific session context. Response is wrapped in { success, data }.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/contexts/{contextId}" | jq

POST /topics

Create a new topic. Response is wrapped in { success, data }.

curl -s -X POST -H "Authorization: Bearer $HEDY_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "Project Alpha", "description": "All about Project Alpha", "color": "#FF5733"}' \
  "{BASE_URL}/topics" | jq

Request body:

  • name (string, required): 1-100 chars
  • description (string, optional): 0-500 chars
  • color (string, optional): Hex format #RRGGBB
  • iconName (string, optional): Material icon name
  • topicContext (string, optional): Custom instructions, 0-20,000 chars

Returns HTTP 201 with the created topic object.

PATCH /topics/{topicId}

Update an existing topic. Response is wrapped in { success, data }.

curl -s -X PATCH -H "Authorization: Bearer $HEDY_API_KEY" -H "Content-Type: application/json" \
  -d '{"description": "Updated description"}' \
  "{BASE_URL}/topics/{topicId}" | jq

Request body (all fields optional):

  • name (string): 1-100 chars
  • description (string): 0-500 chars
  • color (string): Hex format #RRGGBB
  • iconName (string)
  • topicContext (string or null): Set to null to clear

Returns HTTP 200 with the updated topic object.

DELETE /topics/{topicId}

Delete a topic. Sessions under this topic are unlinked (topicId set to null) but not deleted.

curl -s -X DELETE -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/topics/{topicId}" | jq

Returns HTTP 200:

{
  "success": true,
  "message": "Topic deleted"
}

Warning: Deletion is not fully atomic for large topics. The backend unlinks up to 4,000 sessions in batches. If a topic has more than 4,000 sessions, the request returns 400 deletion_limit_exceeded after partially unlinking sessions, and the topic is left in a deletion_failed state. If this happens, inform the user that manual cleanup may be needed in the Hedy app. A 409 deletion_in_progress error means another delete is already running for this topic.

POST /contexts

Create a new session context. Response is wrapped in { success, data }.

curl -s -X POST -H "Authorization: Bearer $HEDY_API_KEY" -H "Content-Type: application/json" \
  -d '{"title": "Sales Call Context", "content": "Focus on customer pain points..."}' \
  "{BASE_URL}/contexts" | jq

Request body:

  • title (string, required): 1-200 chars
  • content (string, optional): 0-20,000 chars
  • isDefault (boolean, optional): If true, clears default from all other contexts

Returns HTTP 201 with the created context object.

Note: Free tier users are limited to 1 session context. Additional contexts require a Pro subscription.

PATCH /contexts/{contextId}

Update an existing session context. Response is wrapped in { success, data }.

curl -s -X PATCH -H "Authorization: Bearer $HEDY_API_KEY" -H "Content-Type: application/json" \
  -d '{"title": "Updated title", "isDefault": true}' \
  "{BASE_URL}/contexts/{contextId}" | jq

Request body (all fields optional):

  • title (string): 1-200 chars
  • content (string): 0-20,000 chars
  • isDefault (boolean): If true, clears default from all other contexts

Returns HTTP 200 with the updated context object.

DELETE /contexts/{contextId}

Delete a session context. If the deleted context was the default, the most recently updated remaining context is promoted to default.

curl -s -X DELETE -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/contexts/{contextId}" | jq

Returns HTTP 200:

{
  "success": true,
  "message": "Session context deleted"
}

GET /webhooks

List all configured webhooks. Response is wrapped in { success, data }.

curl -s -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/webhooks" | jq

Response data (array of):

{
  "id": "wh_123",
  "url": "https://api.example.com/hedy-webhook",
  "events": ["session.ended", "highlight.created"],
  "createdAt": "2026-02-01T10:00:00Z",
  "updatedAt": "2026-02-01T10:00:00Z"
}

POST /webhooks

Create a webhook. Rate limited to 5 per minute. Maximum 50 webhooks per user. Requires HTTPS URL in production.

curl -s -X POST -H "Authorization: Bearer $HEDY_API_KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://api.example.com/hedy-webhook", "events": ["session.ended", "highlight.created"]}' \
  "{BASE_URL}/webhooks" | jq

Request body:

  • url (string, required): Valid HTTPS URL
  • event (string) or events (string array): At least one required. Valid event types:

- session.created - New session started - session.ended - Session finished processing - session.exported - User manually exported session - highlight.created - New highlight generated - todo.exported - Todo marked for export

Returns HTTP 200 with the created webhook object (signing secret is stored but not returned).

DELETE /webhooks/{webhookId}

Delete a webhook.

curl -s -X DELETE -H "Authorization: Bearer $HEDY_API_KEY" "{BASE_URL}/webhooks/{webhookId}" | jq

Returns HTTP 200:

{
  "success": true,
  "data": {
    "message": "Webhook deleted successfully"
  }
}

Pagination

Most endpoints do NOT support cursor-based pagination. They return up to limit items (max 100) sorted by recency. The /todos, /topics, and /contexts endpoints return all items with no pagination at all.

The only endpoint with true cursor pagination is GET /topics/{topicId}/sessions, which uses startAfter (documented above).

For /sessions and /highlights, if the user needs more than 100 items, inform them that only the most recent 100 are available via the API.

Error Handling

HTTP StatusError CodeMeaningAction
400validation_errorRequest body failed validationShow the error message; check field constraints
400invalid_webhook_urlWebhook URL is invalidAsk user to provide a valid HTTPS URL
400missing_eventNeither event nor events providedAsk user which events to subscribe to
400invalid_eventSingle event type is invalidShow the list of valid events
400invalid_eventsOne or more event types invalidShow the list of valid events
400webhook_limit_exceededUser has 50 webhooks alreadySuggest deleting unused webhooks first
400deletion_limit_exceededTopic has too many sessions (>4,000) for full cleanupInform user; partial unlink occurred, manual cleanup needed
401missing_api_keyAuthorization header missingCheck that HEDY_API_KEY is set
401invalid_api_keyKey not found or wrong formatAsk user to verify their API key in Hedy app settings
403tier_limit_exceededFeature requires Hedy Pro subscriptionInform user this feature requires a Pro plan
404session_not_foundSession ID does not existInform user; suggest listing sessions first
404highlight_not_foundHighlight ID does not existInform user
404not_foundTopic or context does not existInform user; suggest listing topics or contexts first
404todo_not_foundTodo ID does not existInform user
404webhook_not_foundWebhook ID does not existInform user; suggest listing webhooks first
409deletion_in_progressTopic deletion already runningWait and retry later
429rate_limit_exceededToo many requests (200/min global, 5/min for webhooks)Wait 30 seconds before retrying. Do NOT retry immediately.
500internal_errorServer errorInform user and suggest trying again later

For user-actionable errors (401, 403, 404), show the error.message from the response. For 429 and 500 errors, show a friendly summary instead (e.g., "The server is busy, please try again in a moment") since raw server messages may contain technical details. Never retry more than once on 429 or 500 errors.

Safety Rules

  1. Confirm before writing. Before any POST, PATCH, or DELETE request, show the user exactly what will be created, changed, or deleted and wait for explicit confirmation.
  2. Confirm deletions twice. For DELETE requests, state the target (topic name, context title, webhook URL) and ask "Are you sure?" before proceeding.
  3. Extra caution for webhooks. Creating a webhook causes Hedy to send future meeting event data (session metadata, highlight titles, todo text) to an external URL. Before creating a webhook, explicitly confirm: (a) the exact destination host, (b) which events will be sent, and (c) warn the user that meeting-derived data will be sent outside Hedy to that URL.
  4. Never display, log, or include the API key in any output, message, file, or code block shown to the user.
  5. Never prompt the user to paste their API key in chat. Direct them to configure it in ~/.openclaw/openclaw.json.
  6. Respect rate limits. On 429 responses, wait before retrying. Do not loop.
  7. Present data clearly. Format session transcripts, highlights, and todos in a readable way. Use markdown tables or lists as appropriate.
  8. Handle missing data gracefully. Some fields (transcript, cleaned_transcript, recap, topic) may be null or empty. Do not treat this as an error.
  9. Protect user privacy. Meeting transcripts and notes contain sensitive content. Do not send this data to any external service, tool, or URL beyond the Hedy API itself.

Usage Examples

"Show me my recent meetings" -> GET /sessions with limit=10, display as a table with title, date, duration, and topic.

"What were the key takeaways from my last meeting?" -> GET /sessions with limit=1 to find the most recent session, then GET /sessions/{id} for full detail. Present the recap and highlights.

"Do I have any open todos?" -> GET /todos, filter where completed is false, present as a checklist.

"Show me everything about Project Alpha" -> GET /topics to find the topic by name, then GET /topics/{id}/sessions to list all sessions under it.

"What did we discuss last Tuesday?" -> GET /sessions, scan startTime fields for the matching date, then GET /sessions/{id} for that session's detail.

"Show my session contexts" -> GET /contexts, present as a list with title and whether it's the default.

"Create a topic called Client Calls with a blue color" -> Confirm with user, then POST /topics with name "Client Calls" and color "#4A90D9".

"Delete the Project Alpha topic" -> GET /topics to find the ID, confirm with user showing the topic name and session count, then DELETE /topics/{id}.

"Set up a webhook for new highlights" -> Confirm the URL with user, then POST /webhooks with events ["highlight.created"].

"Create a context for investor meetings" -> Confirm with user, then POST /contexts with title "Investor Meetings" and relevant content.

平台分布

OpenClaw

94.56%
按下载量换算2,046

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

接触敏感数据

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

安装前确认

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

继续浏览同类 Skills