---
name: kiwi-buyer
description: Kiwi Sourcing & Negotiation Kit（DeepSeek Harness 版）—— 采购/购买/购物一般商品（非餐饮、非外卖、非生鲜）时使用：用户想"买 X"（如买保温杯、充电器、办公用品、工业品，含预算/数量/交期要求），找商家/供应商、询价、比价、还价、问交期/MOQ。经 dsh 的 mcp__kiwi__* 9 个工具完成跨商家发现 → 询价 → 磋商 → 非绑定协议 → handoff。餐饮/食品/外卖/生鲜请用其他技能。
version: 0.1.0
author: harrylabsj
license: Apache-2.0
metadata:
  dsh:
    tags: [commerce, sourcing, procurement, rfq, negotiation, mcp, kiwi, 购买, 采购, 购物, buy, shopping, 找商家]
    category: commerce
    whenToUse: 用户表达采购意图（买/找供应商/询价/比价/还价/交期/MOQ）时
---

# Kiwi Buyer（Sourcing & Negotiation Kit）· DeepSeek Harness 版

Kiwi 是"任何 AI Agent 都可调用的开放询价、采购与商业磋商层"。本 skill 教 DSH
何时以及如何使用 `mcp__kiwi__*` 工具。**Host Agent（DSH）owns conversation；
Kiwi owns cross-merchant sourcing and commercial negotiation。**

## 职责边界

- **buyer 在本地、宿主无关**：`kiwi mcp serve` 跑在 DSH 侧，只经
  `catalog.kiwi.harrylabsj.com` 发现商家，然后 **A2A 直连 merchant** 磋商。
- **merchant + shopping-cli 在服务器**：只有 kiwi merchant 可直接调用 shopping-cli
  （真实商品/库存）；buyer 不直连 shopping-cli。

**不要做的**：
- **不要检查/等待任何本地 marketplace / shopping-cli / 127.0.0.1 服务**。
- **不要"先加载工具 schema / 先探测环境"之类的额外步骤** —— 直接调
  `mcp__kiwi__kiwi_search`。

## 9 个工具（DSH 前缀 `mcp__kiwi__`）

| DSH 工具名 | 作用 | 写/读 |
|---|---|---|
| `mcp__kiwi__kiwi_search` | 发现候选供应商 | 读 |
| `mcp__kiwi__kiwi_request_quotes` | 发起询价，返回稳定 `task_id` | 写（幂等） |
| `mcp__kiwi__kiwi_get_task` | 任务状态 / 报价 / 待审批 / 过期 | 读 |
| `mcp__kiwi__kiwi_negotiate` | CounterOffer / Clarification | 写 |
| `mcp__kiwi__kiwi_accept_agreement` | 接受非绑定协议（ASK 时返回 approval_required） | 写 |
| `mcp__kiwi__kiwi_get_agreement` | 读协议 + digest + 审计 | 读 |
| `mcp__kiwi__kiwi_handoff` | 生成成交入口（checkout/PO/联系路径） | 写 |
| `mcp__kiwi__kiwi_approve` | 批准持久审批 | 写 |
| `mcp__kiwi__kiwi_reject` | 拒绝持久审批（deny 优先） | 写 |

## 触发链

- 采购/找供应商 → `mcp__kiwi__kiwi_search`
- 询价/要报价 → `mcp__kiwi__kiwi_request_quotes`
- 比价 → `search` → `request_quotes` → `get_task`
- 还价/议价 → `mcp__kiwi__kiwi_negotiate`
- 交期/MOQ → 约束进 CommerceIntent 的 `constraints` / `preferences`
- 协议/下单意向 → `accept_agreement` → `handoff`

## CommerceIntent 构造（最小披露）

```json
{
  "intent_id": "dsh-<短唯一id>",
  "intent_type": "purchase",
  "items": [{ "query": "<短商品词，如 保温杯>", "quantity": { "value": 2, "unit": "台" } }],
  "constraints": {
    "currency": "CNY",
    "budget": { "currency": "CNY", "amount_minor": 200000 },
    "delivery_location": "<地址>",
    "deadline": "<RFC3339>"
  },
  "context_projection": {
    "disclosure_boundary": "commerce_required",
    "projected_fields": ["items", "constraints"]
  }
}
```

只投影完成交易必需的字段。用户的邮箱、地址、聊天、Host Memory 一律不得进入
`intent` 或任何工具参数。**商品 query 写短词**（如"保温杯"而非"保温杯 316不锈钢
500ml"）——长规格词会命中不到 catalog 的 title/category LIKE，导致商家丢
agent_card_url 误报 `merchant has no agent card URL`。

## 授权（DelegationPolicy = ask）

1. `mcp__kiwi__kiwi_accept_agreement`（无 approval_id）→ 返回 `{ approval_required:
   { approval_id } }`（不是 isError）。
2. 向用户呈现协议摘要（候选/条款/金额）。
3. 用户确认后 `mcp__kiwi__kiwi_approve(approval_id, note?)`；拒绝则
   `mcp__kiwi__kiwi_reject(approval_id, reason?)`（deny 优先）。
4. 携带 `approval_id` 重试 `accept_agreement` / `handoff`。

**不要**绕过 approval；不要未经用户确认自动 `kiwi_approve`；Kiwi 不处理支付
（payment 恒 NEVER）。

## 错误处理

- `task_not_found / task_expired`：重查或重新询价。
- `contract_violation`：修正 intent 后重试。
- `merchant_inquiry_unavailable`：该商家仅有第 0 版公开资料、未开通实时询价；
  不可重试 RFQ，改为展示其公开资料与店铺入口。
- `authorization_denied / approval_denied`：硬拒绝，不可重试。
- `partial_success`：保留成功报价，失败项单独重试。
- 交接前验证 checkout URL：`kiwi_handoff` 链接可能 404（演示商家 checkout 未实现），
  `curl -sS -o /dev/null -w "%{http_code}" <url>` 验证，404 时如实告知用户。

## 演示

`mcp__kiwi__kiwi_search("USB-C 扩展坞")` → `kiwi_request_quotes` → `kiwi_get_task`
等报价 → 选候选 `kiwi_negotiate` 还价 → 用户确认后 `kiwi_accept_agreement` →
`kiwi_get_agreement` 审计 → `kiwi_handoff`。
