这是基于wechatferry开发的微信机器人,虽然使用的都是wechaty的API
。该项目充分利用了function calling
功能,实现了联网搜索、PDF/网页阅读、历史记录管理等多项功能。
- 🔍 智能搜索: 使用SearXNG搜索引擎实现联网搜索
- 📄 文档阅读: 支持网页的内容提取和分析
- 💬 上下文管理:
- 自动管理对话历史
- 支持群聊和私聊
- 历史记录自动归档和清理
- 🎭 角色切换: 通过system_prompts文件夹配置多种对话角色
- 📊 状态管理: 自动保存和恢复会话状态
- 🔄 自动重试: 连接失败时自动重试机制
先克隆仓库。
git clone https://github.com/zjy1412/wechatyferry-bot.git
没有安装node.js
的可以去这里安装。
npm install
另外需要使用3.9.10.27这个版本的微信。(不是很推荐使用大号,请始终知晓有封号风险)
先填写config.json
。其中openai
里可以选择使用任何提供openai格式的具有funtion calling
功能的大语言模型,我个人测试的时候使用的是deepseek
(想试用nextchat的插件的时候竟然只支持openai
的模型,明明只要有funtion calling
就能用插件了)
searchEngineURL
处则填写searxng
的URL
,可以到这里去寻找网址,也可以选择自己部署。
{
"openai": {
"model": "",
"baseURL": "",
"apiKey": ""
},
"maxHistoryLength": 5,
"searchEngineURL": "",
"archiveExpirationTime": 86400000,
"features": {
"searchEnabled": true,
"urlReaderEnabled": true,
"chatHistoryEnabled": true,
"newsEnabled": true
}
}
配置完后登录微信,使用下面的指令即可启动。
node index.js
差点忘了,使用的一个库不知道为什么有测试没删导致报错,你可以根据报错指引去注释或删掉那个if语句。
你可以在system_prompts
文件夹下添加你自己的提示词,然后对机器人发送提示词的名字就可以切换提示词了。
搜索和读取URL的功能则是根据你说话的内容触发的,因为我的实现相当粗暴,所以请小心使用,注意token消耗。
配置文件config.json
支持以下选项:
- OpenAI配置
- model: 使用的模型名称,支持任何兼容OpenAI API的模型
- baseURL: API接口地址
- apiKey: API访问密钥
- 系统配置
- maxHistoryLength: 每个会话保留的最大历史消息数
- searchEngineURL: SearXNG搜索引擎的URL地址
- archiveExpirationTime: 历史记录归档的过期时间(毫秒)
- 功能开关
- searchEnabled: 启用/禁用网络搜索功能
- urlReaderEnabled: 启用/禁用URL内容读取功能
- chatHistoryEnabled: 启用/禁用聊天历史管理
- newsEnabled: 启用/禁用新闻功能