这段时间,我把自己一直在用的一套 AI 工作台整理了一遍,也终于把它开源了。项目叫 Light AI。
一开始做它,并不是因为市面上缺一个聊天页面。恰恰相反,能和大模型聊天的界面已经很多了。真正让我觉得麻烦的是:聊天在一个网站,写代码要打开另一个终端,生成图片又是第三套工具;模型、账号、文件和历史记录各管各的。每切一次工具,刚刚建立起来的上下文也跟着断一次。
我想要的是一个自己和小团队都能长期使用的地方:打开之后,可以先聊清楚问题,也可以把真实任务交给 Agent,还能直接做图;所有这些能力共用同一套账号、导航和数据边界。
所以就有了 Light AI。
它不是三个功能拼在一起
Light AI 目前有三个主要工作区:对话、任务和图像。
对话区支持多会话、流式回复、Markdown、附件、分享、归档和导出,操作方式尽量保持熟悉。任务区可以运行 Codex、Gemini CLI 和 Claude Code,让 Agent 进入项目、读取文件、执行命令并完成修改。图像区则接入了 OpenAI 兼容接口和 Gemini 图像模型,可以带参考图生成,也可以沿着一次任务继续重试和迭代。
但我不希望它们只是侧边栏里的三个入口。
我更在意的是,用户从“有一个模糊想法”到“拿到可以继续使用的结果”,中间不要反复学习三套交互逻辑。三个工作区用了相同的导航、状态反馈和视觉语言;桌面端把空间尽量留给内容,移动端则单独做了抽屉、底部导航和触控细节,而不是把桌面页面硬挤进手机屏幕。
这些地方不会出现在模型能力排行榜里,却决定了一个工具第二天还会不会被打开。
我专门做了几个自己很在意的小功能
第一个是 任务过程要看得见。
编码 Agent 不是输入一句话、等半天、最后只收到一句“完成了”。Light AI 会把计划、执行过程、文件变更和产物整理出来。任务可以选择模型、推理强度、Plan 模式和工作区权限,也可以按项目归类。这样既能把事情交出去,又不会完全失去控制感。
第二个是 长任务不绑住网页。
对话、绘图和 Agent 都可能运行很久。我把这些任务交给独立 Worker 处理,编码任务还会进入一次性的 Docker Runner。关掉页面不代表任务消失,重新回来以后仍然能看到状态;取消、失败和重试也都有明确反馈。这里做了不少看起来很小的保护,例如任务租约和取消后的结果隔离,避免一个已经被取消的旧请求晚到一步,又把新状态覆盖掉。
第三个是 把推理过程变成能读的东西。
除了普通 Markdown 和代码高亮,界面还可以渲染 Mermaid 图。项目里也有单独的推理可视化入口,希望把模型复杂的分析过程整理成更容易跟随的结构。模型输出很长时,“能生成”只是第一步,“人能看懂”才算真正完成。
第四个是一个有点特别的入口:微信。
扫码配对后,微信消息可以被转成 Agent 任务,处理结果再回到聊天里。图片、文件、视频和语音也能作为附件进入任务工作区。它不是为了把微信变成另一个聊天机器人窗口,而是让我在离开电脑时,也能随手把一件事交给自己的工作台。
另外,我还做了统一的模型管理、邀请注册、用户权限、运行日志和用量估算。管理员可以集中配置模型端点和密钥,普通用户不需要在浏览器里反复粘贴 API Key。密钥由服务端加密保存,编码任务则放进资源和 capability 受限的独立容器里运行。
自托管,但我不想假装它没有边界
Light AI 使用 Next.js、SQLite 和 Docker Compose,个人或小团队在一台 Linux 主机上就可以跑起来。SQLite 开启 WAL 模式,部署和备份都比较直接;如果以后要支撑更大规模,再把数据库和任务队列替换成外部服务会更合适。
编码 Agent 的 Worker 需要访问 Docker socket,这意味着它在宿主机上拥有较高权限。Runner 做了 CPU、内存、进程数和 capability 限制,但它并不是一个面向陌生用户的多租户安全沙箱。所以我在 README 里把这条边界写得很明确:只给受信任的人开放 Agent 权限,也不要在没有 HTTPS、强密码和防火墙的情况下直接暴露到公网。
我一直觉得,开源一个能跑起来的项目,也应该把“它不适合做什么”一起讲清楚。
现在开源,欢迎一起把细节磨顺
Light AI 已经在真实环境里使用,不过开源版目前仍然处在早期阶段,接口和数据库结构还可能继续调整。仓库里准备了 Docker 部署文档、Agent 部署说明、单元测试和基于 Mock Provider 的端到端测试,不配置真实模型密钥也能跑验证流程。
项目采用 Apache License 2.0 开源:
GitHub:JimiZhou/light-ai
如果你也想搭一套自己的 AI 工作台,或者正在研究 Chat、编码 Agent、图片生成和多端入口怎样更自然地放在一起,欢迎来试试。遇到问题可以提 issue;如果你发现某个交互还能更顺、某段部署流程可以更稳,也非常欢迎直接提交 PR。
很多我最喜欢的小功能,最初都只是因为某次使用时冒出一句:这里要是再顺手一点就好了。
若无法加载请检查网络环境。
若无法加载请检查网络环境,或切回 Disqus 稍后再试。