一句话结论:催收AgentCoding Agent更难做,因为它面对的不是编译器,而是有情绪、会反抗、会说谎的人——而且说错一句话就是合规事故。

一、Coding Agent vs 催收Agent

Coding Agent(Cursor、Devin)只需要理解代码、调用API、生成文件。输出对不对,编译器和测试用例会告诉它。

催收Agent面对的是,而且是有情绪、会反抗、会说谎的人。

维度 Coding Agent 催收Agent
输出检验 编译器/测试用例 合规审查 + 人工审核
容错空间 报错后可以重试 说错话就是合规事故
上下文 代码文件 + 需求 用户信息 + 对话历史 + 工具结果 + 系统状态
意图识别 明确(写函数/修bug) 模糊("知道了"可能是回避也可能是拖延)
合规要求 时间窗口、频次、内容、敏感职业、DNC
危机处理 用户说"不想活了"必须立即停止催收

核心差异:Coding Agent的输出是代码,人可以review后再提交。催收Agent的输出是话,一旦说出口就收不回来。

这意味着催收Agent的每一个组件都必须经得起生产检验,不能靠"提示词写得好一点"来兜底。

二、难在哪里:四个组件缺一不可

催收Agent的架构可以抽象为四个核心组件:

组件 催收员的对应能力 为什么难
Context 记住用户是谁、欠多少钱、上次说了什么 金额不能编造,必须从系统读取;历史对话长了会丢信息
Permissions 不能晚上打电话、不能威胁用户、不能说错金额 不是prompt里写"请温柔"就行,需要代码层硬拦截
Decider 判断用户是"真没钱"还是"不想还" 意图不只来自文字,用户不回复、点击链接不支付、承诺到期不还,都是意图
Skill + Tool 协商方案、安抚情绪、记录承诺、发送链接 Skill是策略,Tool是动作,两者不是并列关系而是"策略决定调用什么动作"

这四个组件共同解决一个问题:在严格约束下,与不可预测的人进行有效交互

三、这个系列讲什么

这个系列共4篇文章,从业务理解出发,逐层深入技术实现:

第1篇(本文)→ 为什么催收Agent比Coding Agent难
       ↓
第2篇 → 催收员每天都在做什么(业务流程)
       ↓
第3篇 → 把流程翻译成Agent架构(Context/Permissions/Decider/Skill/Tool)
       ↓
第4篇 → 让Agent稳定运行的工程实践(提示词拆分、CoT、信息压缩)

阅读建议

  • 如果你不懂催收业务:按顺序读。先理解催收员怎么工作,再看怎么变成代码。
  • 如果你已经是Agent开发者:直接从第3篇开始。业务部分可以快速跳过,重点看架构设计。
  • 如果你想看工程实践:跳到第4篇,看提示词拆分、CoTCompaction的具体做法。

四、技术来源

这个系列不是闭门造车,而是基于一本好书、一个好项目:

:Chip Huyen 的 AI Engineering: Building Applications with Foundation Models

  • 提示词拆分:不要把所有规则塞进一个巨型prompt
  • CoT + 自我校验:让模型先写出推理过程,再审查自己的输出
  • 防御性提示:系统prompt会被提取,不能把敏感策略hard-code进去

项目:我自己写的 collect-agent

  • 意图分类准确率≥90%
  • STOP/CRISIS关键词100%拦截
  • 金额硬校验
  • 敏感职业特殊处理
  • 完整的状态机

所有文章都有对应的可运行代码。

五、下一篇

2篇:《手搓一个催收Agent(二):催收员每天都在做什么》

我们会跟着一个催收员走完他的一天:

  • 早上9点,系统分配了50M1逾期用户
  • 第一个用户接了电话,说"我现在没钱"→ 查账单 → 了解原因 → 提供分期 → 记录承诺
  • 第二个用户没接电话 → 发短信 → 标记静默 → 1小时后再试
  • 第三个用户说"别再打给我"→ 立即停止 → 加入DNC
  • 下午遇到一个律师 → 只能用标准话术 → 不能谈判

看完这篇,你会对"催收Agent要解决什么问题"有一个具体的画面。

关联

  • [[chatbot-exploration]] — 催收chatbot项目设计文档

Tags

#collection-agent #ai-engineering #agent #series