Skip to content

edditz/agent-notes

Repository files navigation

Agent Notes

一个内置 AI 助手的桌面笔记应用。基于 Electron + React 构建,使用 LangChain Agent 实现智能笔记管理。

Tech Stack Tech Stack Tech Stack Tech Stack

功能

📝 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 · 右键菜单 · 窗口管理   │
└─────────────────────────────────────────────┘

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

支持通过 LangGraph Studio 调试 Agent:

# 在 .env 中设置 NOTES_FOLDER 指向笔记目录
langgraph dev

许可证

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors