mcpField
C
Cabal Hunter

Cabal Hunter

远程服务
api.cabal-hunter.com金融数据21 周前更新

关于 Cabal Hunter

Cabal Hunter 扫描 Solana 代币,检查持有人集中度、捆绑买入、协同卖出和部署者历史。它面向需要在兑换前核查退出流动性风险的交易者和 AI Agent,并提供可核验的证据。

主要功能

  1. 01退出流动性风险判定
  2. 02检测同区块捆绑买入
  3. 03检查持有人集中度与资金来源
  4. 04标记协同卖出
  5. 05审查部署者发行历史
  6. 06提供交易证据引用

适用场景

  1. 01购买代币前检查 Solana 地址
  2. 02在 Agent 签署兑换前加入风险门槛
  3. 03查看钱包集群与部署者历史

MCP 相关

托管 MCP 端点和本地 stdio 服务提供 `check_cabal_risk`,接收 Solana mint 地址并返回 Cabal-Hunter API 的代币安全分析。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://api.cabal-hunter.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

1
参数类型必填说明
mintAddressstring是要审计的代币 Solana mint 地址(base58,32–44 个字符)
pairCreatedAtnumber否可选:DexScreener pairCreatedAt 时间戳(毫秒)。提供后可加快分析。

详细介绍

Solana 安全狙击手 — MCP 模板

MCP server Solana Live demo Free tier Install MCP in VS Code Install MCP in Cursor ElizaOS plugin License: MIT

🌐 提供 9 种语言版本: English · Español · Português · Français · Deutsch · Nederlands · 中文 · 日本語 · 한국어

Cabal-Hunter — Solana 链上团伙与 rug 风险实时分析:交互式 3D 持有者图谱、连续发币者的部署者历史,以及退出流动性风险评估

防止你的 AI 交易 Agent 被协同作案的钱包团伙 rug。 可直接用于 Claude Code、Cursor 和 ElizaOS 的模板。

▶ 立即试用:查看任意 Solana 代币的实时 3D 持有者图谱 → — 无需注册。

Cabal-Hunter 是一款免费的 Solana 链上代币安全扫描器和 rug 检查工具。 它可检测任意 Solana mint(pump.fun、PumpSwap、Raydium、Orca、Meteora)上的协同钱包团伙、同区块捆绑买入、连续发币者部署者和同区块协同卖出,并回答你在冲进去买入前最关心的问题:你会成为退出流动性吗? 可通过 MCP(Claude、Cursor、ElizaOS)、REST API 或免费的交互式 3D 持有者图谱使用。


问题所在

你的自主交易 Agent 正在读取 rug.check 评分、流动性锁定信息和合约审计结果。

这些都无法发现钱包团伙。

少数几个钱包在代币发行时抄底,图表看起来一切正常——合约没问题、LP 已销毁、各项指标都显示绿色——然后他们就把代币卖给随后买入的人。你成了退出流动性。

此模板将 Cabal-Hunter 集成为交易前安全检查,让你的 Agent 在签署兑换交易前,查看当前持有者以及已准备好卖出的地址。

关于我们声称与不声称的内容。 本 README 过去开篇写道:“15 个新钱包由同一个主钱包注资,累计持有 25-40% 的供应量。”我们尝试寻找这种模式,但没有找到。我们追踪了 323 次处于 bonding curve 阶段的 pump.fun 代币发行,发现没有任何协同注资集群,同时也揭示了原因:一次发行的成功买家中位数约为 5 个,因为在一个具有代表性的代币中,1,266 笔曲线交易里有 1,260 笔失败。抢先买入新币是一场狙击手之间的竞赛,而非悄然形成的团伙。下方列出的检测层,才是我们确实有证据支持的内容——持有者集中度、同区块捆绑交易、协同卖出和部署者历史。发行前注资追踪工具已撤下;完整说明见此处。


它回答的唯一问题:你会成为接盘流动性吗?

经典的 pump.fun 接盘流动性套路:在大众进场前就已布局的钱包买入新币底部,然后抛售给随后涌入的散户(和机器人)。Cabal-Hunter 的核心输出是一个 接盘流动性风险判定——risk_level,取值为 LOW_SIGNAL | ELEVATED | HIGH,它综合了以下所有信号,给出你签署兑换前唯一重要的问题的答案:内部人士是否已做好准备要向你抛售?

