1. 项目定位与核心理念
Cabinet 定位为 AI-first 的知识库与初创公司操作系统,核心哲学包括:数据所有权(Yours)——所有数据本地存储、可见、可移植;Git everything——记忆应有历史,可审计、可回滚;BYOAI(Bring Your Own AI)——支持 Claude、OpenAI、本地模型等多种提供商;KISS(Keep It Simple)——使用plain files,系统可理解、可检查、可 hack;Security——安全为设计需求而非事后补充;Self-hosted——完全自托管,环境由用户控制。项目目标是让 AI 团队像真实团队一样工作,同时避免企业级工作流软件的复杂性。
2. 解决的关键问题
Cabinet 主要解决三大痛点:一是 AI 会话记忆缺失——每次新对话都丢失上下文、项目决策和研究资料;二是知识分散——文档散落在 Notion 等不同工具,缺乏统一视图;三是手动同步——在多个平台间复制粘贴,效率低下且易出错。通过将一切存储为本地 Markdown 文件,并赋予 AI 代理长期记忆和自动化能力,Cabinet 实现知识的持久化、可追溯和自动化处理,让 AI 真正成为团队的延伸而非每次重启的陌生人。
3. 主要功能特性
核心功能包括:WYSIWYG + Markdown 编辑器(基于 Tiptap,支持表格、代码块、任务列表);AI 代理系统(每个代理有目标、技能、记忆和 scheduled jobs);定时作业(基于 node-cron,如每 6 小时 scout Reddit、周一生成周报);嵌入式 HTML 应用(可 drop index.html 到知识库);实时事件推送(通过 SSE 更新代理状态、目标进度、Slack 消息);每日摘要(结合 git 日志和任务板生成 markdown 报告);自动链接(基于任务描述推荐相关页面)。所有数据以文件形式存储,支持 Git 版本控制。
4. 安装与部署方式
本地开发安装:1) 使用 npx 创建项目:`npx create-cabinet@latest`;2) 进入目录:`cd cabinet`;3) 启动开发环境:`npm run dev:all`(同时启动 Next.js 前端和 cabinet-daemon 守护进程);4) 访问 http://localhost:3000 完成 onboarding wizard 配置。桌面应用:运行 `npm run electron:start` 启动 Electron 封装版本。生产构建:`npm run build` 构建 Next.js,`npm run electron:package` 打包桌面应用。项目支持自托管,数据完全本地存储,无外部依赖。仓库中未明确给出 Docker 或云部署的具体步骤。
5. 基础使用流程
1) 启动后打开浏览器访问本地服务,跟随 onboarding wizard 回答 5 个问题以定制 AI 团队;2) 使用 Tiptap 编辑器创建和编辑 Markdown 文档,支持富文本、表格、代码块等;3) 通过界面创建和管理 AI 代理,设置其目标、技能和定时作业;4) 代理会自动执行任务、更新记忆、生成报告,状态通过 SSE 实时推送;5) 所有文件存储在本地 data 目录,可用 Git 管理版本历史;6) 可选集成 Slack 获取消息作为对话触发源。高级功能包括自动链接相关页面、生成每日摘要、监控文件系统变化等。
6. 技术架构与实现特点
架构上,Cabinet 采用 Next.js 16 App Router 作为全栈框架,API 路由处理代理管理、作业调度、对话引擎等请求。核心模块包括:agent-manager(代理会话)、job-manager(定时作业持久化)、conversation-runner(对话提示构建)、persona-manager(代理人格与记忆)、goal-manager(目标进度跟踪)、slack-manager(Slack 集成)、daemon-client(与守护进程通信)、provider-runtime(统一 AI 提供商调用)。数据层使用 better-sqlite3 存储元数据,核心内容以 Markdown/YAML 文件存于文件系统。守护进程 cabinet-daemon 负责 cron 作业调度,前端通过 SSE 接收实时更新。项目强调可检查性、可 hack 性和安全性,serverExternalPackages 明确排除 node-pty、simple-git、better-sqlite3 以避免打包问题。