XianyuAutoAgent 是一个基于大语言模型的闲鱼自动回复机器人,通过智能对话系统为卖家提供24小时自动客服服务。项目采用模块化设计,支持规则引擎、意图识别、多角色回复等功能,并针对token使用进行了深度优化。
- 🚀 高性能:规则引擎预处理,60-70%的消息零token成本处理
- 💰 低成本:通过摘要和结构化prompt,节省50-70%的token使用
- 🎯 高准确:智能意图识别,多角色专业回复
- 🔧 易扩展:模块化设计,支持自定义规则和Agent
- 📊 可监控:完整的统计和日志系统
- 意图识别:自动识别用户意图(价格、技术、默认、不回复)
- 多角色回复:价格Agent、技术Agent、默认Agent
- 上下文管理:SQLite存储对话历史,支持长期记忆
- 人工接管:支持切换到人工模式
- 关键词匹配:支持包含、等于、正则、长度等多种匹配方式
- 灵活动作:支持直接回复、路由、阻止、不回复等动作
- 热加载:规则修改无需重启服务
- 优先级控制:规则按优先级排序执行
- 对话摘要:将对话历史压缩为结构化摘要,节省60-80% token
- 商品摘要:提取关键特性,节省45-70% token
- 结构化Prompt:精简格式,节省30-50% token
- 规则预处理:60-70%的消息零token成本处理
- WebSocket连接:实时接收和发送消息
- 消息加密:支持消息加密和解密
- 心跳管理:自动维护连接状态
- Token刷新:自动刷新token和cookie
- 实时日志:详细的运行日志
- 统计数据:LLM调用次数、token使用、规则命中率
- 性能监控:响应时间、成功率
XianyuAutoAgent/
├── main.py # 入口文件
│
├── app/ # 应用层
│ ├── xianyu_live.py # WebSocket主循环
│ ├── orchestrator.py # 回复编排器
│ ├── rule_engine.py # 规则引擎
│ ├── token_manager.py # Token管理
│ └── heartbeat.py # 心跳管理
│
├── agent/ # Agent层
│ ├── llm_client.py # LLM客户端
│ ├── router.py # 意图路由
│ ├── context_builder.py # 上下文构建
│ ├── responder.py # 回复生成
│ ├── postprocessor.py # 后处理
│ └── summarizer.py # 摘要生成
│
├── protocol/ # 协议层
│ ├── parser.py # 消息解析
│ ├── sender.py # 消息发送
│ └── heartbeat_proto.py # 心跳协议
│
├── memory/ # 记忆层
│ └── context_manager.py # 上下文管理
│
├── utils/ # 工具层
│ ├── logger.py # 日志工具
│ └── xianyu_utils.py # 闲鱼工具
│
├── config/ # 配置层
│ ├── rules.json # 规则配置
│ ├── prompts.json # 提示词配置
│ └── item_keywords.json # 商品关键词
│
└── .env # 环境变量
用户消息
↓
规则引擎(零token)
├─ block → 不回复
├─ no_reply → 不回复
├─ reply → 直接回复
├─ route → 指定意图
└─ none → 继续处理
↓
Router分类(少量token)
├─ price → 价格Agent
├─ tech → 技术Agent
├─ default → 默认Agent
└─ no_reply → 不回复
↓
摘要生成(节省60-80% token)
├─ 对话摘要
└─ 商品摘要
↓
结构化Prompt(节省30-50% token)
↓
LLM调用
↓
后处理
↓
回复
- Python 3.8+
- pip
- 克隆项目
git clone https://github.com/yourusername/XianyuAutoAgent.git
cd XianyuAutoAgent- 安装依赖
pip install -r requirements.txt- 配置环境变量
创建 .env 文件:
# API配置
API_KEY=your_api_key_here
BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
MODEL_NAME=qwen-max
# 闲鱼配置
COOKIES_STR=your_cookies_here
# 可选配置
LOG_LEVEL=INFO
HEARTBEAT_INTERVAL=15
TOKEN_REFRESH_INTERVAL=3600
USE_SUMMARY=True
ROUTER_USE_LLM=False
LLM_MAX_TOKENS=96
LLM_TIMEOUT_SECONDS=20
ENABLE_THINKING=False
# 价格策略(本地模板)
PRICE_FLOOR=0
PRICE_FLOOR_RATIO=0.85
PRICE_CONCESSION_STEP=0.03- 获取Cookie
登录闲鱼网页版,从浏览器开发者工具中获取Cookie,特别是以下字段:
unb: 用户IDcookie2: 会话标识_tb_token_: 安全令牌
- 启动服务
python main.py# 测试token优化效果
python test_token_optimization.py编辑 config/rules.json 添加自定义规则:
{
"id": "custom_rule",
"name": "自定义规则",
"item_type": "any",
"match": {
"type": "contains",
"values": ["关键词1", "关键词2"]
},
"action": "reply",
"reply": "自定义回复内容"
}编辑 config/prompts.json 自定义提示词:
{
"system_global": "你是闲鱼卖家客服...",
"router": "把用户消息分类为...",
"responder": {
"price": "你是议价销售客服...",
"tech": "你是产品技术客服...",
"default": "你是卖家客服..."
}
}| 变量名 | 说明 | 默认值 |
|---|---|---|
API_KEY |
LLM API密钥 | 必填 |
BASE_URL |
API基础URL | 阿里云DashScope |
MODEL_NAME |
模型名称 | qwen-max |
COOKIES_STR |
闲鱼Cookie | 必填 |
LOG_LEVEL |
日志级别 | INFO |
HEARTBEAT_INTERVAL |
心跳间隔(秒) | 15 |
TOKEN_REFRESH_INTERVAL |
Token刷新间隔(秒) | 3600 |
USE_SUMMARY |
是否使用摘要 | True |
ROUTER_USE_LLM |
Router未命中时是否调用LLM分类 | False |
LLM_MAX_TOKENS |
单次回复最大输出token | 96 |
LLM_TIMEOUT_SECONDS |
LLM超时秒数 | 20 |
ENABLE_THINKING |
是否开启思考模式 | False |
RECENT_WINDOW |
上下文最近消息条数 | 4 |
SUMMARY_MAX_CHARS |
历史摘要字符上限 | 120 |
FACTS_MAX_CHARS |
结构化要点字符上限 | 160 |
PRICE_FLOOR |
绝对底价(元,0为不启用) | 0 |
PRICE_FLOOR_RATIO |
相对底价比例(相对标价) | 0.85 |
PRICE_CONCESSION_STEP |
每轮让步比例 | 0.03 |
| 优化项 | 节省比例 |
|---|---|
| 对话摘要 | 63.5% |
| 商品摘要 | 45.6% |
| 结构化Prompt | 36.5% |
| 总体节省 | 50-70% |
- 常见闲鱼消息:100%
- 整体消息:60-70%
- 规则回复:<100ms
- LLM回复:2-5s
- 平均响应:1-2s
卖家发送特定关键词(默认为"。")可切换人工模式:
# 配置切换关键词
TOGGLE_KEYWORDS=。
MANUAL_MODE_TIMEOUT=3600 # 人工模式超时时间(秒)启用模拟人工输入延迟:
SIMULATE_HUMAN_TYPING=True创建自定义Agent:
from agent.responder import Responder
class CustomResponder(Responder):
def generate(self, messages, **kwargs):
# 自定义逻辑
return super().generate(messages, **kwargs)-
Token获取失败
- 检查Cookie是否有效
- 检查网络连接
- 查看日志中的错误信息
-
WebSocket连接断开
- 检查心跳配置
- 检查网络稳定性
- 查看自动重连日志
-
LLM调用失败
- 检查API_KEY是否正确
- 检查API配额
- 查看错误日志
-
规则不生效
- 检查规则格式
- 检查规则优先级
- 查看规则加载日志
# 查看实时日志
tail -f logs/app.log
# 查看错误日志
grep ERROR logs/app.log欢迎贡献代码、报告问题或提出建议!
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
详见 贡献指南
本项目采用 MIT 许可证 - 详见 LICENSE 文件
感谢以下项目和技术的支持:
- OpenAI API - LLM接口
- 阿里云DashScope - 通义千问API
- Loguru - 日志库
- websockets - WebSocket库
- 项目主页:https://github.com/yourusername/XianyuAutoAgent
- 问题反馈:https://github.com/yourusername/XianyuAutoAgent/issues
- 邮箱:your.email@example.com
⭐ 如果这个项目对您有帮助,请给一个Star支持一下!⭐
Made with ❤️ by XianyuAutoAgent Team