我用 AI 代理“頂班”七 天——客戶毫無(wú)察覺(jué)
如果幾年前有人跟我說(shuō):把 80% 的客戶溝通自動(dòng)化,沒(méi)人會(huì)發(fā)現(xiàn),我大概率會(huì)禮貌點(diǎn)頭、笑兩聲,然后回去繼續(xù)修 Flask 路由。 然而,周末一時(shí)興起做了個(gè)小助手,結(jié)果就失控成了整整一周的全面自動(dòng)化試驗(yàn)。沒(méi)親自回一條客戶消息、沒(méi)親自寫一封文檔郵件、也沒(méi)手動(dòng)批過(guò)一次輕量 PR——更意外的是:沒(méi)有任何客戶起疑。
下文是完整的落地過(guò)程:只講方法與實(shí)現(xiàn),不繞彎子——Python、自動(dòng)化,再加一點(diǎn)策略性“偷懶”。
問(wèn)題:我的日程像俄羅斯方塊一樣擠滿
我一邊做多家 Python 自動(dòng)化外包,一邊運(yùn)營(yíng)刊物、還要帶新人。每天都在接這種消息:
- “能幫我看下這條數(shù)據(jù)管道嗎?”
- “那個(gè)微服務(wù)今天能發(fā)嗎?”
- “這個(gè)報(bào)錯(cuò)
AttributeError: 'NoneType' object has no attribute 'encode'是啥啊 ???”
單看不重,疊加起來(lái)就是生產(chǎn)力黑洞。粗算下來(lái),我?guī)缀?/span>每天有 2.5 小時(shí)花在重復(fù)、模板化的回復(fù)上。于是我想:能不能“自動(dòng)化我自己”?
第 1 步:先讓代理學(xué)會(huì)“我的口吻”
老實(shí)講,我們的日?;貜?fù)80% 是模式,20% 才是即興。我先把用得最多的郵件回信、GitHub 評(píng)論和 Slack 回復(fù)導(dǎo)出為 Markdown,按窗口重疊的方式切片分塊,讓語(yǔ)境更完整。
import os
import openai
openai.api_key = "your_sk"
def mimic_me(message):
system_prompt = """
You are Abdul Ahad, a seasoned Python developer with 4+ years of experience.
You respond with clarity, empathy, and confidence. Keep it concise but useful.
"""
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": message}
],
temperature=0.4
)
return response['choices'][0]['message']['content']我用“部署又掛了,能幫下嗎?”之類的提示做了幾輪測(cè)試。效果嚇人地貼臉:不僅語(yǔ)氣像,連我遇事愛(ài)用的表情也復(fù)刻了。??
第 2 步:LangChain + Flask,把“低優(yōu)先級(jí)”消息自動(dòng)回了
會(huì)說(shuō)“人話”是一回事,發(fā)出去不顯得機(jī)械又是另一回事。我起了一個(gè) Flask webhook 來(lái)接 Slack 與 Gmail 的新消息;隨后做個(gè)輕判斷:只要不是緊急或高風(fēng)險(xiǎn),就讓代理代我回。
from flask import Flask, request
import threading
app = Flask(__name__)
@app.route('/incoming', methods=['POST'])
def handle_message():
data = request.json
msg = data['message']
if "urgent" not in msg.lower():
reply = mimic_me(msg)
send_reply(reply) # 你的郵件/Slack 發(fā)送函數(shù)
return "OK"
def run_app():
app.run(port=5000)
threading.Thread(target=run_app).start()從這刻起,代理就是“我”:能同步進(jìn)度、給出代碼建議、甚至能拉會(huì)并預(yù)約日程。
小貼士:需要穩(wěn)定口吻就把
temperature調(diào)低;需要更靈動(dòng)一點(diǎn)就略微上調(diào),別貪大。
第 3 步:Git 提交信息?自動(dòng)從 diff 生成
這一段極度上頭。我在倉(cāng)庫(kù)的 post-commit 鉤子里,先把暫存區(qū)的改動(dòng)導(dǎo)成 diff,再 prompt 模型生成“像我寫的”提交信息。
git diff --cached > temp.diff然后把 diff 喂給提示詞:
diff_contents = open("temp.diff", "r", encoding="utf-8").read()
prompt = f"""
Here's a diff from a Python repo. Write a commit message as Abdul would:
clean, professional, and short.
DIFF:
{diff_contents}
"""效果:每次 commit 都簡(jiǎn)潔、有信息量、語(yǔ)氣統(tǒng)一。從此再也沒(méi)有“fixed stuff”。
第 4 步:做“知識(shí)庫(kù)+QA”的代碼評(píng)審
當(dāng)客戶丟過(guò)來(lái) PR 讓給反饋時(shí),代理也能頂上。我先把以往的代碼評(píng)審意見(jiàn)做向量化索引,作為“評(píng)審經(jīng)驗(yàn)”的可檢索語(yǔ)料。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("all-MiniLM-L6-v2")
embeddings = model.encode(past_reviews)隨后我把新的 diff轉(zhuǎn)成若干審查要點(diǎn)(比如“是否符合 SRP”“異常處理是否完備”),再去檢索相似的歷史意見(jiàn),拼裝為具體點(diǎn)評(píng)。光這個(gè)環(huán)節(jié),一周就省了將近 5 個(gè)小時(shí)。
第 5 步:會(huì)議讓 AI 去“參會(huì)”,我只收要點(diǎn)
我用 Whisper 做錄音轉(zhuǎn)寫(當(dāng)然是提前告知并獲同意),然后讓模型把紀(jì)要、風(fēng)險(xiǎn)與行動(dòng)項(xiàng)提煉出來(lái)。
import openai
audio_file = open("call.m4a", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file)
prompt = f"""
Here is the transcript of a meeting. Summarize key decisions, concerns,
and action points.
TRANSCRIPT:
{transcript}
"""每次會(huì)后,要點(diǎn)自動(dòng)落到 Notion??蛻糁挥X(jué)得“效率高”,卻沒(méi)想到我不在。??
第 6 步:發(fā)票、周報(bào)與文檔,一鍵歸檔生成
最后一層,是把文檔工作也徹底模塊化。每到周五,我的腳本會(huì)自動(dòng)收集:
- 本周提交(commits)
- 審過(guò)的 PR
- 代理的往來(lái)消息
- 會(huì)議紀(jì)要與行動(dòng)項(xiàng)
然后交給模型生成每位客戶的周報(bào):
weekly_report_prompt = f"""
Summarize this week's project activity for client X.
COMMITS:
{commits}
MESSAGES:
{messages}
MEETINGS:
{summaries}
"""結(jié)構(gòu)清晰、信息完整,讀起來(lái)像真人寫。那周我還收到了這樣的反饋:
“真希望更多開(kāi)發(fā)能像你這么會(huì)溝通?!?/span>
翻車現(xiàn)場(chǎng)
當(dāng)然,并非完美無(wú)瑕:
- 語(yǔ)氣不合拍:有位平時(shí)愛(ài)抖機(jī)靈的客戶收到了一條過(guò)于正式的回信,直接問(wèn)我“你還好嗎?怎么這么像 ChatGPT”?!?/span>修正:為每位客戶掛一個(gè)語(yǔ)氣配置(冷/暖/活潑/嚴(yán)謹(jǐn)),進(jìn)入 webhook 時(shí)先識(shí)別來(lái)源再選風(fēng)格。
- 音頻太糊:一次會(huì)議錄音質(zhì)量差,紀(jì)要就偏空泛?!?/span>修正:加了降噪與語(yǔ)音質(zhì)量校驗(yàn);不達(dá)標(biāo)就打回重傳或標(biāo)注“需人工補(bǔ)充”。
- 需求誤解:有位客戶的改動(dòng)請(qǐng)求被代理“理解歪”了?!?/span>修正:凡是有風(fēng)險(xiǎn)的改動(dòng),一律人工二次確認(rèn);代理只負(fù)責(zé)草擬方案與風(fēng)險(xiǎn)點(diǎn),不直接合并。
結(jié)論:你可以“自動(dòng)化自己”,但別真的把自己裁了——關(guān)鍵路徑還是要人在回路。

































