21K 行代码实现一个生产级 AI Agent 框架 — CountBot 架构设计与技术解析 | 今日正式开源

21K 行代码实现一个生产级 AI Agent 框架 — CountBot 架构设计与技术解析 | 今日正式开源

CountBot 是一个轻量级、可扩展的 AI Agent 框架,专为中文用户和国内大模型优化。今天(2026.2.21)正式开源。

GitHub:https://github.com/countbot-ai/CountBot

桌面版下载:https://github.com/countbot-ai/CountBot/releases(支持 Windows / macOS / Linux)

在这里插入图片描述

一、项目背景

做 AI Agent 的框架不少,但真正适合个人用户的不多。大多数框架面向企业场景,代码量动辄几十万行,配置复杂,对中文用户和国产大模型的支持也不够友好。

CountBot 的目标很明确:用最少的代码,做一个功能完整、开箱即用、中文优先的个人 AI Agent。

最终成果:约 21,000 行 Python 代码,涵盖了记忆系统、多渠道接入、技能插件、消息队列、安全认证等完整的 Agent 基础设施。


二、架构设计

2.1 整体架构

countbot/ ├── backend/ # 后端核心(~21K 行) │ ├── modules/ │ │ ├── agent/ # Agent 核心(ReAct 循环、记忆、上下文) │ │ ├── messaging/ # 消息队列(优先级调度、令牌桶限流) │ │ ├── cron/ # Cron 调度器(精确按需唤醒) │ │ ├── auth/ # 安全认证(渐进式安全模型) │ │ ├── channels/ # 渠道管理(飞书/钉钉/QQ/Telegram) │ │ ├── providers/ # LLM 提供商(基于 LiteLLM) │ │ └── tools/ # 工具系统(13 个内置工具) ├── frontend/ # 前端(Vue 3 + TypeScript) ├── skills/ # 技能插件(10 种) └── docs/ # 完整文档(11 篇) 

模块化设计,每个模块职责清晰,耦合度低。新增 LLM 提供商、消息渠道、工具或技能,只需在对应目录下添加文件。

2.2 Agent 核心:ReAct 循环

Agent 的核心是一个标准的 ReAct(Reasoning + Acting)循环:

  1. 接收用户消息
  2. 构建上下文(系统提示 + 记忆 + 对话历史 + 工具描述)
  3. 调用 LLM 推理
  4. 如果 LLM 返回工具调用 → 执行工具 → 将结果反馈给 LLM → 继续循环
  5. 如果 LLM 返回文本 → 输出给用户

关键设计:上下文构建时会自动进行滚动压缩,当对话历史超出窗口时,早期对话会被 LLM 总结为摘要,大幅降低 Token 消耗。

2.3 智能记忆系统

这是 CountBot 最核心的差异化特性。记忆系统分为两层:

短期记忆(对话上下文):

  • 滚动窗口内的完整对话
  • 超出窗口时自动压缩为摘要

长期记忆(持久化存储):

  • LLM 自动判断何时需要记忆
  • 通过 memory_write 工具写入
  • 通过 memory_search 关键词检索
  • 行式文件存储,简单可靠
# 记忆系统的工作流程 用户:"我叫张三,住在北京,喜欢吃火锅"# → LLM 判断这是重要信息 → 自动调用 memory_write 存储# 三天后... 用户:"帮我推荐附近的餐厅"# → LLM 自动调用 memory_search("用户偏好") → 检索到"喜欢火锅"# → 结合用户地址"北京" → 推荐北京的火锅店

2.4 渐进式安全模型

这个设计我个人比较满意。核心思路是:安全等级随访问距离递增。

  • 本地访问(127.0.0.1):零摩擦,直接使用。个人电脑上用,没必要每次输密码。
  • 远程访问(192.168.x.x):首次访问自动引导设置密码,后续需要登录。

API 密钥使用 Fernet 对称加密存储在 SQLite 中,运行时自动解密。命令执行有沙箱保护,包括工作空间隔离、路径穿越检测、空字节注入阻断。

2.5 Cron 调度器:精确按需唤醒

没有用传统的每秒轮询方式,而是计算所有启用任务的下次执行时间,取最近的一个,精确 sleep 到那个时刻:

next_wake =min([job.next_run for job in enabled_jobs])await asyncio.sleep((next_wake - now).total_seconds())

配合信号量控制并发、超时保护、独立 Session、SQLite 锁重试,是一个生产级的调度实现。

2.6 消息队列

四级优先级调度、消息去重、死信处理。令牌桶算法做限流,按用户维度控制。对于多渠道同时接入的场景,这套队列系统保证了消息处理的可靠性。


