Files
freedak f7a720204a Update: 将子项目从 submodule 转为完整内容
- 移除 GovAI, nomifun-tauri, 算力盒子 的 submodule 引用
- 添加所有子项目的完整源代码
- 保留原始 .git 为 .git.bak 备份
2026-07-04 19:20:46 +08:00

8.4 KiB
Raw Permalink Blame History

常见问题

针对反复被问到的问题给出直白、简短的回答。如需更深入的解释,请顺着 链接前往对应文档。

NomiFun 与 nomifun 有什么区别?

NomiFun 是这个开源项目与面向用户的产品名:桌面应用、WebUI 界面、 代码库、工作区、GitHub 仓库和品牌都使用这个写法。

在本代码库里,小写形式 nomifun 仅作为字面意义上的技术标识符出现 ——包名(nomifun-appnomifun-web 等)、桌面 bundle id com.nomifun.desktop、以 NOMIFUN_ 为前缀的环境变量、仓库目录。 任何作为应用或项目品牌展示给人看的地方,都使用 "NomiFun"。

有托管版本吗?

没有。NomiFun 是一个自托管项目。不存在 SaaS 实例、不存在 nomifun.com 上的托管登录、不存在你可以注册的中心账户系统。使用它的 两种方式是:

  • 安装桌面应用并在本地运行——nomifun-desktop
  • 在你自己控制的服务器上部署 nomifun-web。参见 Web 服务部署

你可以使用 WebUI 远程访问 把桌面 安装临时暴露给其他设备(手机、笔记本),但这是一项按实例的功能, 不是托管服务。

桌面应用需要登录吗?

不需要。桌面 WebView 通过 Tauri 外壳注入的每启动本地信任 token 被信任。 桌面窗口没有登录界面,但嵌入式后端并不是一个对所有 localhost 调用者都无鉴权 开放的服务。

Web 宿主与之相反:默认要求登录。两者的差异是有意的——桌面外壳可以信任 自己的 WebView,但网络可达的宿主必须有真正的鉴权边界。

我的数据存在哪里?

存在数据目录里。具体位置取决于你运行的是哪种宿主:

  • 桌面端:默认在按用户的应用数据目录——Windows 上是 %LOCALAPPDATA%\NomiFun\NomimacOS 上是 ~/Library/Application Support/NomiFun/NomiLinux 上是 $XDG_DATA_HOME/NomiFun/Nomi(通常为 ~/.local/share/NomiFun/Nomi)。 设置 NOMIFUN_DATA_DIR=<absolute path> 后目录会变成 $NOMIFUN_DATA_DIR/Nomi(覆盖语义不变)。旧版构建把数据存在 <system temp>/nomifun-data/Nomi 下;若存在这样的安装,启动时会 自动搬迁到新位置,旧目录保留为备份。
  • Webnomifun-web:你传给 --data-dir(或 NOMIFUN_DATA_DIR)的任何位置,按字面值生效——不附加 /Nomi 后缀。两者都未设置时,默认与桌面应用是同一个按用户目录,因此 开发中的 bun run serve:web 与已安装的应用看到的是同一份状态。
  • Dockercompose 文件中定义的命名卷(nomifun-data,挂载到 /data)。

数据目录里有 SQLite 数据库(nomifun-backend.db*)、各智能体状态、 Bun 缓存、日志文件,以及任何嵌入式扩展数据。请像对待数据库一样备份 它。由于所有宿主默认指向同一个目录,后端用一把排他的 server.lock 守住它——同一数据目录上的第二个后端实例会快速失败,而不是悄悄破坏 状态。

完整生命周期与 work-dir 语义请参见 配置参考

支持哪些智能体与提供商?

NomiFun 作为 ACPAgent Client Protocol)后端运行的"智能体 CLI" 包括 claudecodexgemininomicodebuddyqwenopencode。每一个都是一个独立的 CLI,需要你自己在系统上安装; NomiFun 会从 PATH 上发现它们,并据此填充注册表。运行 nomicore doctor 即可看到你的安装能识别到哪些。

