灵犀一点,应念而生
 ## fount 是什么? fount 是一个**现代化的、可扩展的 AI 智能体运行时环境**。 我们认为,**高效率的生产力工具**与**沉浸式的情感交互**并非水火不容。fount 是一座桥梁:既可在白昼助你编写繁复代码、整理会议纪要,成为高效的生产力伙伴;亦可在黑夜与你共鸣情绪、倾听心声,化作温暖的数字知己。 历经的潜心雕琢,汇聚了的热忱,以及一个拥有的鲜活社区,fount 如今已是一个成熟、稳定且不断演进的 AI 交互平台。 若你希望从零开始完成配置、搭建与入门,可参阅社区教程 [**fount 从零开始的傻瓜式指南**](https://github.com/Xiaoqiush81/fount-Guide-for-dummies)(教程为中文,非中文用户可使用浏览器翻译功能阅读)。  --- ## 🚀 效率与工程:为专业人士、开发者与极客打造 fount 将交互转化为生产力资产,一切皆可拖拽,一切皆为文件,逻辑由代码驱动。 ### 1. 无需学习,开箱即用 - 只需配置api,随后即可使用默认角色ZL-31来用对话完成组件配置、创建组件等**一切用户操作**,无需学习和上手  ### 2. 知识资产化与无缝分享 - **即时报告生成**:将对话气泡直接拖拽至文件夹,瞬间生成独立的 HTML 报告。适合快速整理技术文档、会议记录或灵感片段。  - **工作流封装与分发**:将你创建好的角色直接拖拽至桌面,生成可分享的文件。让你的 Prompt 工程和工作流逻辑轻松分发给同事或社区。  ### 3. 实时代码执行环境 不再仅仅是 Markdown 高亮。在 fount 中,角色发送的代码块是**鲜活的**。 - 支持多种语言(C/C++/Rust/Python/JS 等)的实时编译与运行。 - 直接查看 stdout 输出,甚至查看编译语言的 ASM 反汇编结果。 - 让 AI 成为你结对编程的实时验证者。  ### 4. 开发友好 fount 的项目架构设计充分考虑了开发者的习惯。 [想知道项目仓库架构吗?快来看看 DeepWiki!](https://deepwiki.com/steve02081504/fount) - **Git 驱动**:所有组件均可通过 Git 管理。 - **VSCode 集成**:项目结构清晰,配合 [AGENTS.md](../AGENTS.md) 提供的指引,你可以直接在你喜欢的 IDE 中开发、调试你的 Agent 逻辑。 --- ## 🎭 沉浸与共鸣:高保真交互体验 当工作结束,fount 提供了一种超越寻常的连接。我们摒弃了传统工具的生硬感,追求一种自然、流畅且富有深度的“高保真”交互。 - **随时随地的无缝对话** 在电脑上开启的絮语,可以在手机或平板上无缝延续。fount 让你的对话保持同步,无论身在何处,都能与你的角色紧密相连。 - **富有表现力、身临其境的聊天** fount 借由 HTML 的力量,允许角色通过富文本、图像甚至交互式元素来表达自我,让每一次对话都生动而深刻。 - **思想的聚会:原生群组聊天** 邀请多个角色加入同一场对话,见证他们之间动态且引人入胜的互动,无论是工作上的头脑风暴,还是角色间的故事演绎。  - **美观、可定制的界面** 从 30 余款令人惊叹的主题中挑选,或亲手创造属于你的色彩。fount 是你专属的画布。  - **随处可用** fount 可在 Windows、macOS、Linux 甚至 Android 上无缝运行,通过直接安装或 Docker 的灵活性来满足你的不同需求。 - **无拘无束的 AI 源集成:拥抱无限** fount 在连接 AI 源方面,提供了无与伦比的*选择*与*灵活性*。在 AI 源生成器中,自定义的 JavaScript 代码允许你连接到*任何* AI 源——OpenAI、Claude、[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=fount)、[Evolink](https://evolink.ai/?utm_source=github&utm_medium=link&utm_campaign=fount)、OpenRouter、NovelAI、Horde、Ooba、Tabby、Mistral……在流动的代码中,你可以精心设计复杂的正则表达式,调用浩如烟海的 API 库,乃至嵌入多媒体资源。fount 亦原生支持创建 API 池,以实现智能的请求路由。通信的逻辑,听凭*你*的意愿,由代码的力量来塑造。  倘若你感到迷失于角色的海洋,或是在寻觅被遗忘的故事,我们[**充满活力且友好的社区**](https://t.me/GentianAphrodite)期待你的到来。那是一个志同道合者的港湾,开发者与创作者们在此分享他们的智慧与创作。 --- ## 陪伴:超越数字的藩篱 fount 致力于将角色编织进你生活的纹理,提供超越屏幕的陪伴与支持。 - **Telegram/Discord 集成** 通过内置的 Bot Shells,将你的角色连接到 Telegram 或 Discord 社区,让他们成为鲜活的成员。   - **浏览器集成** 将角色集成到浏览器扩展中,让角色能够**看到并修改**你浏览器中的页面内容,实现真正的「与 AI 一起上网」。 你可以对你的角色说:嘿XX,帮我给这个页面换个颜色并加点装饰。  - **IDE 集成** 将角色集成到 JetBrains、neovim、Zed 等 IDE 中,让角色像 Cursor Agent 或 GitHub Copilot 一样,在编写代码时为你提供上下文感知的辅助与建议。  - **终端的宁静 (与 [fount-pwsh](https://github.com/steve02081504/fount-pwsh) 结合)** 当终端命令执行失败时,让你的角色在旁轻声提供指导,化解代码世界的孤寂。  - **无限的 Shell 扩展** 凭借些许编程技巧,你便能创造属于自己的 fount Shell,将角色的触角延伸至你所能想象的任何角落。 --- ## 创作:超越提示词的疆界 对于创作者而言,fount 提供了一条更为清晰的道路,让你的 AI 角色栩栩如生。 - **革命性的 AI 辅助创作** 用一句话描述你心中的角色,我们智能的 AI 助手便会为你生成一个完整的人设。这大大简化了初始的繁琐,让你能专注于完善和与你的创作互动。 - **代码的魔力,比你想象中更易触及** 在 fount 中,代码是一种现代魔法。在我们社区的悉心指导与 AI 的启发下,学习它出乎意料地容易。你会发现,用代码来定义角色的逻辑,可以是一种直观且易于维护的方式,创造出其回应由*你*的逻辑编织而成的角色。 - **从现成的魔法开始:模板宝库** fount 社区提供了大量预制的角色与人设模板。它们是“活的蓝图”,易于调整和定制,为你提供绝佳的起点。 - **嵌入式资源** 将图像、音频等资源直接编织进你的角色,让他们的存在更加丰满。  - **持续集成** 使用 [fount-charCI](https://github.com/marketplace/actions/fount-charci) 为你的角色开发护航,在 commit 时自动运行测试,实时汇报问题。   - **旧有兼容性** fount 拥抱过去,提供兼容模块来运行 SillyTavern 和 Risu 角色卡(尽管不支持现有角色的迁移)。 --- ## 架构:创新的基石 fount 构建于一个强大且可扩展的架构之上。后端利用 [Deno](https://deno.com/) 的安全与迅捷,并采用 [Express](https://expressjs.com/) 实现高效路由。前端则由 HTML、CSS 与 JavaScript 精心打造,提供直观且赏心悦目的界面。 ### 扩展:由万千思绪交织而成的创新织锦 在 fount 的世界里,模块化至高无上。一个丰富的组件生态系统相互交织,创造出你体验的织锦。所有这些组件都可以由用户轻松安装、扩展和定制。 - **chars (角色):** fount 的核心,个性的诞生地。 - **worlds (世界):** _远不止于传说。_ 它们是现实的沉默建筑师,可以向角色注入知识,影响其决定,甚至操纵聊天记录。 - **personas (用户人设):** _不仅仅是用户配置文件。_ 人设拥有扭曲甚至控制你的言语和感知的力量,使得真正身临其境的角色扮演成为可能。 - **shells (交互界面):** 通往 fount 灵魂的门户,将角色的触角延伸到界面之外。 - **ImportHandlers (导入处理器):** fount 的欢迎之手,弥合不同角色格式之间的差距。 - **AIsources (AI 源):** 为你的角色思想提供动力的原始力量。 - **AIsourceGenerators (AI 源生成器):** fount 的炼金术士,通过 JavaScript 的力量,提供模板和逻辑,以建立与*任何*可以想象的 AI 源的连接。  ## 安装与卸除:一场优雅的相遇与告别 ### 安装:将 fount 编织入你的世界 – _毫不费力_ > [!TIP] > > 若你希望从零开始完成配置、搭建与入门,可参阅社区教程 [**fount 从零开始的傻瓜式指南**](https://github.com/Xiaoqiush81/fount-Guide-for-dummies)(教程为中文,非中文用户可使用浏览器翻译功能阅读)。 以 fount 开启你的旅程,这是一个稳定可靠的平台。只需几次简单的点击或命令,fount 的世界便会徐徐展开。 > [!CAUTION] > > 在 fount 的世界里,角色可以自由地运行 JavaScript 命令,这赋予了它们强大的能力。因此,请您谨慎选择您所信任的角色,如同在现实生活中结交朋友一般,以保障本地文件的安全。 ### Linux/macOS/Android:Shell 的低语 – _一行命令,即刻启程_ ```bash # 若需要,定义环境变量 $FOUNT_DIR 来指定 fount 目录 INSTALLED_PACKAGES="${FOUNT_AUTO_INSTALLED_PACKAGES:-}" install_package() { _command_name="$1"; _package_list=${2:-$_command_name}; _has_sudo=""; _installed_pkg_name="" ; if command -v "$_command_name" >/dev/null 2>&1; then return 0; fi; if [ "$(id -u)" -ne 0 ] && command -v sudo >/dev/null 2>&1; then _has_sudo="sudo"; fi; for _package in $_package_list; do if command -v apt-get >/dev/null 2>&1; then $_has_sudo apt-get update -y; $_has_sudo apt-get install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v pacman >/dev/null 2>&1; then $_has_sudo pacman -Syy --noconfirm; $_has_sudo pacman -S --needed --noconfirm "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v dnf >/dev/null 2>&1; then $_has_sudo dnf install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v yum >/dev/null 2>&1; then $_has_sudo yum install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v zypper >/dev/null 2>&1; then $_has_sudo zypper install -y --no-confirm "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v apk >/dev/null 2>&1; then if [ "$(id -u)" -eq 0 ]; then apk add --update "$_package"; else $_has_sudo apk add --update "$_package"; fi; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v brew >/dev/null 2>&1; then if ! brew list --formula "$_package"; then brew install "$_package"; fi; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v pkg >/dev/null 2>&1; then pkg install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v snap >/dev/null 2>&1; then $_has_sudo snap install "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; done; if command -v "$_command_name" >/dev/null 2>&1; then case ";$FOUNT_AUTO_INSTALLED_PACKAGES;" in *";$_installed_pkg_name;"*) ;; *) if [ -z "$FOUNT_AUTO_INSTALLED_PACKAGES" ]; then FOUNT_AUTO_INSTALLED_PACKAGES="$_installed_pkg_name"; else FOUNT_AUTO_INSTALLED_PACKAGES="$FOUNT_AUTO_INSTALLED_PACKAGES;$_installed_pkg_name"; fi; ;; esac; return 0; else echo "Error: Failed to install '$_command_name' from any source." >&2; return 1; fi; } install_package "bash" "bash gnu-bash"; install_package "curl" export FOUNT_AUTO_INSTALLED_PACKAGES="$INSTALLED_PACKAGES" curl -fsSL https://steve02081504.github.io/fount/install.sh | bash . "$HOME/.profile" ``` 若你希望稍作停顿,在盛大冒险之前整理思绪(一次预演): ```bash INSTALLED_PACKAGES="${FOUNT_AUTO_INSTALLED_PACKAGES:-}" install_package() { _command_name="$1"; _package_list=${2:-$_command_name}; _has_sudo=""; _installed_pkg_name="" ; if command -v "$_command_name" >/dev/null 2>&1; then return 0; fi; if [ "$(id -u)" -ne 0 ] && command -v sudo >/dev/null 2>&1; then _has_sudo="sudo"; fi; for _package in $_package_list; do if command -v apt-get >/dev/null 2>&1; then $_has_sudo apt-get update -y; $_has_sudo apt-get install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v pacman >/dev/null 2>&1; then $_has_sudo pacman -Syy --noconfirm; $_has_sudo pacman -S --needed --noconfirm "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v dnf >/dev/null 2>&1; then $_has_sudo dnf install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v yum >/dev/null 2>&1; then $_has_sudo yum install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v zypper >/dev/null 2>&1; then $_has_sudo zypper install -y --no-confirm "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v apk >/dev/null 2>&1; then if [ "$(id -u)" -eq 0 ]; then apk add --update "$_package"; else $_has_sudo apk add --update "$_package"; fi; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v brew >/dev/null 2>&1; then if ! brew list --formula "$_package"; then brew install "$_package"; fi; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v pkg >/dev/null 2>&1; then pkg install -y "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; if command -v snap >/dev/null 2>&1; then $_has_sudo snap install "$_package"; if command -v "$_command_name" >/dev/null 2>&1; then _installed_pkg_name="$_package"; break; fi; fi; done; if command -v "$_command_name" >/dev/null 2>&1; then case ";$FOUNT_AUTO_INSTALLED_PACKAGES;" in *";$_installed_pkg_name;"*) ;; *) if [ -z "$FOUNT_AUTO_INSTALLED_PACKAGES" ]; then FOUNT_AUTO_INSTALLED_PACKAGES="$_installed_pkg_name"; else FOUNT_AUTO_INSTALLED_PACKAGES="$FOUNT_AUTO_INSTALLED_PACKAGES;$_installed_pkg_name"; fi; ;; esac; return 0; else echo "Error: Failed to install '$_command_name' from any source." >&2; return 1; fi; } install_package "bash" "bash gnu-bash"; install_package "curl" export FOUNT_AUTO_INSTALLED_PACKAGES="$INSTALLED_PACKAGES" curl -fsSL https://steve02081504.github.io/fount/install.sh | bash -s init . "$HOME/.profile" ``` ### Windows:殊途同归 – _至简之道_ - **直接且纯粹(推荐):** 从 [Releases](https://github.com/steve02081504/fount/releases) 下载 `exe` 文件并运行。 - **PowerShell 的力量:** ```powershell # 若需要,定义环境变量 $env:FOUNT_DIR 来指定 fount 目录 irm https://steve02081504.github.io/fount/install.ps1 | iex ``` 若需预演: ```powershell $scriptContent = Invoke-RestMethod https://steve02081504.github.io/fount/install.ps1 Invoke-Expression "function fountInstaller { $scriptContent }" fountInstaller init ``` ### Git 安装:为那些偏爱些许魔法的人 如果你已安装 Git,拥抱 fount 就像运行一个脚本一样简单。 - **对于 Windows:** 打开命令提示符或 PowerShell,只需双击 `run.bat`。 - **对于 Linux/macOS/Android:** 打开终端并执行 `./run.sh`。 ### Docker:拥抱容器 ```bash docker pull ghcr.io/steve02081504/fount ``` ### 删除:优雅的告别 ```bash fount remove ``` ## 遭遇阴影?不必惊慌 如果你在旅途中遇到任何困难,请联系我们。我们随时准备提供帮助,并致力于在 10 分钟到 24 小时内解决大多数问题。 - **GitHub Issues:** 通过 [GitHub Issues](https://github.com/steve02081504/fount/issues) 报告任何错误或提出新功能的建议。 - **Telegram 社区:** 加入我们[充满活力的 Telegram 社区](https://t.me/GentianAphrodite),以获得实时的支持与讨论。 你的声音终将被听到。只需重启 fount,阴影便会消散。 --- ## 徽章与链接:让创作闪耀,让世界触手可及 fount 的世界不止是文字与代码,它更是一场视觉与连接的盛宴。我们为你准备了精美的徽章和便捷的链接,让你的创作在这份光彩中熠熠生辉。 ### fount 徽章:荣耀的印记 你可以自豪地在你的仓库或任何希望展示的地方,使用这枚徽章。你可以在[此处](../imgs/)找到 fount logo 的 SVG 文件。 ```markdown [](https://github.com/topics/fount-repo) ``` [](https://github.com/topics/fount-repo) ```markdown [](https://github.com/topics/fount-character) ``` [](https://github.com/topics/fount-character) | 颜色格式 | 代码 | | :------: | :------------------: | | HEX | `#0e3c5c` | | RGB | `rgb(14, 60, 92)` | | HSL | `hsl(205, 74%, 21%)` | 你也可以使用[徽章添加器](https://steve02081504.github.io/fount/badges/),将任何shields.io的徽章带上 fount 的 logo ### 自动安装链接:指尖上的魔法 想象一下,其他用户只需轻轻一点,就能将你的创作直接安装到他们的 fount 世界中。只需将你的组件 zip 链接或 Git 仓库链接与 fount 的协议链接组合即可。 `https://steve02081504.github.io/fount/protocol?url=fount://run/shells/install/install;` + `你的组件链接` --- ## 推荐的浏览器:为了一场完美的邂逅 fount 的前端由现代 Web 技术织成,但并非所有浏览器都能与它的灵魂产生完美的共鸣。为了一场最沉静、最流畅的体验,我们推荐与 fount 的步调最为和谐的伙伴: - [**Google Chrome**](https://www.google.com/chrome/) / [**Microsoft Edge**](https://www.microsoft.com/edge/) / [**Opera**](https://www.opera.com/):它们与 fount 的精神同步,能提供最出色的性能与兼容性,让每一次交互都如诗般流畅。 而有些浏览器,它们走在不同的道路上,与 fount 的相遇可能会带有些许不协调的微音: - **Mozilla Firefox**:它像一位固执的漫游者,对新技术的接纳总是不紧不慢,有时甚至选择永远停留在过去。这份坚持,却可能导致一些遗憾: - 由于缺少对 [`speculationrules`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/script/type/speculationrules) 的支持,fount 的每次冷启动和协议处理都会比应有的慢上 1-2 秒,这些是被悄然偷走的时光。 - 对 [CSS `anchor` 定位](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_anchor_positioning)支持的缺失,会让部分页面的 UI 沾染上一丝不完美的尘埃,破坏了那份本该纯粹的心情。 - 对 [`blocking="render"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/script) 支持的缺席,则可能导致 fount 页面在加载时闪烁,伤害你的眼睛。 - 据后台的错误报告,唯有在 Firefox 的世界里,fount 页面有时会陷入神秘的错误或呈现怪异的样貌——当那种情况发生时,试试刷新,或许能驱散迷雾。 - **Apple Safari**:它对“新兴”(数年前)Web 标准的支持,或许比 Firefox 多了一丝亲近,但终究不多。 - 同样缺少对 [`speculationrules`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/script/type/speculationrules) 的支持,这意味着 fount 的启动依然会带有些许迟缓,浪费你宝贵的片刻。 - **Brave**:它基于 Chromium,但其强大的隐私之盾,有时可能会无意中遮蔽 fount 的某些光芒,影响部分功能的正常运作。 --- ### 见证成长:fount 的 Star 历史 [](https://github.com/steve02081504/fount/stargazers) ### 贡献者们 [](https://github.com/steve02081504/fount/graphs/contributors) ### 结语:工匠之触 在 AI 的低语之外,fount 提供了一种更深层次的连接——_工匠之触_。在我们的社区中,你会发现大量预先制作的角色与人设模板,_每一个都是精心雕琢的基础,等待着你独特的愿景去唤醒_。 fount 让你能够以一种自然、身临其境且深刻个性化的方式,去创造并与 AI 角色互动。无论你是经验丰富的创作者,还是刚刚开始你的旅程,fount 都欢迎你的到来。 加入我们**友好的社区**,在一个成熟的平台和一个专注的团队的支持下,发现将生命注入你想象力的魔力。