当前版本 v0.3.6 · Apache-2.0 · 本地优先

本地优先的 AI 知识与 Agent 工作台

Hetu(河图)把 Markdown 笔记、对话与编码会话放在同一套数据底座上:SQLite + sqlite-vec(或 PostgreSQL + pgvector)存内容与向量,ASP.NET Core 10 提供 API 与 Agent 循环,React 19 前端负责界面,Tauri 2 桌面壳负责安装包与自动更新。模型调用只发往你自己配置的供应商。

ASP.NET Core 10 · EF Core 10 React 19 · TypeScript 6 · Vite 8 SQLite + sqlite-vec / PostgreSQL + pgvector MCP(JSON-RPC 2.0)
Agent 工作台:左侧会话与话题树,右侧消息流、工具调用与输入工具带
点图看原图
它是什么

一个进程、一份数据库、两个入口

笔记页负责写与整理,Code 页(/code)负责问与做;两者读写同一份 SQLite/PostgreSQL 数据,共用知识库、图谱、记忆与任务系统。桌面版会把后端作为 sidecar 一起拉起,数据落在系统用户数据目录。

笔记

Milkdown 所见即所得 + CodeMirror 源码视图;选中文字调 AI(润色/翻译/精简/扩写/解释/自定义);笔记本、标签、历史版本、分享链接、回收站、Markdown 导出。

Agent 工作台

会话与话题、SSE 流式事件、工具调用与审批、五档权限模式、推理强度、发送队列与运行中引导;话题可蒸馏成笔记。

Code 会话

本地或 SSH 仓库;当前分支或独立工作树;本地+远程分支与单键 Git 同步;文件 / 更改 / 检查点 / Git / PR / 浏览器 / 终端 七个面板。

检索与知识结构

笔记、文件、网址统一分块向量化;知识图谱抽取实体与关系;按项目生成 Wiki;长期记忆配 Dream 巩固。

组织与自动化

任务看板(可指派 Agent 执行并记录步骤)、可视化工作流、后台任务与 Cron 定时任务、收件箱通知。

扩展与模型

智能体(提示预设 + 工具白名单 + 审批策略)、技能(内置/自定义/磁盘目录)、内置工具开关、MCP 服务器、多供应商与按场景默认模型、代理接口、用量与成本。

关键实现

技术选择与边界

以下都是代码里实际生效的机制,不是概念描述。

主题实现
存储SQLite(默认,Data Source=hetu.db)+ sqlite-vec 向量扩展;可切 PostgreSQL 16+ + pgvector,同一套功能,DatabaseProvider 配置切换
分页与聚合列表接口一律数据库侧完成(SQL COUNT + OFFSET/FETCH、GROUP BY 计数与摘要);知识库状态、向量摘要不再整表加载
SQLite 时间排序provider 不支持在 SQL 中对 DateTimeOffset 排序/聚合,仓储内置 GetPagedByDateAsync / CountByAsync / PruneAsync 规避(投影排序键后内存定序、按主键回表)
只读接口缓存被页面轮询的状态类接口加 [ResponseCache] 短时缓存,减少重复查询
Agent 循环SSE 事件流(delta / thinking / 工具调用与结果 / steering / 检查点 / 审批 / 通知);运行中可排队或引导;后台任务统一进 TaskItem 记录
代码隔离git worktree 独立工作区,默认在仓库父目录 .hetu-worktrees/<仓库>/<工作树>,可按「已合并 + 空闲」自动清理
PR 集成按 origin 远端自动选择 gh 或 glab;未安装时给出对应平台安装命令
桌面Tauri 2 外壳 + sidecar 后端;fat / slim 双渠道安装包;更新走 GitHub + 三个加速镜像;安装钩子在覆盖文件前清理残留后端进程
工程约束后端 dotnet build 与前端 eslint 均要求 0 告警,且不允许任何抑制注释(pragma / eslint-disable / SuppressMessage)

更多实现细节(分层、请求流、数据模型、性能实践)见 架构与实现。

界面

实际界面(点击可看原图)

下面每张都是本地数据的真实截图,缩略图看不清时点一下看原尺寸。

起步

两种跑法

桌面版(无需环境)

# 下载安装包:Windows NSIS / MSI,Linux AppImage / deb
# https://github.com/wosledon/Hetu/releases/latest
#
# fat  = 自带 .NET 运行时(约 100 MB+)
# slim = 体积小,需系统安装 .NET 10 运行时

关闭窗口默认最小化到托盘,后端继续跑;托盘菜单「退出 Hetu」才真正退出。

源码运行

git clone https://github.com/wosledon/Hetu
cd Hetu

pwsh ./scripts/start.ps1     # Windows
./scripts/start.sh           # Linux / macOS

# 前端 http://localhost:5174
# 后端 http://localhost:5000/api
# 接口文档 http://localhost:5000/scalar/v1

需要 .NET SDK 10.0+ 与 Node.js 20+。