Cabal-Hunter 的功能

Token mint address
      ↓
0. EXIT-LIQUIDITY RISK — the headline verdict. Synthesises the layers
   below (bundle, concentration, shared funder, coordinated selling,
   serial-launcher dev) into risk_level: LOW_SIGNAL | ELEVATED | HIGH.
   Are insiders set up to dump on a buyer? The one field an agent needs.
      ↓
1. HOLDER FUNDING TRACE (ONE HOP) — the CURRENT top holders walked back
   one funding hop: were they seeded by the same wallet? ONE hop, not a
   lineage — we do not claim to follow money through a chain of
   wallets. Only System-owned accounts count as
   a funder, so pools, vaults and routers can never be mistaken for a
   person (that mistake is exactly what got our pre-launch tracer
   withdrawn). Every cluster carries evidence_txs[] — the actual
   funding transactions on Solscan. This layer is genuinely rare to
   fire; treat a hit as significant and its absence as no evidence
   either way.
      ↓
2. SAME-BLOCK BUNDLE DETECTION — holders whose token accounts were
   created in the EXACT same slot - a Jito bundle is one way to do that, not
   the only one. Catches
   stealth launches that route funding through intermediaries to
   evade layer 1. Returned as `time_sync: true`.
      ↓
3. COORDINATED SELLING DETECTION — ≥2 holders that SOLD a meaningful
   chunk (≥25% of their bag each) in the EXACT same block.
   `coordinated_exit: true`, with sold_pct = % of supply sold and the
   signatures in evidence_txs[]. Same-slot + meaningful-size + distinct
   wallets = near-zero false positives. It reads the CURRENT holder set
   at scan time, so a bundle that already sold and left the top holders
   is not visible here — that is what the launch-block check is for.
   For a token you already hold, POST /api/watch pushes you a webhook
   the moment a dump or liquidity drain STARTS.
      ↓
4. DEV TRACK RECORD — the creator wallet is resolved on-chain (bonding
   curve pre-graduation, pump-amm pool after — works on any age token),
   and their launch history is pulled WITH THE PEAK MARKET CAP each
   past token hit. `sampled` says how many of those launches we actually
   walked — a very prolific wallet is sampled, not exhausted, so read
   `tokens_launched` as a floor, never as a complete history.
   Launch detection is venue-agnostic: pump.fun, Raydium,
   Orca, Meteora and PumpSwap. A launch is only counted where the
   transaction actually CREATED the mint, so minting more supply of a
   token that already exists is never miscounted as a launch.
   A dead-count alone hides a pump-and-dump: a dev whose
   tokens all died at $4k is a nobody, but one who ran a token to $728k
   then dumped it to dust has done it to holders before. Reputation:
   FIRST_LAUNCH | PROVEN | MIXED | DEAD_ON_ARRIVAL | SERIAL_RUGGER |
   UNKNOWN, with per-launch peak → now (paid tier returns the full
   launches[] array). UNKNOWN means the history could not be
   established — never read it as a clean record.
      ↓
5. CEX-NOISE FILTER — holders funded from a shared exchange or
   high-volume infra wallet are NOT a cabal. They're excluded from the
   score and surfaced transparently in filtered_clusters[], so you never
   get a false positive from people who just withdrew from Binance.
      ↓
6. HONEYPOT CHECK (Solana-native) — one RPC read of the mint account:
   is the FREEZE authority live (issuer can freeze your tokens — the
   sell-block lever)? is the MINT authority live (supply can be
   inflated)? any Token-2022 traps (transfer fees up to 100%, transfer
   hooks that block sells, permanent-delegate clawback)? On Solana a
   "honeypot" is built from these — tokens have no per-token contract
   code to audit. Returns `honeypot_risk: LOW | HIGH` +
   `freeze_authority_revoked` / `mint_authority_revoked` /
   `token2022_risks[]`.
      ↓
Returns: Cabal Score (0-100) + cluster map + deployer verdict
         + honeypot verdict + on-chain receipts + hard verdict

