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

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

玄同 765

大语言模型 (LLM) 开发工程师 | 中国传媒大学 · 数字媒体技术(智能交互与游戏设计)

ZEEKLOG · 个人主页 | GitHub · Follow


关于作者

  • 深耕领域:大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调
  • 技术栈:Python | RAG (LangChain / Dify + Milvus) | FastAPI + Docker
  • 工程能力:专注模型工程化部署、知识库构建与优化,擅长全流程解决方案
「让 AI 交互更智能,让技术落地更高效」
欢迎技术探讨与项目合作,解锁大模型与智能交互的无限可能!

FinchBot (雀翎) — 当 AI 说"让我想办法"而不是"我不会"

FinchBot Logo

基于 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.2LangGraph v1.0,FinchBot 赋予智能体真正的自主性:

  1. 能力自扩展 — Agent 遇到能力边界时,可使用内置工具配置 MCP、创建技能
  2. 任务自调度 — Agent 可自主设定后台任务、定时执行,不阻塞对话
  3. 记忆自管理 — Agent 可自主记忆、检索、遗忘,Agentic RAG + 加权 RRF 混合检索,智能召回
  4. 行为自进化 — 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 -rfformatshutdown 等危险命令
工具注册机制✅ 已实现只有注册的工具可被调用

理念:给智能体解决问题的自由,但在明确的边界内。


核心组件

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特点
1Tavily需要质量最佳,专为 AI 优化,深度搜索
2Brave Search需要免费额度大,隐私友好
3DuckDuckGo无需始终可用,零配置
会话管理

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 会话启动和停止

工作流程

  1. Agent 在对话时自动启动心跳服务
  2. 每隔指定时间检查 HEARTBEAT.md 文件
  3. 如果有内容,通过 LLM 决定是否执行
  4. LLM 返回 run 则执行任务,返回 skip 则等待下次检查

使用示例

用户: 帮我监控股票价格,跌破 100 元时通知我 Agent: 好的,我会在 HEARTBEAT.md 中记录这个任务... 心跳服务会定期检查股票价格 当条件满足时会主动通知你 

3. 记忆自管理:Agentic RAG + 加权 RRF 混合检索

FinchBot 实现了先进的双层记忆架构,让智能体能够自主记忆、检索和遗忘。

Agentic RAG 优势
对比维度传统 RAGAgentic 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.mdAgent 行为配置默认语言、响应风格等
提示词构建流程

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 包含

  1. MCP 服务器状态 — 已配置的服务器列表、启用/禁用状态
  2. MCP 工具列表 — 按服务器分组的可用工具
  3. 通道配置 — LangBot 连接状态
  4. 扩展指南 — 如何添加新的 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 等扩展

支持平台

QQ

微信

飞书

钉钉

Discord

Telegram

Slack

FinchBot
Agent 核心

LangBot
平台层

# 安装 LangBot uvx langbot # 访问 WebUI http://localhost:5300# 配置你的平台并连接到 FinchBot

更多详情请参阅 LangBot 文档


链接


如果对你有帮助,请给个 Star⭐,支持一下!

Read more

Spring Boot 整合 Nacos 配置中心(动态配置刷新 + 多环境配置)

你想要掌握 Spring Boot 项目如何整合 Nacos 配置中心,核心实现配置动态刷新(修改 Nacos 配置无需重启服务)和多环境配置管理(区分开发 / 测试 / 生产环境),这篇教程会从「环境准备→代码编写→测试验证」全程实操,基于最新稳定版本,新手也能一步到位。 前置准备 1. 环境要求 * JDK 8+(推荐 1.8) * Maven 3.6+ * Nacos 2.x 稳定版(如 2.3.0/2.4.0,已启动并可访问控制台) * Spring Boot 2.7.x(和

By Ne0inhk
基于神经网络的学生学习情况分析系统-hadoop+django

基于神经网络的学生学习情况分析系统-hadoop+django

1. 开发语言:Python 2. 框架:django 3. Python版本:python3.8 4. 数据库:mysql 5.7 5. 数据库工具:Navicat12 6. 开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 学习数据 期末成绩预测 看板展示 摘要 系统基于B/S开发模式,采用Python语言进行开发,借助Django框架搭建系统架构,保证了系统的稳定性和可扩展性。同时,运用长短期记忆网络(LSTM)算法,对学生学习数据进行深入分析和挖掘。系统功能多样,管理员能够对用户信息进行全面管理,包括用户的注册、登录和权限设置等。可以对学生的学习数据进行收集、整理和分析,涵盖课堂表现、作业完成情况等。并且能够通过LSTM模型对学生的期末成绩进行科学预测,为教学决策提供有力支持。该系统的应用,

By Ne0inhk
Flutter 组件 heart 适配鸿蒙 HarmonyOS 实战:分布式心跳监控,构建全场景保活检测与链路哨兵架构

Flutter 组件 heart 适配鸿蒙 HarmonyOS 实战:分布式心跳监控,构建全场景保活检测与链路哨兵架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 heart 适配鸿蒙 HarmonyOS 实战:分布式心跳监控,构建全场景保活检测与链路哨兵架构 前言 在鸿蒙(OpenHarmony)生态迈向万物智联、涉及海量传感器节点通信、分布式长连接保活及实时状态同步的背景下,如何确保终端设备在弱网、休眠或异常断电场景下仍能被母座感知,已成为决定系统可用性的“生命信标”。在鸿蒙设备这类强调分布式软总线协同与严苛电源管理的环境下,如果应用依然依赖基础的 HTTP 定时轮询执行状态探测,由于由于 CPU 频繁唤醒带来的功耗负担及无状态协议的连接开销,极易由于由于心跳风暴导致设备续航崩穿或大规模误判掉线。 我们需要一种能够实现毫秒级超时检测、支持异步回调闭环且具备高性能状态机控制的心跳监控方案。 heart 为 Flutter 开发者引入了轻量级且工业标准的“心搏”治理范式。它通过对 Ping-Pong 交互的时序解构,将复杂的超时重试与状态翻转逻辑封装为声明式的配置。在适配到鸿蒙 HarmonyO

By Ne0inhk
Android 蓝牙 BLE 扫描 Native 层架构与扫描流程剖析

Android 蓝牙 BLE 扫描 Native 层架构与扫描流程剖析

博主简介 byte轻骑兵,现就职于国内知名科技企业,专注于嵌入式系统研发,深耕 Android、Linux、RTOS、通信协议、AIoT、物联网及 C/C++ 等领域。乐于技术分享与交流,欢迎关注互动! 📌 主页与联系方式ZEEKLOG:https://blog.ZEEKLOG.net/weixin_37800531知乎:https://www.zhihu.com/people/38-72-36-20-51微信公众号:嵌入式硬核研究所邮箱:[email protected](技术咨询或合作请备注需求) ⚠️ 版权声明 本文为原创内容,未经授权禁止转载。商业合作或内容授权请联系邮箱并备注来意。 本文基于 Android 蓝牙源码中 BLE 扫描相关的 Native 层代码,以scanInitializeNative为入口,系统梳理 BLE 扫描从 JNI

By Ne0inhk