fount
为想象力赋予声音:模块化可编程的 AI Agent 运行时平台,支持多 AI 服务、多端接入(IDE
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为想象力赋予声音:模块化可编程的 AI Agent 运行时平台,支持多 AI 服务、多端接入(IDE
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:白天,你对着电脑里的"ZL-31"助手说"帮我把上周的会议纪要整理成报告",它立刻生成了 HTML 文件拖入文件夹;夜晚,你想和 AI 角色聊聊今天的心情,它又能切换到情感陪伴模式,播放你喜欢的背景音乐。两个场景,来自同一个平台——这就是 fount 正在做的事情。
fount(读作 /faʊnt/,全小写)是由 GitHub 用户 steve02081504 于 2024 年 9 月开源的模块化 AI Agent 运行时平台。与其说它是一个聊天工具,不如说它是一个可编程的、可扩展的、标准化的人工智能交互框架。作者将"fount"比作"喷泉"——水源(AI 能力)从一处涌出,通过不同的管道(模块/Parts)流向不同场景,既可以是高效的办公助手,也可以是温暖的情感陪伴者。
截至 2026 年 6 月,该项目已积累 705 颗 GitHub Stars,56 个 Fork,吸引了全球 20+ 种语言的社区用户,创建了 Telegram 电报群(t.me/GentianAphrodite)供开发者交流。与 SillyTavern、OpenClaw 等同类项目相比,fount 的差异化在于它的架构理念:不是简单地在 UI 上套一层提示词,而是从底层重新定义了 Agent 的构建方式。
fount 的核心概念是Part(部件)。整个系统由动态加载的 Part 构成,每种 Part 承担不同职责:
这种设计的精妙之处在于:Shells 负责"怎么显示",Chars 负责"是谁",Plugins 负责"能做什么"——三者完全解耦,可以自由组合。你可以把自己的 AI 角色导出为一个文件,分享给同事,对方只需要把文件拖入对应目录,fount 就能自动识别并加载,无需任何配置。
fount 的后端基于 Deno(TypeScript/JavaScript 运行时),结合 Express 进行 HTTP 路由。项目采用了"无锁定依赖"(No Lock Files)策略,所有导入直接从 URL 拉取(通过 deno.json 管理),确保依赖永远是最新的。
运行时架构分为两层:
src/server/):Express 服务器,负责 Parts 的生命周期管理、API 路由、认证鉴权。src/public/parts/):具体功能实现。Parts 的加载由 parts_loader.mjs 管理,是一个完全动态的过程——用户只需要在对应目录下放置新文件,服务器自动识别并加载,无需重启(部分需要 fount reboot)。代码总量约 8162 KB,JavaScript/TypeScript 代码分布在 src/(849 个文件)、src/public/(655 个 Part 文件)以及 default/ 模板目录中。项目同时维护了 13 种语言的本地化文件(zh-CN、ja-JP、ko-KR、de-DE、fr-FR 等),国际化程度极高。
生产力的维度:fount 支持实时代码执行——AI 生成的代码块不是静态文字,而是可运行的活代码。支持 C/C++/Rust/Python/JavaScript 等多语言,能直接显示 stdout 输出,甚至展示编译后的 ASM 反汇编结果。配合 IDE 集成插件,AI 能在你写代码时提供上下文感知的建议,类似于 GitHub Copilot 的体验,但底层逻辑完全可控。用户还可以通过拖拽对话气泡直接生成独立的 HTML 报告,适合快速整理会议记录或技术文档。
情感陪伴的维度:内置多角色群聊(Group Chat)功能,多个 AI 角色可以同时参与同一个对话,仿佛在举办一场圆桌讨论。用户可以选择 30+ 精美的预设主题,或自定义配色,打造专属的视觉体验。通过 Telegram/Discord Bot Shell,AI 角色可以直接融入社交群组,成为真正的"数字伙伴"。
浏览器集成是 fount 最有想象力的功能之一:内置浏览器插件让 AI 能够"看到"当前网页的内容,并执行 DOM 操作。你可以对 AI 说:"帮我把这个页面背景色改成护眼的深色。"——这不是比喻,而是真实可用的功能。
fount 提供了三阶段 Dockerfile(terser 压缩 JS → minify 压缩 HTML/CSS/SVG → 最终运行时镜像),Dockerfile 末尾会自动执行 run.sh init 安装依赖,镜像大小也通过多层压缩得到了控制。docker-compose.yml 仅需挂载 data 和 node_modules 两个卷即可完整运行。
部署后的配置同样简洁:只需在 .env 中填入一个 AI 服务商的 API Key(支持 OpenAI、Claude、Gemini 等),系统会通过默认角色 ZL-31 以对话引导的方式逐步完成剩余配置——不需要阅读任何文档,也不需要懂技术。这也是 fount 与 SillyTavern 等项目拉开差距的地方:后者的配置需要用户自行查阅 Wiki,而 fount 做到了"零门槛上手"。
图1:fount 仓库封面图

图2:fount 图标
fount 也有它需要正视的局限性。首先,学习曲线并不平坦——虽然默认角色降低了上手门槛,但想要深度自定义角色逻辑(比如编写 Plugin、开发新的 ServiceSource),仍然需要 JavaScript/TypeScript 编程能力。其次,社区 Part 生态的安全性是一个隐患:作者在 README 中明确提到"某些社区 Part 可能包含恶意代码",用户在使用第三方 Part 时需要自行甄别。此外,作为一个相对新兴的项目,fount 的文档主要依赖社区贡献的教程(中文教程参见 fount-Guide-for-dummies),官方文档的深度和系统性仍有提升空间。
最后需要注意的是,fount 采用"无锁定依赖"策略,每次运行都会从 URL 拉取最新版本的 npm 包。虽然这保证了依赖始终是最新版,但也意味着构建的可重复性完全依赖上游服务的可用性——这在离线或网络受限的环境中可能造成问题。
fount 的出现折射了 AI 交互领域的一个趋势:从"聊天界面"到"Agent 平台"的范式转移。传统的 AI 聊天工具将交互限制在"一问一答"的模式里,而 fount 通过模块化架构将 AI 的能力边界大幅扩展——从代码执行到浏览器操控,从 IDE 集成到社交机器人,每个模块都是一个独立的增强维度。
从技术路线看,fount 的 Part 化设计与 LangChain 的 Tool/Agent 概念有异曲同工之妙,但 fount 更侧重于端到端的用户体验而非链式调用编排。随着 AI 模型能力的持续提升,这种"把 AI 嵌入生活每个角落"的思路,有望成为下一代人机交互的标准范式之一。