我们用 Claude Agent 做了个内部二手群,18% 成交率变 61%,过程惨不忍睹

三天前,我翻出了一张截图——我们团队的微信群,48 条消息挤在一起:

"收到""好的""谢谢""哈哈哈""收到""好的"……

夹在这 48 条消息正中间,有一条被彻底淹没的发言:

"有台九成新的 Dell 27 寸显示器,800 块,有要的吗?"

那条消息是小李发的。三天后他才知道,想买显示器的小张当天就看到了——但那时候消息早就沉底,小张以为没人卖,小李以为没人要,两个人在同一个办公室坐了三天,谁也没开口问。

最后显示器以 600 块卖给了闲鱼上的陌生人。

这件事让我们决定做一个实验:用 Claude Agent 把这个混乱的微信二手群,变成一个有结构的撮合系统。

三周后,成交率从 18% 跳到了 61%。但过程比我们预期惨得多——也有趣得多。

---

第一章:为什么要解决一个"不值得解决"的问题

坦白说,一个 10 人团队的内部二手交换,从任何商业角度看都是个微不足道的问题。

但正因为它微不足道,才是做 AI Agent 实验的完美场景:

  • 规模小:10 个人,需求有限,不会因为数据量爆炸而失控
  • 失败成本低:Agent 犯错,最坏结果是撮合失败,没有人会因此损失什么
  • 反馈周期短:二手物品的需求很具体,匹配结果对不对,当天就能验证
  • 问题结构清晰:卖方、买方、物品、价格——四个要素,没有歧义空间

更重要的是,这个场景在几乎所有团队都存在。你们公司有没有一个"内部福利群"或者"二手转让群",但实际上没什么人用?那就是同一个问题。

我们把它当作一个可控的 AI 试验田,目标不是做一个完美产品,而是搞清楚:Claude Agent 在真实的、有摩擦的场景里,到底能做什么,做不了什么。

---

第二章:我们怎么设计这个 Agent

整个系统分四个模块,我用"搭积木"的方式解释:

用户自然语言输入

【模块1】需求解析(Claude 负责)

【模块2】结构化存储(SQLite / JSON)

【模块3】撮合逻辑(Python 脚本)

【模块4】通知推送(钉钉 Webhook)

模块1:需求解析 Prompt

这是整个系统最核心的部分。我们希望用户不需要填表单,直接用自然语言说话,Agent 自动把它变成结构化数据。

核心 Prompt 如下:

system_prompt = """

你是一个内部二手物资登记助手。

用户会用自然语言描述他们想出售或想购买的物品。

请将其解析为以下 JSON 格式:

{

"type": "sell | buy",

"item_name": "",

"condition": "全新 | 九成新 | 有磨损",

"price_range": {"min": 0, "max": 0},

"description": "",

"urgency": "急 | 不急"

}

规则:

1. 如果信息不足,列出需要追问的字段,不要猜测,不要补全

2. 价格区间:如果用户说"500左右",解析为 {min: 450, max: 550}

3. item_name 必须是具体物品名,不接受"东西""物品"等模糊词

4. 如果用户同时有买卖需求,拆分为两条记录

5. 返回纯 JSON,不要任何解释文字

"""

⚠️ 关键设计决策:我们在 Prompt 里明确写了"如果信息不足,列出需要追问的字段,不要猜测"。这一条在第一版里没有,导致 Agent 经常脑补用户意图,后面会讲到这有多惨。

模块2:撮合逻辑

撮合的核心是判断"卖方的物品"和"买方的需求"是否匹配。我们用了一个简单但有效的策略:

def match_items(sell_item, buy_request):

"""

撮合逻辑:三层过滤

"""

# 第一层:类别过滤(精确匹配)

if not category_overlap(sell_item["item_name"], buy_request["item_name"]):

return False, 0

# 第二层:价格区间重叠

sell_max = sell_item["price_range"]["max"]

buy_max = buy_request["price_range"]["max"]

if sell_max > buy_max * 1.2: # 允许20%溢价空间

return False, 0

# 第三层:语义相似度(调用 Claude 判断)

similarity_score = claude_semantic_match(

sell_item["description"],

buy_request["description"]

)

if similarity_score >= 0.7:

return True, similarity_score

return False, similarity_score

