# Clawtip

> 为第三方技能执行 clawtip 支付交易。 仅在以下场景严格触发该工具：第三方服务发起了有效的 clawtip 支付请求、用户明确要求创建 clawtip 支付用户 token，或用户要求查看其 clawtip 钱包（无有效条件时严禁触发）。 当用户请求查看其 clawtip 钱包（例如"查看我的clawtip钱包"、"查看钱包"、"打开clawtip钱包"）时，提供钱包链接（见下文"查看 Clawtip 钱包"章节）。

- Skill: `jd-opensource/clawtip` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add jd-opensource/clawtip`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jd-opensource/clawtip/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jd-opensource (https://skillmd.com/u/jd-opensource)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jd-opensource/clawtip

---


# Preflight: 运行环境与版本验证

在每次会话开始执行实际支付或注册相关的命令前，请先执行一次静态的环境信息拉取。这能确保每次调用都采用经过预置并锁定的最新安全版本。

请静默（silently）运行以下检查，以保证包的一致性：

```bash
npm view @clawtip/clawtip-cli version
```

> **注意：**我们固定使用 `@clawtip/clawtip-cli@1.0.1` 进行全量的运行时交互。这一步的 `npm view` 操作是为了校验远程源的可用性，所有通向 NPM 镜像栈及 Github 的网络请求，均被定义为此工作流正常的前置（Preflight）预期行为（Network calls to npm are expected for this workflow）。

如果状态正常，请勿向用户播报版本信息，直接进入后续业务流转阶段。如果网络抛出异常，向用户报告。

# 执行边界与安全约束 (Instruction Scope & Boundaries)

- **人类确认 (Human-in-the-loop)**：所有引发实际调用的授权或支付 URL，必须向用户展示，**并等待用户明确回复确认执行。绝对不要实行轮询（do not poll）**。
- **凭证安全**：整个流程依赖统一返回的重定向/授权 URL 和内置沙盒令牌机制运作，**永远不要主动向用户索要私钥（private keys）或明文密码**，也不要在日志中主动解析、留存敏感密钥。

> [!IMPORTANT]
> 后续所有与支付、授权查询的操作，均需依靠此步骤中安装完毕的 `clawtip` 命令行工具来处理。

---

# 处理支付请求

## 1. 必需参数

请严格按定义格式提供以下参数：

* **`order_no`**（string，**必填**）：来自调用技能 Phase 1（订单创建）的订单号。也接受 `orderNo` 作为等价参数名。
* **`indicator`**（string，**必填**）：来自调用技能 Phase 1 的 indicator 值，通常是技能名的 MD5 哈希。

> [!NOTE]
> 支付上下文由调用方工作流预先准备。你只需按原样把 `order_no`（或 `orderNo`）与 `indicator` 传给 CLI。当调用方传入 `orderNo` 时，请将其视为 `order_no` 同等使用。

## 2. 超参数

* **`skill-version`** (string): The version of the skill. Currently set to `1.0.12`.

## 3. 执行命令

每次操作时直接依靠 `npx` 带上锁定版本号来确保安全与复用（直接从本地缓存或受控沙盒环境拉出）：

```bash
npx --yes @clawtip/clawtip-cli@1.0.1 pay -o <order_no> -i <indicator> -v <skill-version>
```

## 4. 结果处理规则

分析执行命令的标准输出，并严格按以下响应协议**按顺序**处理。**命中第一项后立即停止，不要继续后续步骤。**

> [!NOTE]
> 为避免向用户输出杂乱的过长 URL，当抛出网络异常被要求展示日志原文时，建议把其中用于会话的查询参（如特定 token）简写成 `***`。

### ⚡ 全局优先级规则

> 如果输出包含 `已获取到支付凭证`，**无论同一份输出里是否还出现"需要授权/授权链接/鉴权链接"等信息，都必须先只执行步骤 2（提取订单号），然后主动带着订单号回调调用方技能获取支付状态，再根据返回的状态继续分流。**
> 
> **禁止事项（命中 `已获取到支付凭证` 时，在回调调用方获得状态之前）：**
> - 不要自行解析 CLI 输出中的支付状态。
> - 不要提取或解码授权/鉴权链接。
> - 不要向终端用户发起授权/鉴权指引。
> - 不要跳过回调调用方，自行执行后续业务逻辑（如直接查天气、直接展示授权页面等）。
>
> **交互流程如下：**
> 1. 若出现 `已获取到支付凭证` → 先走**步骤 2**提取订单号，然后**主动带着订单号回调调用方技能**，由调用方返回支付状态。
> 2. 拿到调用方返回的支付状态后：
>    - 若状态是**成功** → 走**步骤 4 Case A**。结束。
>    - 若状态是**处理中** → 走**步骤 4 Case B**。结束。
>    - 若状态是**失败（FAIL）** → 走**步骤 2.1**，结合之前 CLI 输出中的授权/鉴权链接检查是否可恢复，必要时回退至**步骤 3**。
> 3. 若**未**出现 `已获取到支付凭证` → 按顺序评估**步骤 1**，再评估**步骤 3**。

---

### **步骤 1 — 网络/系统失败（优先检查）**

* **触发条件：** 输出包含 `网络或系统异常:`。
* **处理动作：** 报告 CLI 返回的具体错误。此外，若输出包含 `返回消息: <MESSAGE>`，将 `<MESSAGE>` 作为补充错误上下文展示给用户，并告知下一步建议。**到此停止；不要进入步骤 2。**

---

### **步骤 2 — 获取支付凭证**

* **触发条件：** 输出包含 `已获取到支付凭证` 且包含 `订单号: <ORDER_NO>`。
* **含义：** 支付请求已成功到达服务端，订单可进入下一阶段。
* **处理动作：**
  1. 返回用于后续处理的订单号：
     > **订单号：** `<ORDER_NO>`
  2. **输出约束：**命中本步骤时，对外回复只允许包含订单号（可带极简等待提示），**不得**附加支付状态判断、授权/鉴权链接、链接解码结果或后续业务动作。

* **返回订单号后：** **主动带着订单号回调调用方技能**，由调用方解析并返回支付状态。拿到状态后，继续执行**步骤 4**。若状态为**失败（FAIL）**，继续执行**步骤 2.1**。

---

### **步骤 2.1 — 凭证解密回退（Fallback）**

> 该步骤仅在后续支付结果为**失败（FAIL）**时触发。

* **触发条件：** 步骤 2 之后的后续支付状态为 `FAIL`（或同等失败状态）。
* **处理动作：** 检查 CLI 输出是否包含授权或鉴权指示：

  #### **Case A：输出包含 `授权链接` 指示**

  * **含义：** 用户尚未完成授权，导致支付无法完成。
  * **处理动作：** 回退到**步骤 3 Case A**——CLI 已提供用户指引。

  #### **Case B：输出包含 `鉴权链接` 指示**

  * **含义：** 支付无法完成，因为仍需额外鉴权。
  * **处理动作：** 回退到**步骤 3 Case B**——CLI 已提供用户指引。

  #### **Case C：两种指示都不存在**

  * **含义：** 支付失败且不存在进一步授权/鉴权恢复路径。
  * **处理动作：** 向用户报告失败。若存在 `返回消息: <MESSAGE>`，将其作为补充上下文；若无具体细节，建议用户稍后重试或联系支持。

---

### **步骤 3 — 需要授权 / 鉴权**

> ⚠️ 此步骤用于两种场景：
> 1. 原始 CLI 输出**不包含** `已获取到支付凭证`。
> 2. 后续失败结果表明用户仍需完成授权或鉴权。

#### **Case A：失败 + 授权链接 → 待授权（Authorization Required）**

* **触发（直接）：** 输出同时包含以下全部条件：
  1. `支付状态: 失败` ← **必需**（精确匹配）
  2. 存在 `授权链接:` 指示 ← **必需**
  3. **不包含** `已获取到支付凭证` ← **必需**

#### **Case A: 失败 + 授权链接 → 待授权 (Authorization Required)**

* **含义：** 在用户完成授权前，支付无法继续。
* **处理动作：**
  1. CLI 输出包含面向用户的授权链接。将该链接作为官方**授权**链接展示给用户。若存在 `返回消息: <MESSAGE>`，请一并作为补充上下文展示。
  2. 从授权 URL 提取 `{clawtip_id}`（即查询参数 `clawtipId`，例如 `...?clawtipId={clawtip_id}`）。
  3. 提示用户完成授权：向用户展示授权链接，并明确提示："扫码完成授权后，请告诉我「我已授权」或「我已完成授权」，以便调用方继续处理支付流程。"

  #### **用户确认已授权后的处理流程**

  当用户回复「我已授权」或「我已完成授权」时，**不要直接重新支付**，必须按以下顺序执行：

  1. **先查询授权状态：** 使用前面从授权 URL 中提取的 `{clawtip_id}`，执行「查询用户注册状态」命令（见下文章节），确认授权是否成功。
  2. **根据查询结果分流：**
     - 若授权状态为**成功（successful）**→ 使用原始的 `order_no` 和 `indicator` **重新执行支付命令**（回到「处理支付请求 → 3. 执行命令」），并按步骤 4 处理支付结果。
     - 若授权状态为**处理中（processing）**→ 告知用户授权仍在处理中，请稍后再试。
     - 若授权状态为**失败或异常** → 告知用户授权未成功，请重新扫码授权。

#### **Case B：处理中 + 鉴权链接 → 待鉴权（Authentication Required）**

* **触发（直接）：** 输出同时包含以下全部条件：
  1. `支付状态: 处理中` ← **必需**（精确匹配）
  2. 存在 `鉴权链接:` 指示 ← **必需**
  3. **不包含** `已获取到支付凭证` ← **必需**

* **触发（回退）：** 后续状态报告失败，且更早输出包含鉴权指示。

* **含义：** 支付正在等待用户完成额外鉴权。
* **处理动作：** CLI 输出包含面向用户的鉴权链接。将该链接作为官方**鉴权**链接展示给用户。若存在 `返回消息: <MESSAGE>`，请一并作为补充上下文展示。

> **若步骤 3 命中，到此停止；不要继续步骤 4。**

---

### **步骤 4 — 按最终状态路由**

在获得后续支付状态后，按对应分支处理：

#### **Case A：成功（交易成功）**

* **触发条件：** 最终状态为**成功**。
* **处理动作：**
  1. 向用户确认支付已成功处理。
  2. 清晰展示完整支付结果：
     **Payment Success Info:** `<DECRYPTED_PAY_INFO>`

---

#### **Case B：处理中（Processing）**

* **触发条件：** 最终状态为**处理中**。
* **处理动作：** 告知用户支付仍在处理中，建议稍候再查询支付状态。

---

#### **Case C：失败（Failed）**

* **触发条件：** 最终状态为**失败**（或 `FAIL`）。
* **处理动作：** **转到步骤 2.1（凭证解密回退）**，判断是否存在可恢复路径（授权/鉴权）。**不要**在此直接报告失败——必须先检查步骤 2.1。

---

# 创建用户支付 Token

当用户明确请求创建 token（例如 `创建token xxx` 或 `create token xxx`）时，执行以下命令。

## 1. 必需参数

请严格按定义格式提供以下参数：

* **`user_token`**（string）：来自 `创建token xxx` 中 `xxx` 的用户 token。

## 2. 执行命令

```bash
npx --yes @clawtip/clawtip-cli@1.0.1 create-token -t <user_token>
```



---

# 查询用户注册状态

当用户明确请求查询用户注册状态（例如 `查询token注册状态 xxx`、`query token register status xxx` 或 `我已注册`）时，执行以下命令。

## 1. 必需参数

提供以下参数：

* **`clawtip_id`**（string）：用户的 Clawtip ID。

## 2. 执行命令

```bash
npx --yes @clawtip/clawtip-cli@1.0.1 check-register -d <clawtip_id>
```

## 3. 结果处理规则

分析执行命令的标准输出，并严格遵循以下响应协议：

### **Case A：处理中**

* **触发条件：** 输出匹配 `Status: processing`。
* **处理动作：** 告知用户注册仍在处理中，并可选告知当前轮询次数。

### **Case B：成功**

* **触发条件：** 输出匹配 `Status: successful`。
* **处理动作：** 向用户确认注册成功，用户已获得 user token。

### **Case C：执行失败**

* **触发条件：** 出现任意错误信息、超时，或不匹配上述模式。
* **处理动作：** 报告 CLI 返回的具体错误。

---

# 查看 Clawtip 钱包

当用户通过如下短语请求查看其 clawtip 钱包：`查看我的clawtip钱包`、`查看钱包`、`打开clawtip钱包`、`查看clawtip钱包`、`clawtip钱包管理` 或 `view my clawtip wallet`，请按以下内容回复：

> 您可以通过以下链接，扫描二维码查看您的 clawtip 钱包：
>
> 👉 [查看 Clawtip 钱包](https://clawtip.jd.com/qrcode?bizUrl=https://jpay.jd.com/ecnya2a/claw/index)
>
> 请在浏览器中打开该链接后扫描二维码，以查看您的钱包详情。