至于裸模型访问(例如提供商密钥、自定义的 OpenAI 兼容端点),系统 通过 /api/providers/* 与应用内的设置 UI 支持可配置的提供商。API 密钥由你提供;NomiFun 会以静态加密的方式把它们存到数据目录。

并不存在一个会调用某个托管 NomiFun 端点的内置智能体——根本就没有 这样的端点。你配置的每一个智能体 / 提供商都由你自己控制。

NomiFun 真的纯本地吗?

应用逻辑与你的数据是本地的。但你接入的智能体未必——大多数 CLI 智能体 都会向各自的提供商(Anthropic、OpenAI、Google 等)发起出站调用。那 是你与该智能体之间的事。

NomiFun 自身在网络上做的事:

  • 可选的更新检查(system info / check-update 端点)。
  • 扩展市场(/api/hub/*)——仅在你主动使用时。
  • 你已配置的智能体与提供商所做的——通常是去 LLM 提供商的 API 调用。

二进制中没有遥测管道、没有 analytics SDK,也没有 SENTRY_DSN 集成。 后端不会自行回传任何数据。

扩展与技能——它们由谁来运行?

扩展(主题、助手、频道插件、设置标签页)由 nomifun-extension 从 数据目录加载。技能则是一组提示词/指令,按会话被解析进智能体的上下文。 两者都是数据目录下的本地文件;市场流程只是把它们下载到该目录。

智能体 CLI 二进制不属于扩展——它们是 NomiFun 通过 ACP 协议作为子 进程派生的外部 CLI。

我能在与 UI 不同的机器上跑智能体吗?

可以——这正是 nomifun-web 的用途。把 Web 宿主部署到你希望智能体 (及其 CLI 和它们的网络访问)所在的机器上,然后从任何浏览器访问 SPA。参见 Web 服务部署

如果只是想从手机或另一台笔记本做更轻量的远程访问,又不想另起一台 服务,WebUI 远程访问 可以把 现有的桌面安装暴露到 LAN 上。

许可证是什么?

Apache-2.0,在工作区 Cargo.toml 中声明。你可以在标准的 Apache-2.0 条款下使用、修改、再分发,并将代码打包——包括用于商业 产品——只要保留许可证与声明完整即可。

有预构建安装包吗?

还没有官方公开发布渠道。桌面包可以本地构建,macOS Developer ID 签名已通过 bun run build:signed 脚本接好,updater 产物可用 bun run build:updater 生成;但还没有官方 installer feed 或公开 registry。当前受支持的安装路径是:

  • 桌面端bun install && bun run build:ui && cargo run -p nomifun-desktop(或 cargo build --release -p nomifun-desktop)。
  • 服务端:从源码构建(cargo build --release -p nomifun-webdocker compose up -d --build

预构建安装包发布后,会从项目 README 与 新手入门指南 链接出来。

我把管理员密码搞丢了

nomifun-web 上,带内的恢复流程是仅本地的 WebUI 路由 (POST /api/webui/reset-password)——你可以从运行该服务的同一台 机器上调用它,它会生成一个全新的随机密码并打印出来。从远程机器 无法通过 API 恢复密码。

兜底方案是停止服务、直接编辑数据库(system_default_user.password_hash 列),然后重启。最简单的重置就是把哈希设为空字符串——下次启动 就会把当前安装当作需要重新进行首次启动设置,下一个访问者就可以 认领管理员。

桌面本地 WebView 没有密码。WebUI 远程访问有自己的管理员密码,因为它会被其他 浏览器访问。

有"单二进制"构建吗?

服务端有:nomifun-web 是一个静态链接的 Rust 二进制,再加上它要 提供的 ui/dist/ 目录。SQLite 是静态链接的,TLS 用的是 rustls—— 运行时没有 libsqlite、也没有 openssl 依赖。用 cargo build --release -p nomifun-web 即可构建。

智能体运行时(bun)默认嵌入;请把它装到系统级,或者用 NOMIFUN_EMBED_BUN=1 构建标记把它打包进二进制。参见 bun-on-PATH 小节。

桌面外壳同样可以产出单一二进制(nomifun-desktop),但用于分发时, 通常你想要的是 bun run build 通过平台原生打包流程产出的 产物(前提是安装包签名已配置好)。

另见