claude_semantic_match 函数会把两段描述丢给 Claude,让它判断相似度并返回 0-1 的分数。这个设计让我们不需要自己维护同义词库,Claude 的中文语义理解直接处理了"键盘"和"机械键盘"、"显示屏"和"显示器"这类同义词问题。 为什么选 Claude 而不是其他模型?

两个原因:

1. 中文语义匹配:我们测试过几个模型,Claude 在处理"差不多意思"的中文表达时,误判率明显更低

2. 长文本理解:当物品描述比较复杂时(比如"那种可以调高度的站立式办公桌,要能放双显示器的那种"),Claude 能保持语义的完整性

我们调用的是 Claude API,接入点用的是 [api.884819.xyz](https://api.884819.xyz),支持标准 OpenAI 格式,对于小团队实验来说,迁移成本几乎为零。

模块3:钉钉 Webhook 推送

import requests

import json

def send_match_notification(seller, buyer, item_info):

webhook_url = "YOUR_DINGTALK_WEBHOOK_URL"

message = {

"msgtype": "markdown",

"markdown": {

"title": "🎯 发现匹配!",

"text": f"""

发现一个潜在匹配

物品:{item_info['item_name']} 卖方:{seller['name']} | 期望价:{item_info['price_range']['max']} 元 买方:{buyer['name']} | 预算上限:{buyer['price_range']['max']} 元 状态:{item_info['condition']}
请双方私信确认,48小时内无回应将自动关闭此匹配。

[点击查看详情](YOUR_SYSTEM_URL)

"""

}

}

response = requests.post(webhook_url, json=message)

return response.status_code == 200

---

第三章:3周真实数据——什么有效,什么彻底翻车

先上数据:

| 指标 | 第1周 | 第2周 | 第3周 | | 物品发布数 | 11 件 | 9 件 | 14 件 | | 撮合请求数 | 17 次 | 14 次 | 19 次 | | 最终成交数 | 2 笔 | 4 笔 | 9 笔 | | 成交率 | 18% | 29% | 61% | | 平均撮合响应时长 | 约 8 分钟 | 约 6 分钟 | 约 4 分钟 | | 人工群聊平均响应 | 约 6-18 小时 | — | — |

第一周的 18% 成交率,说实话,比我们预期还要惨。

翻车案例一:键盘遇上钢琴

第一周最经典的事故:同事小吴发布了一台"九成新机械键盘,Cherry 红轴,500 块"。Agent 在解析时,把 item_name 识别为"键盘",没有问题。

但当时系统里有一条未成交的买方需求,是另一个同事小陈写的:"想买一个能练习的键盘,预算 800 以内"。

Agent 兴冲冲地把两人撮合在一起,发了通知。

小陈回复:"我要的是电子琴……"

这个 bug 的根源:我们的第一版 Prompt 没有让 Agent 在信息模糊时追问,而是允许它"合理推断"。"键盘"这个词在中文里确实有歧义,但 Agent 没有识别出歧义,直接匹配了。

翻车案例二:用户懒得说完整

我们原本设计了一套结构化输入流程,要求用户按格式填写:

物品名称:

成色:

价格:

描述:

实际情况是,10 个人里有 7 个人直接无视格式,发的是:

"有个充电宝,要不要"
"谁要买椅子"
"笔记本电脑,便宜卖"

Agent 在没有足够信息的情况下,会追问——但追问了两轮之后,用户就不回了。

这是第一周成交率惨的第二个原因:用户输入质量太低,导致大量需求卡在"信息收集"阶段,从未进入撮合池。

踩坑总结

1. 意图识别模糊:中文同义词和多义词问题,必须在 Prompt 里显式处理

2. 用户懒得填结构化表单:强制格式是死路,必须走自然语言路线

3. "最后一公里"AI 管不了:撮合成功之后,线下交接完全靠人,Agent 没有任何影响力

---

第四章:第三周我们做了什么,成交率从 18% 跳到 61%

改动分三个层次,每一个都有明确效果。

改动1:从"强制格式"到"自然语言 + Agent 自动解析"

这是最关键的改动。我们彻底放弃了结构化输入表单,改成:用户随便说,Agent 来解析,解析完了向用户确认一次。

新的交互流程:

用户:有个充电宝,要不要

Agent:我帮你登记一下~请确认以下信息是否正确:

- 出售物品:充电宝

- 成色:未知(请补充:全新/九成新/有磨损?)

- 价格:未知(请补充期望售价?)

用户:九成新,50块

Agent:好的,已登记✅

出售:充电宝 | 九成新 | 50元

我会在有匹配买家时通知你。

这个改动让发布物品的完成率从约 40% 提升到约 85%。用户不需要记格式,只需要确认 Agent 的理解是否正确。

改动2:模糊匹配 + 人工确认双保险

针对"键盘遇上钢琴"这类语义歧义问题,我们加了一个"低置信度撮合"机制:

def smart_match(sell_item, buy_request):

is_match, score = match_items(sell_item, buy_request)

if is_match and score >= 0.85:

# 高置信度:直接推送通知

send_match_notification(seller, buyer, sell_item)

elif is_match and 0.7 <= score < 0.85:

# 中等置信度:先问卖方确认

send_confirmation_request(

seller,

f"系统发现潜在买家,但不太确定是否匹配,请确认:\n买家需求:{buy_request['description']}"

)

这个机制让误撮合率从第一周的约 35% 降到第三周的约 8%。

改动3:用钉钉替代邮件通知

第一版我们用的是邮件通知。结果:没有人看邮件。

换成钉钉 Webhook 之后,通知打开率从约 20% 跳到约 90%。

这个改动和 AI 没有任何关系——但它对成交率的影响,可能比任何 Prompt 优化都大。

教训:Agent 的最后一步是触达人。如果触达渠道本身就失效了,前面所有的智能都白费。

---

第五章:这个实验真正教会我们的事

洞察一:小场景是最好的 AI 试验田

不要一上来就做"AI 客服系统"或者"AI 数据分析平台"。找一个团队内部真实存在的、有摩擦的小流程,用 Agent 跑通它。

小场景的好处:反馈快、失败成本低、迭代空间大。我们三周做了不止 20 次 Prompt 调整,如果是正式产品,每次改动都需要走审批流程,根本不可能。

洞察二:Claude 的真正优势在语义容错

我们测试过几个模型做需求解析,Claude 最突出的能力不是"准确",而是"容错"——它能处理"那种能调高度的桌子""差不多 500 左右"这类模糊表达,而不是直接报错或者乱猜。

对于面向真实用户的 Agent,这个能力比任何 benchmark 分数都重要。

洞察三:AI 撮合 ≠ AI 替代人

这个实验里,Agent 做的事情是:降低信息摩擦

它没有替代任何人的判断——最终买不买、价格谈不谈、东西好不好,全部还是人来决定。Agent 只是把"小李的显示器"和"小张的需求"放到了同一张桌子上。

这才是 AI 撮合的本质:减少信息不对称,而不是替代人的决策。

给想复刻这个实验的团队

如果你们团队也有一个被微信群淹没的内部流程,这是我建议你从哪里开始:

1. 最低配置:Python 基础 + Claude API 访问权限 + 一个能发消息的通知渠道(钉钉/飞书/企业微信均可)

2. 时间预期:第一版跑通需要约 2 天,跑出有意义的数据需要至少 2 周

3. 优先级:先把通知渠道打通,再优化 Prompt,最后才考虑撮合算法

4. API 接入:我们用的是 [api.884819.xyz](https://api.884819.xyz),标准 OpenAI 格式,新用户注册即送体验 token,国产模型(Deepseek/千问等)完全免费,没有月租,适合小团队跑实验

---

📎 复刻资源包

  • 完整 Prompt 模板:本文中的需求解析 Prompt 可直接使用,建议根据你们团队的物品类型做微调
  • 撮合逻辑:三层过滤(类别 → 价格 → 语义)是核心框架,阈值参数需要根据实际数据调整
  • 通知渠道:优先选团队最活跃的 IM 工具,不要用邮件
  • API 接入说明:[api.884819.xyz](https://api.884819.xyz),注册后直接能用

---

这次实验结束后,我们团队里有人问了一个问题:

"如果 Agent 能撮合二手物资,它能不能撮合人?比如——内部技能互换?"

我们正在做第二轮实验:让 Claude Agent 帮团队成员匹配"技能交换"需求——你教我 Python,我帮你做 PPT。

这个场景比二手物资复杂得多,因为"需求"和"供给"都是模糊的,匹配标准也是主观的。二手显示器好不好匹配,价格说了算;但"你教我做 PPT"这件事,怎么衡量匹配质量?Agent 在这里会遇到完全不同的挑战。

下一篇,我们会带着数据回来。

---

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI教程 #Claude #AIAgent #人工智能 #8848AI #Prompt技巧 #AI实战 #效率工具