部署者层是庄家无法规避的:钱包会轮换,部署者会留下记录。 响应中的 "deployer": {"reputation": "SERIAL_RUGGER", "tokens_launched": 22, "best_peak_usd": 728432, "pump_and_dumps": 2} 会展示开发者在第一根 K 线出现前的完整历史记录——包括这位“销声匿迹”的开发者是否曾悄悄将代币炒到六位数,再抛售给持有者。(坦诚说明:多数高产的 pump.fun 创建者,代币归零率都很高,因此此信号权重有限——它会标记代币以供审核,但不会单独导致 HIGH 判定。)

FIRST_LAUNCH 和 UNKNOWN 不是同一个答案。 deployer.verdict 为 FIRST_LAUNCH 表示我们检查了该创建者的历史记录,没有发现更早发行的代币。 UNKNOWN 表示完全无法确认其历史记录——这是缺乏证据,而非记录清白,Agent 不得将其视为清白。无法解析部署者时,扫描结果会明确说明,而不会自信地保持沉默。

凭据,而非魔法。 每个钱包集群都包含 evidence_txs[]——该集群背后的原始签名,可在 Solscan 上核验;对于已解析的钱包,持有者信息中还会包含 funding_tx。持有者集中度、部署者历史记录和蜜罐检查均从链上状态读取,因此它们本身不会对应任何交易:即使完全没有集群,代币也可能被判定为 HIGH。请核验实际信息,不要盲目相信评分。

响应时间低于 100 毫秒,适用于过去 8 小时内已追踪过的 Mint——computed_at(Unix 秒)会准确标明追踪运行时间。其他 Mint 会执行实时链上追踪,需要 15–20 秒,因此请将超时时间设为 30 秒。

免费套餐:无需账户即可每月扫描 5 次,或使用免费密钥(一个电子邮箱)每月扫描 250 次。 超出后每次扫描收费 $0.01。可使用银行卡、Solana 上的 USDC 或 x402 支付——无论通过哪种方式,价格都相同。$9/月可购买每月 2,500 次扫描,$99/月可购买不限次数的合理使用套餐(每月 50,000 次);银行卡套餐会自动续订,也可随时在 cabal-hunter.com/billing 取消。


快速开始

1. Claude Code / Claude Desktop

将以下内容添加到 MCP 配置中(~/.claude/mcp.json 或项目 .mcp.json):

{
  "mcpServers": {
    "cabal-hunter": {
      "url": "https://api.cabal-hunter.com/mcp"
    }
  }
}

就这样。现在,当你要求 Claude 分析 Solana 代币时,它会自动调用 check_cabal_risk。

提示词示例:

“买入这个代币前,检查是否存在协同操作的钱包:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v”

Claude 会调用该工具,从你连接的钱包支付 $0.01 USDC,并返回完整分析结果。


2. Cursor

将以下内容添加到项目根目录中的 .cursor/mcp.json:

{
  "mcpServers": {
    "cabal-hunter": {
      "url": "https://api.cabal-hunter.com/mcp"
    }
  }
}

3. ElizaOS(自动使用 x402 支付)

如果你在 ElizaOS 中使用 @hugen/plugin-x402-solana,支付会自动处理。将以下内容添加到 Agent 配置中:

{
  "plugins": ["@hugen/plugin-x402-solana"],
  "mcpServers": {
    "cabal-hunter": {
      "url": "https://api.cabal-hunter.com/mcp"
    }
  }
}

你的 Agent 会在任何兑换前调用 check_cabal_risk(mintAddress);如果 cabalScore >= 35 或 isControlled === true,则会中止操作。


4. 直接 REST API

适用于无头脚本、自定义机器人或任何语言。**每月前 5 次调用免费——无需密钥,无需注册。**申请免费密钥(每个邮箱一个)即可将额度提升至每月 250 次。只需调用:

curl "https://api.cabal-hunter.com/api/scan-cabal?mintAddress=YOUR_MINT_ADDRESS"

你会立即获得完整分析结果,其中包含 free_queries_remaining,随时了解剩余额度。机器可读规范:/openapi.json。

