跳到正文
Hacker News· MarcBuilds01·· 10 天前AI 评分60

TinyWebUI 发布:自托管 AI 聊天界面,内置 MCP、搜索与记忆

Show HN: TinyWebUI – A small, self-hosted AI chat UI with MCP, search and memory

AI 导读

TinyWebUI 发布,这是一个自托管的 AI 聊天界面,可接入 OpenRouter、OpenAI、Groq、Ollama、vLLM、LM Studio 等兼容 OpenAI API 的端点,聊天、文档和工具输出都保存在本机一个 SQLite 文件中,无需托管后端或注册账号。

正文 · AI 翻译

TinyWebUI 是 TinySuite 的聊天界面,TinySuite 是一套面向 AI 智能体的小型、本地优先的工具集。接入一个端点(OpenRouter、OpenAI、Groq、Ollama、vLLM、LM Studio,或任何其他兼容 OpenAI API 的服务),选择一个模型和系统提示词,就可以开始工作了。聊天记录、文档和工具输出都保存在你机器上的一个 SQLite 文件里。没有托管后端,无需创建账户,没有构建步骤,也没有前端框架。

它预装了两个 TinySuite MCP 服务器,因此全新安装后就能搜索网页并记住内容:

  • TinySearch 在本地搜索、读取并重排网页。它不需要搜索 API 密钥。
  • TinyContext 是一个本地长期记忆,只回忆符合 token 预算的内容。

亮点

  • 持久对话。编辑、重试、回退、文件夹和全文搜索。正在进行的回合属于服务器,因此你可以重新加载并回到其中。
  • 在回合运行中引导它。按 Enter 让模型在下一个安全点接收消息,或按 Alt+Enter 暂存一条后续消息。
  • 支持 stdio、Streamable HTTP 或 SSE 的 MCP。可能改变内容的调用会等待你的批准。
  • 附件。文本和源文件、PDF、DOCX 以及图片。
  • 混合本地搜索(BM25 加上一个小型设备端嵌入模型),覆盖文档和过往聊天。
  • 长对话也能保持低成本。对缓存友好的前缀、大型工具结果的一次性压缩,以及每轮 token 统计。
  • 自动化。按 Cron 调度的提示词,在你选择的聊天中运行。
  • 默认私密。交互式首次运行会要求设置所有者密码;团队可以使用带角色和管理面板的 SSO 网关。
  • 通过文件管理。受版本控制的配置可热重载,拒绝拼写错误,并带有可与运行实例核对的指纹。
  • 主题。内置 Fall Fairy 和 Cyber Grid。参见 主题编写 来编写你自己的主题。

快速开始

需要 Node.js 22.13 或更高版本。捆绑的 TinySearch 和 TinyContext 服务器还需要 uv,它会在这些服务器首次启动时获取它们。

npx tinywebui

首次运行会要求你创建一个至少 15 个字符的所有者密码。打开 http://127.0.0.1:7777,登录,然后连接一个模型。在 tinywebui.config.json 中填入端点和密钥(可从 example.tinywebui.config.json 开始),或使用设置面板:

{
  "baseUrl": "https://openrouter.ai/api/v1",
  "apiKey": "sk-or-...",
  "model": "deepseek/deepseek-v4.1-flash"
}

tinywebui.config.json 保存你的密码哈希和 API 密钥,并且已被 gitignore。请保持这样。之后可用 npx tinywebui set-password 更改密码。

在你运行 npx tinywebui models pull fast(约 90 MB)以启用混合搜索之前,npx tinywebui 使用关键词搜索。

从克隆仓库运行 npm install && npm start。使用 Docker 时,在启动服务前先在持久卷中创建所有者密码:

docker compose build
docker compose run --rm -it tinywebui set-password
docker compose up -d

Compose 示例将端口 7777 发布到主机的回环接口上。Docker 镜像也接受 TINYWEBUI_PASSWORD 以进行无头首次启动;请使用至少 15 个字符的密码,并保留容器的数据卷。如果没有凭据,无头启动会在打开端口前退出。

Compose 示例现在将配置存储在其命名数据卷中。如果你之前使用的是绑定挂载的 tinywebui.config.json,请在启动前将其设置复制到该卷中,然后在那里运行 set-password。

文档

完整参考见 tinysuite.dev/docs/tinywebui:

主题 涵盖内容
快速开始 npx、克隆、Docker
配置 环境变量、每一项设置、模型目录
MCP 工具 添加服务器、工具审批、内置工具
聊天与附件 文档、图像、引导一轮对话
搜索 混合检索、嵌入模型、调优
自动化 定时提示词
长对话 缓存与压缩
使用统计 Token 用量与归属
访问 仅你自己、一个密码,或 SSO 背后的团队
以代码方式部署 JavaScript 配置、锁定设置、角色与功能
CLI 每条命令
安全与限制 暴露面、MCP 信任、不包含的内容

在此仓库中:docs/deploy.md 是脚本化的容器部署,docs/config.schema.json 是配置 schema(也是 tinywebui schema)。

开发

npm test        # the whole suite, about 10 seconds
npm run dev     # restart on changes in src/ and bin/

AGENTS.md 映射了代码库并说明新代码应放在哪里。npm run eval 从 evals/tasks/ 运行模型行为评估并进行真实 API 调用,因此会产生费用。

许可证

GNU Affero 通用公共许可证 v3.0 或更高版本。如果你通过网络向用户运行修改后的版本,你必须向他们提供该版本对应的源代码。

来源:Hacker News · github.com