1. 项目概述:CountBot 的设计初衷与核心定位
在当前的AI Agent框架领域,企业级解决方案占据主导地位,但这些框架往往存在几个显著痛点:代码库庞大(通常超过10万行)、配置复杂、对中文场景支持不足。CountBot正是针对这些问题而生的解决方案,它用仅21,000行Python代码实现了完整的AI Agent功能栈,包括记忆系统、多渠道接入、技能插件等核心模块。
这个框架最突出的特点是"中文优先"设计理念。从底层的大模型适配层到上层的交互逻辑,都针对中文用户的使用习惯进行了深度优化。比如在记忆系统中特别设计了中文关键词提取算法,在渠道接入层原生支持飞书、钉钉等国内主流IM平台,这与其他主要面向英语用户的AI框架形成鲜明对比。
技术选型上,CountBot采用Python 3.10+作为主要开发语言,前端使用Vue 3+TypeScript,这种组合既保证了后端AI处理的灵活性,又能提供现代化的用户界面体验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构解析
2.1 模块化设计思想
CountBot的代码结构体现了高度的模块化设计原则,主要分为六个核心模块:
- Agent核心:包含ReAct循环实现和上下文管理
- 消息系统:处理优先级队列和限流控制
- 调度器:基于时间的任务触发机制
- 安全层:分级认证和操作防护
- 渠道适配:多平台消息收发
- 工具系统:扩展功能插件
这种架构带来的最大优势是扩展性。开发者要新增一个消息渠道(比如企业微信),只需在channels目录下添加对应的适配器,完全不需要修改核心代码。我在实际扩展测试中添加Slack支持只用了不到200行代码。
2.2 ReAct循环的工程实现
CountBot的Agent核心采用改进版的ReAct循环,其工作流程包含五个关键阶段:
- 输入预处理:对原始消息进行清洗和意图识别
- 上下文构建:动态组装系统提示词+记忆+对话历史
- LLM推理:调用配置的大模型获取响应
- 工具执行:当返回结果为工具调用时执行对应操作
- 输出处理:对最终结果进行格式化后返回
其中最具创新性的是上下文滚动压缩机制。当对话token数接近模型上限时,系统会自动:
- 保留最近3轮完整对话
- 将早期对话通过LLM生成摘要
- 用摘要替代原始内容
- 维持完整的语义连贯性
实测显示,这种方案相比简单的截断方法,在长对话场景下能降低40%以上的token消耗。
3. 关键技术实现细节
3.1 双层记忆系统
CountBot的记忆系统采用短期+长期的双层设计,其技术实现值得深入分析:
短期记忆实现方案:
- 使用双端队列(deque)存储最近对话
- 窗口大小默认为6轮对话
- 超出时触发摘要生成
- 摘要模型使用GLM-4.7-Flash(免费且效果稳定)
长期记忆存储方案:
``
