现代化的高性能纯 Web 多用途 AI 前端,基于 Unconscious 响应式框架。
大部分 LLM 前端都是臃肿的 SaaS 复制品,剩下那些基本又是脆弱的周末项目。
不仅如此,它们还
- “专注一个功能”:只能聊天、只能做项目,或者只能角色扮演。
- 硬盘杀手:喜欢两万个 py/js 还有比中子星更重的 node_modules 吗
- 内存杀手:bun 对 Windows 的支持还是实验性,issues 里挂着好几个没修的内存泄漏,甚至没法在 cmd.exe 里运行 —— 直接卡死
这是我,一个重度依赖洁癖,内存洁癖,代码体积洁癖,写给自己的项目。
- 功能没有边界:你可以在RP会话中调用MCP,在Coding Task中进行对话分支,以及各种工具
- 产品用途不应决定能力上限,它们生来可以组合,应该组合,将会组合。
- 尽管有的组合可能不尽如人意,但它可以。
- 前端 2MB,后端加依赖约 600 KB
- 只需要浏览器:Chrome (or WebView) 118+,提供有限的 Firefox 支持。
- 不需要 Docker,不需要编译,不需要 node_modules 和数据库服务
- 哪怕连后端都不想要,你的敌人也只有 CORS
- 功能很多,文档很少,上手可能困难。
- 测试较少,可能存在 bug
- 单人项目,可能随时破坏性更改
- 纯前端,无法在无头环境运行,但支持手机远程控制(需后端)
- 不支持主动缓存写入 —— 你不应该将它接入缓存需要主动写入的模型
- 当然,你也可以通过插入下面的自定义请求体来实现,只不过这不会非常智能
- 详见文档。
{ cache_control: { type: "ephemeral", ttl: "5m" // or 1h } }
性能是一种尊重。
不信请找其他 Web 甚至 CLI 实现 profile 一下。
建议选 Svelte 做的,我担心 React 输的太惨
- 流式 Markdown 渲染:自研增量解析器,性能优于
marked
正确渲染**“中文引号加粗”**(不符合 CommonMark 规范,但 LLM 输出中很常见) - 语法高亮:比
shiki-stream更快(的启发式非精确算法),足够在我显示器刷新率(120Hz)下流畅更新 - 虚拟列表:对话和代码块均使用支持选区复制的虚拟列表
- 按需加载:Chart.js、KaTeX、Mermaid、语法高亮等按需加载
- 完全可编辑:事后甚至事前修改任何消息、工具调用参数、结果、思维链
- 本地 Agent:完整的虚拟文件系统,不需要后端就能操作文件,执行 JS 脚本,创建子代理!
- 完善且安全的本地 ESM 沙箱,联动文件系统,直接导入文件,还有
node:fs/promises和node:path可用! - 在 OPFS 文件系统中交互式上传和下载文件(夹)
- 从来没有人!没有人!!如此发挥浏览器的潜力!!!
- 完善且安全的本地 ESM 沙箱,联动文件系统,直接导入文件,还有
- 可选后端:命令执行、文件去重、工作区隔离(
--workspace) - MCP 支持:接入任何 MCP 服务器
- 记忆系统:一个符合作者哲学的记忆插件,不满意?反正有 MCP
- 支持导入酒馆(SillyTavern)角色卡、世界书、预设(JSON / PNG)
- 导入,而不是兼容,意味着会转换为自有格式,无法原样导出。
- 基于工具调用的世界书:精度和省钱吊打正则匹配
- RPG 管线(开发中):使用 JSON Schema 和约束采样,模型不可能格式错误,还有其它优点,这就是 Agent
- AntiSlop 采样器:从 token 层面概率拒绝"AI 八股"
- ZIP 导出:多媒体不使用 Base64,体积小,便于查看、编辑
- 请求日志:每条消息可追溯计费信息,并提供按日期聚合的统计图表
- TTS & 文生图:内置工具,BYOEndpoint,TTS为实验性功能,文生图已稳定可用(需手动开启插件)
- 暗色主题 & 移动端适配:手机能用,手机好用,还有安卓版
- 多端同步(需后端):对话和其它数据无缝同步,甚至还能多端同时流式生成,
stream.tee()! - 断线重连(需后端):无线连接断开了?后端替你缓存,像大厂 App 一样后台生成!
- 远程控制(需后端):手机控制PC,当然,其他PC也可以;需要在设置中允许远程
截图版本 4.0.0-alpha
在线体验 静态版本,或从 Release 页面下载构建产物:
| 文件 | 说明 |
|---|---|
full_release.zip |
PC 完整版,含前端和后端,解压后运行 launch.sh / launch.bat |
dist.zip |
前端文件压缩包,需要自行部署 |
AiChat_<版本>.apk |
安卓版,最低系统版本 Android 12 |
PC 版默认端口为 3000,可通过 -p <端口> --data <数据目录> 参数修改。
默认不允许命令执行,安全责任属于你,请在容器中运行专用文件访问服务
- 尽管如此,回落的JS沙箱也有相当多的API可用
把解压后的 dist/ 扔进任何静态文件服务器:
# nginx
cp -r dist/* /var/www/html/
# llama-server
llama-server --path ./dist./launch.sh或在 windows 上双击 bat
使用前需要编辑后端配置文件 config.js
开发环境搭建详见构建指南。
| 文档 | 内容 |
|---|---|
| 使用指南 | 命令、界面、设置、多模态输入 |
| 构建与部署 | 开发、生产构建、CORS 解决方案 |
| Agent 与文件系统 | 完全编辑模式、文件访问、安全建议 |
| 高级功能 | AntiSlop、对话分支、角色扮演基础、思考模式 |
| RPG 管线 | 约束采样、流式 JSON 解析 |
| 插件开发 | 工具注册、命令、后端插件 |
| API 参考 | SSE 代理、批量请求、WebSocket 同步 |
| 后端配置 | 代理路由、内容审核 |
| 设计哲学 | 设计理念 |
| 路线图 | 已知问题和计划中的功能 |
| TTS & 生图 | 端点配置与 API 规范 |
unconscious/common 的设计目标: smaller, faster, or both
- Unconscious — 8KB 的无 VDOM 响应式框架,以及大量公共代码。
- qr.js:大概最快的JavaScript二维码生成库 - 6KB
- msgpack.js:性能很好的Msgpack编解码库 - 8KB
- Zip-IO:比JSZip快三十倍的Zip读写库。在Node上支持Brotli,另有JSZip-兼容API shim - 8KB
- safe-worker:基于语法解析/转换和原型锁定的安全WebWorker沙箱。支持权限控制、ESM/CJS模块、异步RPC和文件系统shim - 24KB
- Json.js:流式JSON5解析器。支持JSONL以及增量回调 - 4KB
- ws2:比 ws 快 10% 的 WebSocket 服务器/客户端 - 41KB
- streaming-markdown — 流式 Markdown 解析器
- KaTeX
- Remix Icon
- Modern Normalize
- iconv-lite
- remove-markdown
浏览器需求:Chrome 118+
在 118-124 上测试
最低需求最近大概不会改变,新版 Chrome 的 MD3 巨丑
- Driver.js 新手引导 (30KB)
- lamejs 录音输入 (148KB)
- KaTex (371KB)
- 包含在项目中并 patched:
- highlight.js 语法高亮 (360KB)
- Chart.js 图表 (197KB)
- Mermaid 还是图表 (2.57MB)
- PptxGenJS (264KB)
- SheetJS(mini) (273KB)
- 说真的我有一个几十KB的实现,但不支持样式、公式,基本上只能读写文本
- mathjs (635KB)
- pdf-lib (512KB)
- docx (297KB)
具体有哪些模块详询 AI
- DsChat:可编辑工具调用和 Human-as-tool 的灵感来源
- RipGrep: 后端支持但不默认的 Grep 二进制
- Busybox for Windows: 在 Windows 上用它实现 bash,当然 cygwin(git) 的也可以
- V8引擎:让原生JS比(poorly written的)WASM和Emscripten更快!
- 我的 llama.cpp 分支:兼容 OpenAI 规范的思考开关/预算、JSON Schema 预填充
- RojLib:让你看看什么叫造轮子狂魔

