Skip to content

Repository files navigation

🤖 MyBot

一个按“规则优先、轻量编排”思路搭建的极简AI机器人框架

Python Version License Status


✨ 核心特性

  • 🧩 高度解耦:统一的消息对象模型,实现多端一致的业务逻辑处理。
  • 🔀 规则引擎:基于前缀的极简四分支路由(普通问答搜索记忆写入记忆回顾)。
  • 🧠 长短期记忆:以追加式机制管理长期记忆,配合 JSONL 格式实现轻量级的多轮会话贯穿。
  • 🔍 智能搜索:内置 Web Search 支持(涵盖 百度 AI 搜索、DuckDuckGo、Serper)。
  • 🔌 多端接入
    • Console 调试通道(快速本地校验)
    • QQ 官方 Bot 直连(WebSocket + OpenAPI,天然穿透局域网)
    • OneBot V11 通道(完美对接 NapCatQQ 等框架部署普通 QQ 号)
  • 🤖 模型兼容:开箱即支持完整的 OpenAI 兼容 API 调用。

📂 项目结构

D:\mybot
├── README.md               # 📖 项目说明文档
├── pyproject.toml          # 📦 依赖管理与项目配置
├── .gitignore              # 🙈 Git 提交忽略规范
├── .env                    # 🔑 本地敏感环境变量(需手动创建)
├── config/                 # ⚙️ 核心配置目录存放配置文件模板
├── logs/                   # 📝 系统运行日志
├── memory/                 # 📥 Bot 自我认知的长期记忆库
├── sessions/               # 💬 历史对话缓存目录
├── sandbox/                # 🏝️ 各类练习、草稿代码及无关零散文件暂存区
├── mybot/                  # 💻 框架主源码实现
├── skills/                 # 🛠️ 预置的子功能与分支处理逻辑
├── tests/                  # 🧪 基础自动化测试套件
└── scripts/                # 📜 环境与校园网辅助监控脚本

🚀 快速启动

1. 准备配置及环境

通过内置的样例生成自己的配置文件:

cp config/config.example.json config/config.json

🔑 安全推荐: 使用项目根目录下的 .env 环境变量替代 JSON 明文写入:

MYBOT_QQ_APP_ID=你的AppID
MYBOT_QQ_SECRET=你的Secret
MYBOT_API_KEY=大模型APIKEY
MYBOT_SEARCH_API_KEY=搜索引擎APIKEY

2. 初始化工程

使用 pip 或虚拟环境安装当前工程:

pip install -e .

3. 本地 CLI 对话测试

最快的调试方式是使用本地交互模式:

mybot agent

在交互界面的测试指令参考:

  • 搜索 Python dataclass
  • 记住 我偏好简洁的回答风格
  • 回忆 回答风格
  • (直接提问任何问题...)

4. 网关部署对接 (以 QQ 为例)

配置好对应 Channel 后,即可启动网关:

# 自动读取 config.json 并拉起监听
mybot gateway

📖 进阶教程指南

🔗 1. 使用 QQ 官方 Bot 模式直连
  • QQ 开放平台 申请创建,获取 appIdsecret
  • 将配置文件 channels.qq.type 设置为 qq_official(如果仅配置 AppID/Secret,系统会自动降级推断该模式)。
  • 权限及 ID 说明: 官方机制使用 OpenID 交互而非数字 QQ 号。allowFromstartupNotify.to 请查阅终端收到的第一条消息的日志(打印为乱码字符串即 OpenID),再将其白名单化补回原文件。
