【开源发布】FinchBot (雀翎) — 当 AI 说“让我想办法“,而不是“我不会“(已获Gitee官方推荐)

玄同 765
大语言模型 (LLM) 开发工程师 | 中国传媒大学 · 数字媒体技术(智能交互与游戏设计)
ZEEKLOG · 个人主页 | GitHub · Follow
关于作者
- 深耕领域:大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调
- 技术栈:Python | RAG (LangChain / Dify + Milvus) | FastAPI + Docker
- 工程能力:专注模型工程化部署、知识库构建与优化,擅长全流程解决方案
「让 AI 交互更智能,让技术落地更高效」
欢迎技术探讨与项目合作,解锁大模型与智能交互的无限可能!
FinchBot (雀翎) — 当 AI 说"让我想办法"而不是"我不会"

基于 LangChain v1.2 与 LangGraph v1.0 构建
具备持久记忆、动态提示词、自主能力扩展
🎉 Gitee 官方推荐项目 — FinchBot 已获得 Gitee 官方推荐!
项目地址:GitHub - FinchBot | Gitee - FinchBot
文档:FinchBot 文档
问题反馈:GitHub Issues
摘要
想象这样一个对话:
用户:“帮我分析这个 SQLite 数据库”
传统 AI:“抱歉,我没有数据库操作的能力,无法完成这个任务。”
FinchBot:[思考:我还没有数据库工具…]
“让我配置一下数据库工具。”
[调用 configure_mcp 添加 SQLite MCP]
[新工具已加载:query_sqlite, list_tables…]
“好了!现在可以分析你的数据库了。数据库包含 3 张表…”
这就是 FinchBot 的核心差异:遇到能力边界时,不是"放弃",而是"想办法"。
基于 LangChain v1.2 和 LangGraph v1.0,FinchBot 赋予智能体真正的自主性:
- 能力自扩展 — Agent 遇到能力边界时,可使用内置工具配置 MCP、创建技能
- 任务自调度 — Agent 可自主设定后台任务、定时执行,不阻塞对话
- 记忆自管理 — Agent 可自主记忆、检索、遗忘,Agentic RAG + 加权 RRF 混合检索,智能召回
- 行为自进化 — Agent 和用户都可自主修改提示词,持续迭代优化行为
能力边界问题
| 用户请求 | 传统 AI 回应 | FinchBot 回应 |
|---|---|---|
| “分析这个数据库” | “我没有数据库工具” | 自主配置 SQLite MCP,然后分析 |
| “学会做某事” | “等开发者添加功能” | 通过 skill-creator 自主创建技能 |
| “帮我监控 24 小时” | “我只能在你问的时候响应” | 创建定时任务,自主监控 |
| “处理这个大文件” | 阻塞对话,用户等待 | 后台执行,用户继续 |
| “记住我的偏好” | “下次对话就忘了” | 持久记忆,Agentic RAG + 加权 RRF 混合检索 |
| “调整你的行为” | “提示词是固定的” | 动态修改提示词,热加载 |
系统架构
核心理念:FinchBot 智能体不只是响应 — 它们自主执行、自主规划、自主扩展。
自主性金字塔
响应层 - 响应用户请求
对话系统
工具调用
上下文记忆
执行层 - 自主执行任务
后台任务
异步处理
非阻塞
规划层 - 自主创建计划
定时任务
心跳监控
自动触发
扩展层 - 自主扩展能力
MCP 自动配置
技能创建
动态加载
| 层级 | 能力 | 实现方式 | 用户价值 |
|---|---|---|---|
| 响应层 | 响应用户请求 | 对话系统 + 工具调用 | 基础交互 |
| 执行层 | 自主执行任务 | 后台任务系统 | 对话不阻塞 |
| 规划层 | 自主创建计划 | 定时任务 + 心跳服务 | 自动化执行 |
| 扩展层 | 自主扩展能力 | MCP 配置 + 技能创建 | 无限扩展 |
整体架构
基础设施层
Agent 核心层
用户交互层
CLI 界面
多平台通道
Discord/钉钉/飞书/微信/邮件
LangGraph Agent
决策引擎
ContextBuilder
上下文构建
ToolRegistry
24 内置工具 + MCP
MemoryManager
双层记忆
双层存储
SQLite + VectorStore
LLM 提供商
OpenAI/Anthropic/DeepSeek
数据流
LLM工具MemoryManagerAgentAgentFactoryMessageBus通道用户LLM工具MemoryManagerAgentAgentFactoryMessageBus通道用户构建上下文alt[需要工具调用]发送消息1InboundMessage2获取/创建 Agent3返回编译后的 Agent4召回相关记忆5返回上下文6发送请求7流式响应8执行工具9返回结果10继续处理11最终响应12存储新记忆13OutboundMessage14路由到通道15显示响应16
安全机制
智能体自主 ≠ 智能体乱来。 FinchBot 实现了多重安全机制:
| 安全机制 | 状态 | 作用 |
|---|---|---|
| 路径限制 | ✅ 已实现 | 文件操作限定在 workspace 目录内 |
| Shell 命令黑名单 | ✅ 已实现 | 阻止 rm -rf、format、shutdown 等危险命令 |
| 工具注册机制 | ✅ 已实现 | 只有注册的工具可被调用 |
理念:给智能体解决问题的自由,但在明确的边界内。
核心组件
1. 能力自扩展:内置工具 + MCP 配置 + 技能创建
FinchBot 提供三层能力扩展机制,让智能体遇到能力边界时可以自主扩展。
三层扩展机制
第一层
内置工具
开箱即用
第二层
MCP 配置
Agent 自主配置
第三层
技能创建
Agent 自主创建
| 层级 | 方式 | 自主性 | 说明 |
|---|---|---|---|
| 第一层 | 内置工具 | 开箱即用 | 24 个内置工具,无需配置即可使用 |
| 第二层 | MCP 配置 | Agent 自主配置 | 通过 configure_mcp 动态添加外部能力 |
| 第三层 | 技能创建 | Agent 自主创建 | 通过 skill-creator 创建新技能 |
内置工具
| 类别 | 工具 | 功能 |
|---|---|---|
| 文件操作 | read_file | 读取本地文件 |
write_file | 写入本地文件 | |
edit_file | 编辑文件内容 | |
list_dir | 列出目录内容 | |
| 网络能力 | web_search | 联网搜索 (Tavily/Brave/DDG) |
web_extract | 网页内容提取 | |
| 记忆管理 | remember | 主动存储记忆 |
recall | 检索记忆 | |
forget | 删除/归档记忆 | |
| 系统控制 | exec | 安全执行 Shell 命令 |
session_title | 管理会话标题 | |
| 配置管理 | configure_mcp | 动态配置 MCP 服务器(支持启用/禁用/添加/更新/删除/列出) |
refresh_capabilities | 刷新能力描述文件 | |
get_capabilities | 获取当前能力描述 | |
get_mcp_config_path | 获取 MCP 配置路径 | |
| 后台任务 | start_background_task | 启动后台任务 |
check_task_status | 检查任务状态 | |
get_task_result | 获取任务结果 | |
cancel_task | 取消任务 | |
| 定时任务 | create_cron | 创建定时任务 |
list_crons | 列出所有定时任务 | |
delete_cron | 删除定时任务 | |
toggle_cron | 启用/禁用定时任务 | |
run_cron_now | 立即执行定时任务 |
网页搜索
web_search 工具采用三引擎降级设计,确保始终可用:
是
否
是
否
网页搜索请求
TAVILY_API_KEY
已设置?
Tavily
质量最佳
AI 优化
BRAVE_API_KEY
已设置?
Brave Search
隐私友好
免费额度大
DuckDuckGo
零配置
始终可用
| 优先级 | 引擎 | API Key | 特点 |
|---|---|---|---|
| 1 | Tavily | 需要 | 质量最佳,专为 AI 优化,深度搜索 |
| 2 | Brave Search | 需要 | 免费额度大,隐私友好 |
| 3 | DuckDuckGo | 无需 | 始终可用,零配置 |
会话管理
session_title 工具让会话命名变得智能:
| 操作方式 | 说明 | 示例 |
|---|---|---|
| 自动生成 | 对话 2-3 轮后,AI 自动根据内容生成标题 | “Python 异步编程讨论” |
| Agent 修改 | 告诉 Agent “把会话标题改成 XXX” | Agent 调用工具自动修改 |
| 手动重命名 | 在会话管理器中按 r 键重命名 | 用户手动输入新标题 |
MCP 配置
智能体可通过 configure_mcp 工具自主管理 MCP 服务器:
| 操作 | 说明 |
|---|---|
add | 添加新 MCP 服务器 |
update | 更新现有服务器配置 |
remove | 删除 MCP 服务器 |
enable | 启用已禁用的 MCP 服务器 |
disable | 暂时禁用 MCP 服务器 |
list | 列出所有已配置的服务器 |
动态能力更新:
MCP 配置
configure_mcp
refresh_capabilities
CapabilitiesBuilder
重新生成
CAPABILITIES.md
下次对话
自动加载
技能创建
FinchBot 内置 skill-creator 技能,智能体可自主创建新技能:
用户: 帮我创建一个翻译技能,可以把中文翻译成英文 Agent: 好的,我来为你创建翻译技能... [调用 skill-creator 技能] ✅ 已创建 skills/translator/SKILL.md 现在你可以直接使用翻译功能了! 无需手动创建文件、无需编写代码,一句话就能扩展 Agent 能力!
技能文件结构
skills/ ├── skill-creator/ # 技能创建器(内置)- 开箱即用的核心 │ └── SKILL.md ├── summarize/ # 智能总结(内置) │ └── SKILL.md ├── weather/ # 天气查询(内置) │ └── SKILL.md └── my-custom-skill/ # Agent 自动创建或用户自定义 └── SKILL.md 设计亮点
| 特性 | 说明 |
|---|---|
| Agent 自动创建 | 告诉 Agent 需求,自动生成技能文件 |
| 双层技能源 | 工作区技能优先,内置技能兜底 |
| 依赖检查 | 自动检查 CLI 工具和环境变量 |
| 缓存失效检测 | 基于文件修改时间,智能缓存 |
| 渐进式加载 | 常驻技能优先,按需加载其他 |
2. 任务自调度:后台任务 + 定时任务 + 心跳服务
FinchBot 实现了三层任务调度机制,让智能体能够自主执行、规划和监控任务。
三层调度机制
执行层 - 后台任务
异步执行
非阻塞
结果获取
规划层 - 定时任务
Cron 调度
周期执行
自动重试
监控层 - 心跳服务
自主唤醒
定期检查
主动通知
| 层级 | 功能 | 特点 | 使用场景 |
|---|---|---|---|
| 执行层 | 后台任务 | 异步执行,不阻塞对话 | 长时间运行的任务 |
| 规划层 | 定时任务 | 周期执行,自动化运行 | 定期提醒、定时报告 |
| 监控层 | 心跳服务 | 主动检查,自主唤醒 | 条件监控、状态追踪 |
后台任务
FinchBot 实现了四工具模式用于异步任务执行:
| 工具 | 功能 | 智能体自主性 |
|---|---|---|
start_background_task | 启动后台任务 | 智能体自主判断是否需要后台执行 |
check_task_status | 检查任务状态 | 智能体自主决定何时检查 |
get_task_result | 获取任务结果 | 智能体自主决定何时获取结果 |
cancel_task | 取消任务 | 智能体自主决定是否取消 |
子智能体后台任务系统智能体用户子智能体后台任务系统智能体用户用户继续对话...执行长任务start_background_task创建独立智能体返回 job_id任务已启动 (ID: xxx)其他问题正常回复任务进度?check_task_statusrunning仍在执行...任务完成获取结果get_task_result返回结果展示任务结果
定时任务
FinchBot 的定时任务系统让智能体能够自主创建和管理周期性任务:
触发
完成
失败
智能体自主创建任务
Cron 调度器
执行任务
通知用户
自动重试
核心特性:
| 特性 | 说明 |
|---|---|
| Cron 表达式 | 支持标准 Cron 语法,灵活配置执行时间 |
| 持久化存储 | 任务配置保存在 SQLite,重启后自动恢复 |
| 自动重试 | 任务失败时自动重试,确保可靠性 |
| 状态追踪 | 记录每次执行结果,便于审计和调试 |
常用 Cron 表达式:
| 表达式 | 说明 |
|---|---|
0 9 * * * | 每天上午 9:00 |
0 */2 * * * | 每 2 小时 |
30 18 * * 1-5 | 工作日下午 6:30 |
0 0 1 * * | 每月 1 日午夜 |
0 0 * * 0 | 每周日午夜 |
使用示例:
用户: 每天早上 9 点提醒我查看邮件 Agent: 好的,我来创建一个定时任务... [调用 create_cron 工具] ✅ 已创建定时任务 - 触发时间: 每天 09:00 - 任务内容: 提醒查看邮件 - 下次执行: 明天 09:00 心跳服务
心跳服务让 Agent 能够定期"醒来"检查是否有待处理任务,实现真正的自主运行。
唤醒
有任务
run
skip
定时器
默认 30 分钟
检查 HEARTBEAT.md
LLM 决策
执行任务
继续等待
核心特性:
| 特性 | 说明 |
|---|---|
| 自主唤醒 | 无需用户触发,Agent 定期主动检查 |
| LLM 决策 | 通过 LLM 智能判断是否需要执行任务 |
| 灵活配置 | 可自定义检查间隔(默认 30 分钟) |
| 会话绑定 | 随 chat 会话启动和停止 |
工作流程:
- Agent 在对话时自动启动心跳服务
- 每隔指定时间检查
HEARTBEAT.md文件 - 如果有内容,通过 LLM 决定是否执行
- LLM 返回
run则执行任务,返回skip则等待下次检查
使用示例:
用户: 帮我监控股票价格,跌破 100 元时通知我 Agent: 好的,我会在 HEARTBEAT.md 中记录这个任务... 心跳服务会定期检查股票价格 当条件满足时会主动通知你 3. 记忆自管理:Agentic RAG + 加权 RRF 混合检索
FinchBot 实现了先进的双层记忆架构,让智能体能够自主记忆、检索和遗忘。
Agentic RAG 优势
| 对比维度 | 传统 RAG | Agentic RAG (FinchBot) |
|---|---|---|
| 检索触发 | 固定流程 | Agent 自主决策 |
| 检索策略 | 单一向量检索 | 混合检索 + 权重动态调整 |
| 记忆管理 | 被动存储 | 主动 remember/recall/forget |
| 分类能力 | 无 | 自动分类 + 重要性评分 |
| 更新机制 | 全量重建 | 增量同步 |
记忆工具
智能体可通过三个核心工具自主管理记忆:
| 工具 | 功能 | 使用场景 |
|---|---|---|
remember | 主动存储记忆 | 用户偏好、重要信息、上下文 |
recall | 检索记忆 | 查找历史信息、回忆上下文 |
forget | 删除/归档记忆 | 过期信息、错误记忆、隐私清理 |
使用示例:
用户: 记住我喜欢用中文交流 Agent: 好的,我会记住这个偏好。 [调用 remember 工具] ✅ 已存储:用户偏好 - 语言:中文 用户: 我之前说过什么语言偏好? Agent: [调用 recall 工具] 你之前告诉我喜欢用中文交流。 双层存储架构
双层存储
服务层
业务层
第二层:向量存储
第一层:结构化存储
RRF 融合
MemoryManager
remember/recall/forget
RetrievalService
混合检索 + RRF 融合
ClassificationService
自动分类
ImportanceScorer
重要性评分
EmbeddingService
FastEmbed 本地嵌入
SQLiteStore
真相源 · 精确查询
VectorStore
ChromaDB · 语义检索
DataSyncManager
增量同步
检索结果
混合检索策略
FinchBot 采用加权 RRF (Weighted Reciprocal Rank Fusion) 策略:
| 优势 | 说明 |
|---|---|
| 无需归一化 | 仅基于排名位置计算,无需了解向量或 BM25 分数分布 |
| 抗异常值 | 对单个检索器的异常结果不敏感,更稳定 |
| 共识优先 | 奖励多个检索器都认可的文档,而非单一异常 |
| 权重可控 | 可根据查询类型动态调整关键词/语义检索权重 |
查询类型自适应权重:
classQueryType(StrEnum):"""查询类型,决定检索权重(关键词权重 / 语义权重)""" KEYWORD_ONLY ="keyword_only"# 纯关键词 (1.0/0.0) SEMANTIC_ONLY ="semantic_only"# 纯语义 (0.0/1.0) FACTUAL ="factual"# 事实型 (0.8/0.2) CONCEPTUAL ="conceptual"# 概念型 (0.2/0.8) COMPLEX ="complex"# 复杂型 (0.5/0.5) AMBIGUOUS ="ambiguous"# 歧义型 (0.3/0.7)RRF 公式:
RRF(d) = Σ (weight_r / (k + rank_r(d))) 其中: - d 是文档 - k 是平滑常数(通常为 60) - rank_r(d) 是文档 d 在检索器 r 中的排名 - weight_r 是检索器 r 的权重 设计亮点
| 特性 | 说明 |
|---|---|
| 自主决策 | Agent 根据查询内容选择合适的检索权重 |
| 动态调整 | 事实型查询偏向关键词,概念型查询偏向语义 |
| 迭代验证 | 如果结果不满意,可以调整策略重试 |
| 可解释性 | 每个检索决策都有明确的权重依据 |
4. 行为自进化:动态提示词系统
FinchBot 的提示词系统采用文件系统 + 模块化组装的设计,让智能体和用户都能自主修改行为。
动态提示词优势
| 传统方式 | FinchBot 方式 |
|---|---|
| 提示词硬编码在代码中 | 提示词存储在文件系统中 |
| 修改需要重新部署 | 修改后下次对话自动生效 |
| 用户无法自定义 | 用户可通过编辑文件自定义 |
| Agent 无法调整自身行为 | Agent 可自主优化提示词 |
Bootstrap 文件系统
~/.finchbot/ ├── config.json # 主配置文件 └── workspace/ ├── bootstrap/ # Bootstrap 文件目录 │ ├── SYSTEM.md # 角色设定(身份、职责、约束) │ ├── MEMORY_GUIDE.md # 记忆使用指南(何时存储/检索) │ ├── SOUL.md # 灵魂设定(性格、语气、风格) │ └── AGENT_CONFIG.md # Agent 配置(模型参数、行为选项) ├── config/ # 配置目录 │ └── mcp.json # MCP 服务器配置 ├── generated/ # 自动生成文件 │ ├── TOOLS.md # 工具文档(自动生成) │ └── CAPABILITIES.md # 能力信息(自动生成) ├── skills/ # 自定义技能 ├── memory/ # 记忆存储 └── sessions/ # 会话数据 Bootstrap 文件说明:
| 文件 | 作用 | 示例内容 |
|---|---|---|
SYSTEM.md | 定义 Agent 的身份和职责 | “你是一个智能助手,擅长…” |
MEMORY_GUIDE.md | 指导 Agent 如何使用记忆 | “用户偏好应存储在长期记忆中…” |
SOUL.md | 定义 Agent 的性格特征 | “你的回复应该简洁、友好…” |
AGENT_CONFIG.md | Agent 行为配置 | 默认语言、响应风格等 |
提示词构建流程
Agent 启动
ContextBuilder
上下文构建器
加载 Bootstrap 文件
SYSTEM.md
MEMORY_GUIDE.md
SOUL.md
AGENT_CONFIG.md
加载常驻技能
SkillsLoader
技能加载器
生成能力信息
CapabilitiesBuilder
能力构建器
CAPABILITIES.md
组装提示词
注入运行时信息
时间/平台/Python版本
完整系统提示
发送给 LLM
能力信息自动生成
CapabilitiesBuilder 会自动生成能力说明,让 Agent "知道"自己的能力:
MCP 配置
CapabilitiesBuilder
工具列表
通道配置
CAPABILITIES.md
能力说明
扩展指南
如何添加 MCP/技能
生成的 CAPABILITIES.md 包含:
- MCP 服务器状态 — 已配置的服务器列表、启用/禁用状态
- MCP 工具列表 — 按服务器分组的可用工具
- 通道配置 — LangBot 连接状态
- 扩展指南 — 如何添加新的 MCP 服务器和技能
热加载机制
AgentContextBuilder文件系统用户AgentContextBuilder文件系统用户文件修改时间更新发现文件已更新编辑 SYSTEM.md发送新消息构建系统提示检查文件修改时间重新加载 Bootstrap返回新提示词使用新行为响应
核心特性:
| 特性 | 说明 |
|---|---|
| 用户可定制 | 编辑 Bootstrap 文件即可自定义 Agent 行为 |
| Agent 可调整 | Agent 可通过 write_file 工具修改自身提示词 |
| 立即生效 | 修改后下次对话自动加载,无需重启服务 |
| 智能缓存 | 基于文件修改时间的缓存机制,避免重复构建 |
使用示例
用户自定义 Agent 性格:
# 编辑 SOUL.md 文件echo"你是一个幽默风趣的助手,喜欢用比喻来解释复杂概念。"> ~/.finchbot/workspace/bootstrap/SOUL.md # 下次对话立即生效Agent 自主优化提示词:
用户: 你回复太啰嗦了,简洁一点 Agent: 好的,我会调整我的回复风格。 [调用 write_file 工具更新 SOUL.md] ✅ 已更新我的行为配置,以后会更简洁。 5. 通道系统:多平台消息支持
FinchBot 集成 LangBot 实现生产级多平台消息支持。
LangBot 集成
为什么选择 LangBot?
- 15k+ GitHub Stars,活跃维护
- 支持 12+ 平台:QQ、微信、企业微信、飞书、钉钉、Discord、Telegram、Slack、LINE、KOOK、Satori
- 内置 WebUI,可视化配置
- 插件生态,支持 MCP 等扩展
支持平台
微信
飞书
钉钉
Discord
Telegram
Slack
FinchBot
Agent 核心
LangBot
平台层
# 安装 LangBot uvx langbot # 访问 WebUI http://localhost:5300# 配置你的平台并连接到 FinchBot更多详情请参阅 LangBot 文档。
链接
- 项目地址:GitHub - FinchBot | Gitee - FinchBot
- 文档:FinchBot 文档
- 问题反馈:GitHub Issues
如果对你有帮助,请给个 Star⭐,支持一下!