免费额度用完后,每次调用需支付 $0.01 USDC,通过 x402 完成——你的 Agent 直接付款,无需设置账单:

步骤 1 — 请求分析(获取付款说明):

curl -X POST https://api.cabal-hunter.com/api/scan-cabal \
  -H "Content-Type: application/json" \
  -d '{"mintAddress": "YOUR_MINT_ADDRESS"}'

响应(HTTP 402):

{
  "error": "payment_required",
  "payment": {
    "recipient": "ATYjZ1kWoHWhj74umGJ8wFqUeW1yeSGBbLi1UQpahPxt",
    "amount_usdc": 0.01,
    "memo_required": "ch-xxxx-xxxx-xxxx",
    "instructions": "Send 0.01 USDC with this memo, then resubmit with X-Payment-Signature header"
  }
}

步骤 2 — 付款并重新提交:

curl -X POST https://api.cabal-hunter.com/api/scan-cabal \
  -H "Content-Type: application/json" \
  -H "X-Payment-Signature: YOUR_TX_SIGNATURE" \
  -d '{"mintAddress": "YOUR_MINT_ADDRESS"}'

响应(HTTP 200):

{
  "mint": "YOUR_MINT",
  "token_name": "EXAMPLE",
  "risk": "HIGH",
  "cabal_score": 72.4,
  "is_controlled": true,
  "time_sync": true,
  "verdict": "AVOID — 4 wallets bought in the EXACT same block (bundled launch), controlling 34.1% of supply. DEPLOYER ALERT: this creator has launched 14 tokens, 13 of 13 checked are dead (100%).",
  "coordinated_clusters": [
    {
      "type": "funding",
      "master_full": "FvbEKF...9RUg",
      "master_short": "FvbEKF…9RUg",
      "wallet_count": 4,
      "combined_pct": 34.1,
      "risk": "HIGH",
      "evidence_txs": ["4Y8auc5G...", "2XQx9LFv...", "AAbJ7rej..."]
    }
  ],
  "filtered_clusters": [
    {
      "funder_label": "high-volume wallet",
      "master_short": "43ViqZ…Z6iy",
      "wallet_count": 2,
      "combined_pct": 4.4
    }
  ],
  "deployer": {
    "creator": "5TbRN6...full address...",
    "creator_short": "5TbRN6…2TGC",
    "tokens_launched": 14,
    "dead": 13,
    "sampled": 13,
    "dead_pct": 100.0,
    "verdict": "SERIAL_LAUNCHER"
  },
  "holders": [
    { "rank": 1, "address": "...", "pct": 12.4, "cluster_id": 0, "funding_tx": "4Y8auc5G..." }
  ],
  "wallets_checked": 12,
  "analysis_time_ms": 487,
  "source": "real_time"
}
5. 在本地运行 MCP 服务(Docker / Node)

最快方式——无需克隆: npx cabal-hunter-mcp——同款 stdio 服务,已发布到 npm(cabal-hunter-mcp · npm)。也可以从此仓库运行:

与其调用托管的 /mcp 端点,你是否更愿意自己运行连接器?此仓库附带一个精简的 stdio MCP 服务,提供 check_cabal_risk(mintAddress),并代理到 Cabal-Hunter API(免费额度 无需密钥即可使用;付费扫描在调用时通过 x402 付款):

# Node 18+
npm install
node server/index.mjs

# or Docker
docker build -t cabal-hunter-mcp .
docker run -i cabal-hunter-mcp

然后将任意 MCP 客户端指向本地命令:

{
  "mcpServers": {
    "cabal-hunter": {
      "command": "node",
      "args": ["server/index.mjs"]
    }
  }
}

集成到你的交易逻辑中

import requests

def is_safe_to_buy(mint_address: str, payment_sig: str) -> bool:
    """Returns True if token passes cabal check."""
    resp = requests.post(
        "https://api.cabal-hunter.com/api/scan-cabal",
        json={"mintAddress": mint_address},
        headers={"X-Payment-Signature": payment_sig}
    )
    if resp.status_code != 200:
        return False  # fail-safe: don't buy on error
    data = resp.json()
    # Block on: coordinated control, high score, bundled launch,
    # or a deployer with a history of dead tokens
    deployer_verdict = (data.get("deployer") or {}).get("verdict", "UNKNOWN")
    return (
        not data.get("is_controlled")
        and data.get("cabal_score", 100) < 35
        and not data.get("time_sync")
        and deployer_verdict not in ("SERIAL_RUGGER", "SERIAL_LAUNCHER", "POOR_TRACK_RECORD")
    )

