戰(zhàn):多 Agent 協(xié)作搞定銷售線索挖掘與客戶跟進(jìn))
1. 銷售場(chǎng)景為什么需要多 Agent 協(xié)作做 ToB 銷售的朋友大概率都遇到過這種局面市場(chǎng)部丟過來一份 800 行的線索表銷售挨個(gè)查官網(wǎng)、翻聊天記錄、判斷意向一天下來真正能跟進(jìn)的沒幾個(gè)好不容易聊上的客戶跟進(jìn)記錄散落在微信、飛書、CRM 三個(gè)地方下次溝通前得花半小時(shí)回憶上次聊到哪到了出方案階段又要重新翻需求、拼賣點(diǎn)、套模板一份方案磨兩三天。單 Agent 的做法通常是給一個(gè)大模型塞一堆提示詞讓它同時(shí)干提取、判斷、寫話術(shù)、出方案。實(shí)測(cè)下來問題很明顯任務(wù)一多上下文就串味線索提取的字段跑到方案里去了一個(gè)環(huán)節(jié)報(bào)錯(cuò)整條鏈路掛掉沒法單獨(dú)重試更麻煩的是沒法給不同環(huán)節(jié)配不同的模型和參數(shù)線索提取要穩(wěn)、話術(shù)生成要活一個(gè)模型很難兩頭兼顧。OpenClaw 的思路是把銷售鏈路拆成線索挖掘、客戶跟進(jìn)、方案生成三條獨(dú)立鏈路每條鏈路下面再掛專職 Agent通過編排引擎共享上下文、按優(yōu)先級(jí)調(diào)度、失敗單獨(dú)重試。這篇就按工程化落地的角度把可復(fù)制的 Agent 編排配置骨架、settings.json 關(guān)鍵字段、以及從線索到跟進(jìn)的狀態(tài)流轉(zhuǎn)驗(yàn)證動(dòng)作講清楚你可以在自己的環(huán)境里跑通端到端流程。適合已經(jīng)了解 OpenClaw 基礎(chǔ)概念、想把它真正用到銷售業(yè)務(wù)里的開發(fā)者和銷售運(yùn)營(yíng)同學(xué)。2. TaoToken 前置給多 Agent 提供穩(wěn)定的模型出口多 Agent 協(xié)作對(duì)模型調(diào)用的要求比單 Agent 高得多。三條鏈路并發(fā)跑線索挖掘 Agent 可能在批量處理 50 條線索跟進(jìn) Agent 同時(shí)在整理會(huì)議紀(jì)要方案 Agent 在生成文檔如果模型出口不穩(wěn)定整條流水線就會(huì)卡在某個(gè)環(huán)節(jié)。我這邊用的是 TaoToken 作為統(tǒng)一模型出口它兼容 OpenAI 風(fēng)格的接口OpenClaw 的模型適配器可以直接對(duì)接不用改 Agent 內(nèi)部邏輯。官網(wǎng)在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 地址不帶 UTM 參數(shù)配置的時(shí)候別寫錯(cuò)。具體操作上先去控制臺(tái)創(chuàng)建 API Key地址是 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 創(chuàng)建完把 Key 復(fù)制出來后面填到 settings.json 里。如果你對(duì)模型能力還沒把握可以先用模型對(duì)話頁面 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 試幾條銷售場(chǎng)景的提示詞看看提取和生成效果再?zèng)Q定用哪個(gè)模型。這里要提醒一句多 Agent 場(chǎng)景下建議給不同鏈路配不同的模型。線索挖掘和跟進(jìn)記錄整理這類結(jié)構(gòu)化提取任務(wù)用穩(wěn)定、便宜的模型就夠方案生成和話術(shù)包裝這類需要語言表達(dá)的任務(wù)再上能力更強(qiáng)的模型。TaoToken 的好處是同一個(gè) Key 可以調(diào)不同模型切換成本低。3. 可復(fù)制的 Agent 編排配置骨架3.1 目錄結(jié)構(gòu)先把工程目錄搭起來后面所有配置都往這個(gè)骨架里填openclaw-sales/ ├── settings.json # 全局配置模型、Key、并發(fā) ├── agents/ │ ├── lead_agent.yaml # 線索挖掘 Agent │ ├── follow_agent.yaml # 客戶跟進(jìn) Agent │ └── proposal_agent.yaml# 方案生成 Agent ├── skills/ │ ├── lead_extract.md # 線索提取提示詞 │ ├── follow_track.md # 跟進(jìn)整理提示詞 │ └── proposal_gen.md # 方案生成提示詞 ├── data/ │ ├── leads.csv # 原始線索 │ └── records/ # 溝通記錄 └── output/ ├── leads_tracked.csv # 線索跟進(jìn)表 └── follow_list.csv # 客戶跟進(jìn)清單3.2 settings.json 關(guān)鍵字段這是整篇最核心的配置多 Agent 能不能協(xié)同起來全看這里{ llm: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密鑰, default_model: gpt-4o-mini, timeout: 60, max_retries: 3 }, orchestrator: { max_concurrency: 4, task_queue: priority, context_sharing: true, fail_fast: false }, agents: { lead_agent: { model: gpt-4o-mini, temperature: 0.3, max_tokens: 2048 }, follow_agent: { model: gpt-4o-mini, temperature: 0.4, max_tokens: 3072 }, proposal_agent: { model: gpt-4o, temperature: 0.6, max_tokens: 4096 } }, state: { store: sqlite, path: ./data/state.db, checkpoint_interval: 10 } }幾個(gè)字段值得單獨(dú)說。context_sharing打開后線索 Agent 提取的客戶信息會(huì)自動(dòng)進(jìn)入共享上下文跟進(jìn) Agent 不用重新讀一遍原始文件。fail_fast設(shè)成 false意思是某條線索處理失敗不影響其他線索失敗任務(wù)進(jìn)重試隊(duì)列。task_queue用 priority高意向線索會(huì)被優(yōu)先調(diào)度。checkpoint_interval是每處理 10 條落一次盤中途掛了不用從頭再來。3.3 線索挖掘 Agent 配置name: lead_agent description: 從原始線索中提取客戶信息并判斷意向 skill: skills/lead_extract.md input: - data/leads.csv output: - output/leads_tracked.csv fields: - customer_name - industry - contact - title - demand - intent_level - priority - next_action對(duì)應(yīng)的skills/lead_extract.md提示詞骨架你是銷售線索分析助手?;谳斎氲木€索數(shù)據(jù)逐條完成 1. 提取客戶名稱、行業(yè)、聯(lián)系人、職位、需求線索 2. 判斷意向等級(jí)高/中/低并給出一句判斷依據(jù) 3. 按意向等級(jí)分配優(yōu)先級(jí) P0/P1/P2 4. 為每條線索生成一句首次觸達(dá)話術(shù) 輸出嚴(yán)格按 CSV 表頭customer_name,industry,contact,title,demand,intent_level,intent_reason,priority,first_touch 不要輸出解釋性文字只輸出 CSV 行。3.4 客戶跟進(jìn) Agent 配置name: follow_agent description: 整理溝通記錄并判斷銷售階段 skill: skills/follow_track.md input: - data/records/ - output/leads_tracked.csv output: - output/follow_list.csv fields: - customer_name - stage - stage_reason - concerns - objections - next_step - next_date跟進(jìn) Agent 的關(guān)鍵是狀態(tài)流轉(zhuǎn)。銷售階段建議固定成五個(gè)枚舉值初步接觸、需求分析、方案評(píng)估、商務(wù)談判、成交。Agent 只能在這五個(gè)值里選避免模型自由發(fā)揮導(dǎo)致下游統(tǒng)計(jì)口徑混亂。3.5 方案生成 Agent 配置name: proposal_agent description: 基于客戶需求生成方案框架與匯報(bào)話術(shù) skill: skills/proposal_gen.md input: - output/follow_list.csv - data/product.md output: - output/proposal_{customer_name}.md fields: - core_demand - solution_framework - value_match - talk_track4. 驗(yàn)證請(qǐng)求與狀態(tài)流轉(zhuǎn)配置寫完不能直接上生產(chǎn)得先驗(yàn)證鏈路通不通。分三步走。4.1 驗(yàn)證模型出口先確認(rèn) TaoToken 的 Key 能正常調(diào)用curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的密鑰 \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: 回復(fù) OK}] }返回里能看到choices字段就說明出口正常。如果報(bào) 401檢查 Key 有沒有復(fù)制全報(bào) 404檢查 base_url 是不是寫成了帶路徑的形式。4.2 驗(yàn)證單 Agent 執(zhí)行拿 5 條測(cè)試線索跑線索挖掘 Agentclaw run lead_agent --input data/leads.csv --limit 5跑完看output/leads_tracked.csv重點(diǎn)檢查三件事字段有沒有缺列、意向等級(jí)是不是只出現(xiàn)高/中/低、優(yōu)先級(jí)是不是只出現(xiàn) P0/P1/P2。如果模型輸出了「較高」「P0-P1」這種模糊值說明提示詞里的枚舉約束不夠硬回去把可選值用引號(hào)包起來再強(qiáng)調(diào)一遍。4.3 驗(yàn)證狀態(tài)流轉(zhuǎn)這是多 Agent 協(xié)作最容易出問題的地方。線索 Agent 輸出的customer_name必須和跟進(jìn) Agent 讀取的鍵完全一致否則共享上下文對(duì)不上。驗(yàn)證方法claw run follow_agent --input output/leads_tracked.csv --dry-run--dry-run只做匹配不調(diào)模型輸出里會(huì)列出每條線索匹配到的溝通記錄。如果出現(xiàn)unmatched的客戶名八成是線索表里寫了「智慧制造有限公司」而溝通記錄里寫的是「智慧制造」需要加一層名稱歸一化或者在 settings.json 里打開context_sharing的 fuzzy_match 選項(xiàng)。狀態(tài)流轉(zhuǎn)驗(yàn)證通過的標(biāo)準(zhǔn)是線索表里的每條 P0 客戶都能在跟進(jìn)清單里找到對(duì)應(yīng)的階段記錄且階段值在五個(gè)枚舉值之內(nèi)。5. 本篇常見錯(cuò)排查報(bào)錯(cuò)一context key not found: customer_name線索 Agent 和跟進(jìn) Agent 的字段名不一致。檢查兩個(gè) yaml 里的fields列表客戶名統(tǒng)一用customer_name別一個(gè)寫name一個(gè)寫customer。報(bào)錯(cuò)二rate limit exceeded并發(fā)設(shè)太高了。settings.json 里max_concurrency從 4 降到 2或者給 orchestrator 加retry_backoff: 2失敗后指數(shù)退避重試。報(bào)錯(cuò)三方案生成 Agent 輸出里混進(jìn)了線索提取的字段context_sharing打開后所有 Agent 共享上下文方案 Agent 可能讀到不該讀的字段。解決辦法是在 proposal_agent.yaml 里顯式聲明context_filter只允許讀取core_demand和product兩類鍵。報(bào)錯(cuò)四CSV 輸出中文亂碼OpenClaw 默認(rèn)按 UTF-8 寫文件但 Excel 打開會(huì)亂碼。在 settings.json 的 output 段加encoding: utf-8-sig或者用iconv轉(zhuǎn)一下。報(bào)錯(cuò)五跟進(jìn)階段判斷來回跳同一個(gè)客戶兩次運(yùn)行給出了不同階段。這是 temperature 太高導(dǎo)致的跟進(jìn) Agent 的 temperature 壓到 0.2 以下并在提示詞里要求「階段只能前進(jìn)不能后退除非有明確證據(jù)」。6. 把鏈路跑成日常三條鏈路單獨(dú)跑通只是第一步真正省時(shí)間的是把它們串成一條命令。在項(xiàng)目根目錄建一個(gè)run_all.sh#!/bin/bash set -e claw run lead_agent --input data/leads.csv claw run follow_agent --input output/leads_tracked.csv claw run proposal_agent --input output/follow_list.csv --top 5 echo 鏈路完成輸出在 output/ 目錄--top 5表示只給優(yōu)先級(jí)最高的 5 個(gè)客戶生成方案避免一次性生成幾十份沒人看。每天早上跑一次銷售上班直接看output/follow_list.csv就知道今天該跟誰、聊什么、帶什么方案。如果團(tuán)隊(duì)里有人長(zhǎng)期跑編碼類任務(wù)或者要接 Agent 做自動(dòng)化可以看下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 按量計(jì)費(fèi)比單次調(diào)用劃算。接入文檔在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有多 Agent 并發(fā)調(diào)用的示例配置字段和這篇的 settings.json 能對(duì)上。最后說個(gè)踩過的坑別一上來就把全量線索丟進(jìn)去跑。先用 20 條跑一周把提示詞里的枚舉值、字段名、階段定義磨穩(wěn)定了再放量。多 Agent 協(xié)作的穩(wěn)定性不取決于模型多強(qiáng)取決于字段約定有多死。