【开源发布】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

不用部署服务器,也能给前端 / 客户演示?内网穿透实战分享

不用部署服务器,也能给前端 / 客户演示?内网穿透实战分享

在日常开发中,经常会遇到一个很现实的问题:  功能已经在本地开发完成了,但前端同事、测试、客户都看不到效果。 很多人的第一反应是: 部署一套测试服务器。 但实际情况往往是 * 服务器没准备好 * 只是临时演示 * 改动频繁,反复部署很浪费时间 后来我发现,其实根本不需要部署服务器,用内网穿透就能很优雅地解决这个问题。 一、真实场景说明 场景 1:给前端联调接口 后端服务跑在本地: http://localhost:8080 问题是: * 前端在外地 * 无法访问本地接口 * 每次改接口都要重新部署 场景 2:给客户演示功能 * 新功能刚开发完 * 客户想先看看效果 * 但还没上线正式环境 这时候再去搞服务器,明显有点“杀鸡用牛刀”。 二、传统方案为什么不太合适? 对于“临时演示 / 联调”来说,都太重了。 三、解决方案:内网穿透 内网穿透的核心思路只有一句话: 把你本地的服务,

By Ne0inhk
从 XMLHttpRequest 到 Fetch API:现代前端网络请求的演进与迁移指南

从 XMLHttpRequest 到 Fetch API:现代前端网络请求的演进与迁移指南

🧑 博主简介:ZEEKLOG博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可关注公众号 “ 心海云图 ” 微信小程序搜索“历代文学”)总架构师,16年工作经验,精通Java编程,高并发设计,分布式系统架构设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。 🤝商务合作:请搜索或扫码关注微信公众号 “ 心海云图 ” 从 XMLHttpRequest 到 Fetch API:现代前端网络请求的演进与迁移指南 引言:为什么我们需要新的网络请求方案? 在前端开发领域,XMLHttpRequest (XHR) 长期统治着浏览器端的网络请求。然而,随着 Web

By Ne0inhk
玩转ClaudeCode:使用Figma-MCP编写前端代码1:1还原UI设计图

玩转ClaudeCode:使用Figma-MCP编写前端代码1:1还原UI设计图

目录 本轮目标 具体实践 一、开启 Figma 的 MCP 服务器 二、Claude Code 连接 Figma MCP 三、Claude Code 代码实现 Figma 设计稿 本轮目标 本轮目标是制作数字化大屏的一个前端组件,要求和UI设计图还原度达到1:1。 本轮目标需要我们提前准备好figma客户端,且登录帐号具有开发模式的权限(没有可以去某夕)。Claude Code 就不必多说,没有安装的同学参考我的上一篇文章《玩转ClaudeCode:ClaudeCode安装教程(Windows+Linux+MacOS)》完成安装,通过专属链接注册,可以额外领取100美金的免费使用额度。 安装教程参考:玩转ClaudeCode:ClaudeCode安装教程(Windows+Linux+MacOS)_claude code安装-ZEEKLOG博客文章浏览阅读2.5w次,点赞67次,

By Ne0inhk
Flutter 组件 ews 的适配 鸿蒙Harmony 实战 - 驾驭企业级 Exchange Web Services 协议、实现鸿蒙端政企办公同步与高安通讯隔离方案

Flutter 组件 ews 的适配 鸿蒙Harmony 实战 - 驾驭企业级 Exchange Web Services 协议、实现鸿蒙端政企办公同步与高安通讯隔离方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 ews 的适配 鸿蒙Harmony 实战 - 驾驭企业级 Exchange Web Services 协议、实现鸿蒙端政企办公同步与高安通讯隔离方案 前言 在鸿蒙(OpenHarmony)生态进军政企办公领域的过程中,与现有企业信息化基础设施的深度集成是一道必答题。即便是在全连接、分布式的今天,微软的 Exchange 服务器依然是全球无数大厂与政务系统处理邮件、日历同步的核心底座。 对于习惯了简单 http.get 的移动开发者来说,Exchange Web Services(EWS)协议由于其复杂的 SOAP 封装、繁琐的 XML 数据结构以及极其严苛的身份认证机制,往往是一块难啃的“骨头”。 ews 库为 Dart 提供了成熟的、类型安全的

By Ne0inhk