# In your bot's buy logic:
if is_safe_to_buy(token_mint, my_payment_sig):
    execute_swap(token_mint, sol_amount)
else:
    print(f"Cabal detected — skipping {token_mint}")

交互式 3D 持有者地图(免费)

准确查看分析结果。每位真实持有者都以多面晶体呈现,其大小由持有的供应量份额决定;同一集群中的钱包由光束连接,流动性池和锁定供应量则单独置于线框金库中,因为它们无法出售。拖动旋转,悬停查看钱包,点击跳转至 Solscan:

https://api.cabal-hunter.com/map?mint=ANY_SOLANA_MINT

免费查看,支持 9 种语言。发现 rug 时分享此 URL。每个晶体都可点击,并链接到 Solscan 以便深入调查。


随处使用 Cabal-Hunter

无论你的技术栈在哪里,都能使用同一检测引擎:

  • npx cabal-hunter-mcp — 独立 MCP 服务,适用于 Claude · Cursor · VS Code · 任意 MCP 客户端:cabal-hunter-mcp · npm
  • ElizaOS 插件: npm i elizaos-plugin-cabal-hunter — plugin-cabal-hunter · npm
  • REST API + OpenAPI: api.cabal-hunter.com · /openapi.json
  • Telegram: @TheCabalHunter_Bot — 粘贴 mint 地址,即可通过卡片查看扫描结果(包括上线后最初几秒内买入的钱包,以及其中有多少个也出现在我们记录的 50 多个其他上线项目中);监控你持有的代币,以便收到砸盘提醒;关注某位开发者,以便在其再次上线项目时获知;使用 /wallet <address> 获取钱包档案。免费提醒频道: @CabalHunterAlerts。
  • Chrome 扩展程序: Chrome 网上应用店中的 Cabal Hunter — 在交易终端旁打开 Chrome 侧边栏,读取你正在查看的代币或钱包,并为每条发现提供交易链接。
  • 钱包档案: cabal-hunter.com/wallet — 粘贴任意钱包(免费密钥每月可查询 10 次):查看它在上线后最初几秒内买入的项目、与哪些钱包有资金往来,以及资金来源。另附每日档案,记录一个我们实时监控的项目。
  • 专业调查($99/月): cabal-hunter.com/investigate — 查看有哪些钱包总是在某个指定钱包买入前买入,并追溯其资金来源,直至找到有标签的交易所。

定价

每月前 5 次扫描免费——无需注册,也无需 API 密钥。免费密钥(一个电子邮箱)可将次数提高到每月 250 次。

之后,根据你的机器人工作量选择合适的方案:

方案价格权益
Trader$9 USDC / 月每月 2,500 次扫描
Pro ⭐$99 USDC / 月无限次——合理使用上限:每月 50,000 次,超过任何机器人所需
按量付费$0.01 USDC / 次扫描只为实际使用量付费——预付或按次付费,无需承诺

预付密钥:发送一次 USDC → 使用交易签名调用 POST /api/buy-key → 每次扫描都在请求头中使用 X-API-Key。或者通过 x402 按次付费(X-Payment-Signature 请求头)。无需信用卡、无需账户,也没有使用限制。

它能收回成本吗? 用你自己的数字计算,而不是听我们的:Trader 方案每月 $9,所以只要它第一次帮你避开一个价值超过 $9、最终归零的仓位,就回本了。这种情况每月发生一次还是每周发生一次,取决于你的交易品种和频率——我们不会替你编造一个平均值。

付款直接通过 Solana 完成——无需信用卡、无需账户,也没有订阅限制。


实时仪表板徽章

在你自己的机器人仪表板中添加实时安全徽章——只需两行 HTML,每个代币都会在交易时显示其判定结果:

