Skip to content

haitunpro/XianyuAutoAgent

Repository files navigation

XianyuAutoAgent

Python License Status

闲鱼自动回复机器人 - 智能客服解决方案

快速开始功能特性架构设计文档


📖 项目简介

XianyuAutoAgent 是一个基于大语言模型的闲鱼自动回复机器人,通过智能对话系统为卖家提供24小时自动客服服务。项目采用模块化设计,支持规则引擎、意图识别、多角色回复等功能,并针对token使用进行了深度优化。

核心优势

  • 🚀 高性能:规则引擎预处理,60-70%的消息零token成本处理
  • 💰 低成本:通过摘要和结构化prompt,节省50-70%的token使用
  • 🎯 高准确:智能意图识别,多角色专业回复
  • 🔧 易扩展:模块化设计,支持自定义规则和Agent
  • 📊 可监控:完整的统计和日志系统

✨ 功能特性

1. 智能对话系统

  • 意图识别:自动识别用户意图(价格、技术、默认、不回复)
  • 多角色回复:价格Agent、技术Agent、默认Agent
  • 上下文管理:SQLite存储对话历史,支持长期记忆
  • 人工接管:支持切换到人工模式

2. 规则引擎

  • 关键词匹配:支持包含、等于、正则、长度等多种匹配方式
  • 灵活动作:支持直接回复、路由、阻止、不回复等动作
  • 热加载:规则修改无需重启服务
  • 优先级控制:规则按优先级排序执行

3. Token优化

  • 对话摘要:将对话历史压缩为结构化摘要,节省60-80% token
  • 商品摘要:提取关键特性,节省45-70% token
  • 结构化Prompt:精简格式,节省30-50% token
  • 规则预处理:60-70%的消息零token成本处理

4. 协议支持

  • WebSocket连接:实时接收和发送消息
  • 消息加密:支持消息加密和解密
  • 心跳管理:自动维护连接状态
  • Token刷新:自动刷新token和cookie

5. 监控统计

  • 实时日志:详细的运行日志
  • 统计数据: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

安装步骤

  1. 克隆项目
git clone https://github.com/yourusername/XianyuAutoAgent.git
cd XianyuAutoAgent
  1. 安装依赖
pip install -r requirements.txt
  1. 配置环境变量

创建 .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
  1. 获取Cookie

登录闲鱼网页版,从浏览器开发者工具中获取Cookie,特别是以下字段:

  • unb: 用户ID
  • cookie2: 会话标识
  • _tb_token_: 安全令牌
  1. 启动服务
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": "自定义回复内容"
}

Prompt配置

编辑 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

📊 性能指标

Token优化效果

优化项 节省比例
对话摘要 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

创建自定义Agent:

from agent.responder import Responder

class CustomResponder(Responder):
    def generate(self, messages, **kwargs):
        # 自定义逻辑
        return super().generate(messages, **kwargs)

🐛 故障排查

常见问题

  1. Token获取失败

    • 检查Cookie是否有效
    • 检查网络连接
    • 查看日志中的错误信息
  2. WebSocket连接断开

    • 检查心跳配置
    • 检查网络稳定性
    • 查看自动重连日志
  3. LLM调用失败

    • 检查API_KEY是否正确
    • 检查API配额
    • 查看错误日志
  4. 规则不生效

    • 检查规则格式
    • 检查规则优先级
    • 查看规则加载日志

日志查看

# 查看实时日志
tail -f logs/app.log

# 查看错误日志
grep ERROR logs/app.log

🤝 贡献指南

欢迎贡献代码、报告问题或提出建议!

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

详见 贡献指南


📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件


🙏 致谢

感谢以下项目和技术的支持:


📞 联系方式


⭐ 如果这个项目对您有帮助,请给一个Star支持一下!⭐

Made with ❤️ by XianyuAutoAgent Team

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors