一个内置 AI 助手的桌面笔记应用。基于 Electron + React 构建,使用 LangChain Agent 实现智能笔记管理。
📝 Markdown 编辑器
- 基于 Milkdown 的所见即所得编辑
- 支持 GFM(表格、任务列表、删除线)
- 选中文本浮动工具栏(加粗、斜体、代码、下划线、引用)
- Cmd/Ctrl+Click 打开链接
📁 文件管理
- 文件夹树视图,支持新建、重命名、删除、复制、粘贴
- 多选操作(Shift 范围选、Cmd/Ctrl 多选)
- 全文搜索,高亮匹配,点击跳转到行
- 最近打开的文件夹记录
🤖 AI 助手
- 内置 LangChain Agent,支持自然语言管理笔记
- 7 个工具:列出笔记、读取内容、搜索、创建、编辑、获取时间、向用户提问
- 工具调用审批机制(human-in-the-loop)
- 流式输出,工具调用状态实时展示
- 工具上下文优化:大结果自动截断缓存,按需取回
⚙️ 可配置
- 支持 OpenAI、Anthropic、Google Gemini、Ollama 等模型提供商
- 自定义 API 端点(兼容 DeepSeek 等 OpenAI 兼容 API)
- 主题切换(深色/浅色/跟随系统)
- 编辑器字体、字号、行高可调
- Node.js 18+
- pnpm
git clone <repo-url>
cd agent-notes
pnpm install在项目根目录创建 .env 文件:
VITE_AI_BASE_URL=https://api.deepseek.com # LLM API 地址
VITE_AI_API_KEY=sk-xxx # API Key
VITE_AI_MODEL=deepseek-chat # 模型名称也可以启动后在应用内的设置页面配置。
pnpm dev # 启动 Vite + Electron 开发服务器pnpm test # 运行全部测试(renderer + electron)
pnpm typecheck # TypeScript 类型检查pnpm build # 生产构建(tsc → vite build → electron-builder)┌─────────────────────────────────────────────┐
│ Renderer (React) │
│ 编辑器 · 文件树 · AI 聊天 · 设置 │
└──────────────────┬──────────────────────────┘
│ IPC (contextBridge)
┌──────────────────┴──────────────────────────┐
│ Main Process (Electron) │
│ 文件操作 · AI Agent · 右键菜单 · 窗口管理 │
└─────────────────────────────────────────────┘
用户消息 → LLM 决策 → 工具调用
│
┌─────────┼─────────┐
▼ ▼ ▼
审批中间件 副作用中间件 截断中间件
(用户确认) (刷新UI) (缓存大结果)
│ │ │
▼ ▼ ▼
纯函数工具 (note-tools.ts)
- 审批中间件:工具调用前请求用户确认
- 副作用中间件:工具执行后触发 UI 更新(文件树刷新等)
- 截断中间件:大结果存入缓存文件,返回摘要给 LLM,按需通过
tool_result_fetch取回
| 层 | 技术 |
|---|---|
| 桌面框架 | Electron 33 |
| 前端 | React 19, TypeScript 5, Tailwind CSS 4 |
| 编辑器 | Milkdown 7 (ProseMirror) |
| AI | LangChain 1.3, LangGraph 1.2, OpenAI SDK |
| 聊天 UI | Ant Design X |
| UI 组件 | HeroUI 3 |
| 图标 | Lucide |
| 构建 | Vite 6, vite-plugin-electron |
| 测试 | Vitest 4, React Testing Library |
src/ # React 渲染进程
components/ # UI 组件(每文件一个)
hooks/ # 自定义 hooks(状态管理)
providers/ # Chat Provider(LangChain / Demo)
plugins/ # Milkdown 编辑器插件
utils/ # 工具函数
types/ # TypeScript 类型定义
electron/ # Electron 主进程
ai-agent.ts # LangChain Agent + 中间件
note-tools.ts # 纯函数工具实现
tool-cache.ts # 工具结果缓存
ipc-handlers.ts # IPC 处理器
main.ts # 应用入口
learning/ # 设计文档
详细的架构说明和开发指南见 AGENTS.md。
支持通过 LangGraph Studio 调试 Agent:
# 在 .env 中设置 NOTES_FOLDER 指向笔记目录
langgraph devMIT