<div class="cabal-hunter-badge" data-mint="YOUR_TOKEN_MINT"></div>
<script src="https://api.cabal-hunter.com/widget.js" defer></script>

它会显示 0–100 的评分、通俗易懂的判定结果,以及当前标记(捆绑发行、协同抛售、巨鲸集中、连续发币的部署者、蜜罐)。添加 data-refresh="120" 即可在交易时进行实时重新扫描,超过免费扫描次数后再添加 data-api-key="..."。可在任何地方使用——React、纯 HTML 或任何网站。


API 参考

端点说明身份验证
POST /api/scan-cabal完整的团伙分析$0.01 USDC
GET /api/scan-cabal?mintAddress=GET 版本$0.01 USDC
GET /map?mint=交互式 3D 持有者地图免费
GET /api/cex-funding?mint=按交易所划分的资金来源明细(哪些 CEX 为持有者提供资金,各占多少比例)免费
GET /api/trade-analysis?mint=群组盈亏(团队/狙击手/内部人员)+ 洗售评分 + 出口流动性价格影响,一次调用即可获取免费
POST /api/watch为某个 mint 注册紧急抛售 webhook(抛售/跑路开始时推送)免费
GET /api/info定价、端点免费
GET /health运行状态检查免费
POST /mcpMCP 工具端点每次调用 $0.01 USDC
紧急抛售 webhook(自动退出)

无需轮询,让你的机器人订阅它持有的代币——一旦协同抛售或流动性抽离开始,我们便立即推送:

curl -X POST https://api.cabal-hunter.com/api/watch \
  -H "Content-Type: application/json" \
  -d '{"mint":"YOUR_MINT","webhook_url":"https://your-bot.com/dump-alert"}'

你的端点会收到:

{ "event":"dump_detected", "mint":"...", "reason":"price −34% since last check",
  "coordinated": true, "price_usd": 0.0001, "liquidity_usd": 4200,
  "action":"consider_immediate_exit", "ts": 1781370000 }

基础设施

  • RPC:Helius(法兰克福)
  • 托管:AWS EC2 法兰克福——为欧洲及全球用户提供低延迟
  • 分析:直接读取链上数据,从不抓取其他扫描器的数据。已完成的追踪会缓存 8 小时,computed_at 始终标明运行时间;fresh=1 会强制重新分析
  • 运行时间:目标为 99.9%——持续监控,并通过 systemd 自动重启

常见问题

什么是 Solana cabal? 一群钱包——通常由同一来源注资,并在同一个区块中买入——会在散户入场前悄悄积累大量代币,然后在上线后同时抛售给所有买入的人。

如何检查 Solana 代币是否是 rug? 使用 Cabal-Hunter(MCP、REST API 或免费的 3D 持有者地图)扫描 mint。它会沿着持有者的资金来源向上追溯一跳,查找共同来源;检测同区块捆绑买入;标记连续发币的部署者和同区块协同卖出;并给出退出流动性风险判定——risk_level:LOW_SIGNAL、ELEVATED 或 HIGH。

它是免费的吗? 是的——每月可扫描 5 次,无需注册或 API 密钥;使用免费密钥(一个电子邮件地址)可每月扫描 250 次。超出后,每次扫描收费 $0.01 USDC,并直接在 Solana 上支付。

有没有无需编写代码的使用方式? 有——Telegram 上的 @TheCabalHunter_Bot。粘贴一个 mint,即可收到卡片形式的同款扫描结果;还可以让它监控你持有的代币,并在抛售开始时给你发送消息。经过评分的代币会发布到 @CabalHunterAlerts。

AI 交易 Agent 可以使用它吗? 可以——这正是它的设计目的。MCP 服务(api.cabal-hunter.com/mcp)可让 Claude、Cursor 和 ElizaOS Agent 在任何交换前自动调用 check_cabal_risk(mintAddress),而 REST API 则支持其他任何语言。


许可证

MIT——分叉、基于它构建或集成即可。如果你用它构建了什么,欢迎分享。


由 Cabal Hunter 构建 · 由 Helius 提供支持 · 联系方式:api.cabal-hunter.com/api/info

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。