三、技能插件系统

CountBot 内置了 10 个技能插件,覆盖日常使用的主要场景:

技能说明是否需要配置
百度搜索网页搜索、百科、AI 智能生成需要 API Key
高德地图路线规划、POI 搜索需要 API Key
邮件管理QQ/163 邮箱收发需要授权码
图片分析智谱/千问视觉模型需要 API Key
图片生成ModelScope 文生图需要 API Token
天气查询wttr.in 全球天气无需配置
新闻聚合中文新闻 + AI 资讯无需配置
定时任务聊天式创建管理无需配置
网页设计HTML 生成 + Cloudflare 部署需要 API Token
浏览器自动化网页操作、截图、数据提取需手动安装

技能插件的设计是松耦合的,每个技能是一个独立目录,包含配置文件和脚本,不影响核心代码。


四、国产大模型适配

通过 LiteLLM 统一接口层,CountBot 兼容 OpenAI / Anthropic / Gemini 协议,原生支持:

国产大模型: 智谱 AI(GLM-5、免费的 GLM-4.7-Flash)、千问(Qwen3.5-Plus)、Moonshot(Kimi K2.5)、MiniMax(M2.5)、DeepSeek、豆包、文心、混元、零一万物、百川

国际大模型: OpenAI、Anthropic、Gemini、Groq、Mistral 等

本地部署: Ollama、vLLM、LM Studio

零成本上手方案: 注册智谱 AI → 获取免费 API Key → 在 CountBot 设置页面填入 → 开始使用。


五、多渠道接入

渠道连接方式状态
Web UI内置✅ 可用
飞书WebSocket 长连接✅ 可用
钉钉Stream 模式✅ 可用
QQ官方 SDK✅ 可用
TelegramLong Polling✅ 可用
微信公众号 API🔜 即将上线
DiscordGateway🔜 即将上线

所有渠道共享同一套记忆系统,在飞书上聊的内容,切到 QQ 上 AI 也记得。


六、快速开始

方式一:Python 运行

git clone https://github.com/countbot-ai/countbot.git cd countbot pip install -r requirements.txt python start_app.py 

方式二:下载桌面版

前往 https://github.com/countbot-ai/CountBot/releases 下载对应平台的安装包,支持 Windows、macOS、Linux。

启动后访问 http://localhost:8000,在设置页面配置 LLM 提供商即可。全 Web 界面管理,不需要编辑任何配置文件。


七、总结

CountBot 的定位很清晰:一个为个人用户设计的、轻量的、中文优先的 AI Agent 框架。

  • 21K 行代码,易读易扩展
  • 智能记忆 + 主动问候,不只是工具,更像伙伴
  • 国产大模型深度适配,零成本可上手
  • 多渠道统一,一套代码服务所有平台
  • MIT 协议,完全开源

项目今天正式开源,欢迎 Star、Fork、Issue、PR。

GitHub:https://github.com/countbot-ai/CountBot

Read more

MySQL 在 CentOS 7 环境下的安装教程

MySQL 在 CentOS 7 环境下的安装教程

🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习Mysql的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更多人哦 目录 1. 卸载现有的 MariaDB/MySQL 环境 步骤 1: 检查 MariaDB 服务 步骤 2: 卸载 MariaDB 或 MySQL 2. 检查系统中已安装的 MySQL 包 3. 获取 MySQL 官方 YUM 源 步骤 1: 下载 MySQL YUM 源 RPM 包 步骤 2: 安装 MySQL YUM 源

By Ne0inhk
[特殊字符]颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发论文检索MCP Server!

[特殊字符]颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发论文检索MCP Server!

🔥🔥🔥本篇笔记所对应的视频:🚀颠覆MCP!Open WebUI新技术mcpo横空出世!支持ollama!轻松支持各种MCP Server!Cline+Claude3.7轻松开发MCP服务_哔哩哔哩_bilibili Open WebUI 的 MCPo 项目:将 MCP 工具无缝集成到 OpenAPI 的创新解决方案 随着人工智能工具和模型的快速发展,如何高效、安全地将这些工具集成到标准化的 API 接口中成为了开发者面临的重要挑战。Open WebUI 的 MCPo 项目(Model Context Protocol-to-OpenAPI Proxy Server)正是为了解决这一问题而设计的。本文将带您深入了解 MCPo 的功能、优势及其对开发者生态的影响。 什么是 MCPo? MCPo 是一个简单、可靠的代理服务器,能够将任何基于 MCP 协议的工具转换为兼容

By Ne0inhk