🔗 2. 使用 OneBot V11 对接自己的普通 QQ
  • 根据根目录的 config/onebot.example.json 修改。
  • type 改回 onebot_v11,配合 NapCatQQ 发出的反向 WS (ws://127.0.0.1:3000) 对接即可接管日常 QQ 号对话。
🛡️ 3. 应对校园网强制踢线(心跳自动重连)

如果你部署在宿舍中并偶发“网关掉线”,可以用自带诊断工具排查:

mybot doctor

如果确定是断网引起的,可通过提供的 CLI 无头登录脚本重新认证校园网:

$env:MYBOT_CAMPUS_USERNAME = '校园网用户名'
$env:MYBOT_CAMPUS_PASSWORD = '密码'
python -m mybot campus-login

(为保障安全,不要把账密写入代码中。如有需要,可在根目录运行 .\scripts\campus_gateway_watch.ps1 实现“检测断网->自动登录->重启网关”无人值守闭环。)


🤝 参与贡献

欢迎提交 Issue 和 Pull Request,我们一起来完善这个最小化的机器人设计思路!

  • 把 channel.type 改成 onebot_v11
  • 设置 api_base 指向 NapCat 或 go-cqhttp 的 HTTP API
  • 如需启动后主动私聊问候,配置 channels.qq.startupNotify.enabled、to、message
  • 设置模型 base_url、api_key、model
  • 启动:

mybot gateway --config config/onebot.example.json

也兼容直接使用 Python:

python app.py agent python app.py gateway --config config/config.json python app.py status

路由规则

  • 以“搜索”或“search”开头: 强制搜索
  • 以“记住”或“记一下”开头: 写入长期记忆
  • 以“回忆”“回顾”“记得我什么”开头: 读取长期记忆
  • 其他内容: 普通问答

说明

  • 当前默认配置已经兼容 nanobot 风格的 agents/providers/channels/tools 结构。
  • 当前已支持子命令风格启动:mybot gateway、mybot agent、mybot status。
  • 当前已支持两种 QQ 接入:官方 QQ Bot 直连和 OneBot v11 Webhook。
  • 当 channels.qq 含有 appId/secret 且没有 apiBase 时,会默认按官方 QQ Bot 直连处理;有 apiBase 时,默认按 OneBot v11 处理。
  • 官方 QQ Bot 直连基于 qq-botpy,走官方 WebSocket + OpenAPI;当前已接入频道 @ 消息、频道私信、QQ群 @ 消息、消息列表单聊消息。
  • 在官方群聊/单聊场景,若机器人回复中包含图片链接,会自动调用官方媒体接口发送图片,并将图片归档到 managed_files/images/qq_official/
  • 官方 QQ Bot 的 allowFrom 和 startupNotify.to 使用的是官方事件中的用户标识或 openid,不是普通 QQ 号。
  • gateway 启动后支持按 channels.qq.startupNotify 配置主动发送启动问候;官方直连下未加前缀的 target 默认按 c2c openid 发送,也支持 group: 和 channel: 前缀。
  • 新增受控文件目录 managed_files/,文件管理命令只允许访问该目录,且默认禁止删除。
  • 新增技能审批机制:从 GitHub/ClawHub 下载的技能默认待审批,未审批不会生效。
  • exconfig.json 现在保留为旧配置参考文件,不作为默认启动配置。
  • 默认搜索 provider 已切到百度 AI 搜索,对应接口为 https://qianfan.baidubce.com/v2/ai_search/chat/completions。
  • 百度 AI 搜索使用 API Key 鉴权,请把 tools.web.search.apiKey 填成你的千帆 API Key,请求头使用 X-Appbuilder-Authorization: Bearer 。
  • 默认百度搜索参数使用 searchSource=baidu_search_v2、searchMode=required、resource_type_filter=web top_k=maxResults;如果 model 留空,则更接近“百度搜索”模式,如果填写模型名,则会走“智能搜索生成”。
  • 当前环境里 DuckDuckGo 直连测试超时。如果你在国内使用,优先考虑百度 AI 搜索、代理,或者其他国内可达搜索服务。
  • 运行时会额外写入 logs/audit.log,用于记录消息入口、模型完成、记忆写入、图片/视频任务等审计事件。

About

一个按“规则优先、轻量编排”思路搭建的极简AI机器人框架

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages