jp-lorenc1o/Eva-brain
GitHub: jp-lorenc1o/Eva-brain
Eva 是一款基于 LLM 的本地优先桌面应用,通过构建持久的、相互链接的 Markdown 知识图谱来解决个人信息源的整理、检索与知识管理问题。
Stars: 23 | Forks: 2
# Eva — LLM 大脑

Eva 是一款开源、本地优先的桌面应用,用于使用 LLM 构建个人
知识库。Eva 不再在提问时反复从原始文档中检索,而是帮助 agent 在信息源和用户之间维护一个持久的、相互链接的
Markdown 大脑。

*导航一个真实的 117 页大脑:选中一个源摘要会高亮它支持的每一个
概念,随后一个章节集群展开为其页面。*
## 平台支持
Eva V1 刻意仅针对 macOS。Tauri 本身支持 Windows 和
Linux,但这两个平台都没有针对此代码库进行构建或测试;
扩大支持范围是一个深思熟虑的未来产品决策,而不是疏忽。
版本化的磁盘和操作契约是
[`Eva Brain Standard v1`](docs/EVA_BRAIN_STANDARD.md)。其 `eva.json` 标记
让 Eva 在应用 agent 工作流之前识别兼容的大脑,同时
保持信息源、wiki 页面、说明和本地历史在不同
工具间的可移植性。
- `packages/wiki-lib` — 纯 TypeScript frontmatter/wiki-link 解析,图谱
构建,以及确定性的结构 lint。包含一个 16 页的测试固件。
- `packages/eva-mcp` — 面向 agent 的只读 MCP 导航工具:搜索、
页面读取、邻居和最短路径。
- `apps/desktop` — Tauri v2 + Vite 图谱浏览器,以及用于工作树隔离的摄入、带引用查询和只读
Health Check 的 Codex CLI 和 Claude
Code 适配器。
- `schema/` 和 `templates/vault/` — Eva Brain Standard v1 标记、
操作契约,以及植入到 Eva 管理的大脑中的启动器基础设施。
## 设置
```
npm install # installs workspaces, builds wiki-lib via its prepare script
npm test # wiki-lib unit tests (vitest)
npm run tauri dev # launches the desktop app (requires Rust toolchain)
```
## 发布与安装
带标签的版本 (`v*.*.*`) 由 GitHub Actions 在 macOS 上构建,并作为
GitHub Releases 发布,附带 `.dmg` 文件;最新的构建始终位于
[releases/latest/download/Eva.dmg](https://github.com/jp-lorenc1o/Eva-brain/releases/latest/download/Eva.dmg)。
要进行发布,请在 `apps/desktop/src-tauri/tauri.conf.json` 中提升版本号
并推送一个匹配的标签。
**该应用未经过代码签名或公证,保持未签名状态是
一项刻意的 V1 决策,而不是权宜之计。** 签名和公证需要
Apple Developer Program 会员资格,费用为 99 美元/年;对于处于
现阶段的一个个人项目来说,这笔费用是不合理的。重新审视这一点是一个
需要以后有意识做出的真实决定,而不是一个假设的下一步。实际后果是:
浏览器会为下载内容标记隔离属性,而当前的 macOS
会将隔离的未签名应用报告为*“Eva”已损坏,无法*
*打开* — 右键点击 → 打开**无法**绕过此对话框。该应用
并未损坏;清除一次隔离属性,它就能正常打开:
```
xattr -cr /Applications/Eva.app # adjust the path if Eva lives elsewhere
```
根据下文的说明,发布的此应用在你的 Mac 上仍然需要 Node.js 和一个已登录的 agent CLI。
**Node.js 是摄入门的硬运行时依赖**,而不仅是
构建的依赖:确定性 lint 和 MCP 导航工具是
`packages/eva-mcp` 中的 Node 脚本,如果没有它们,摄入或保存分析将拒绝
运行。在开发模式下,它们会自动在源代码检出中找到;打包的
Eva.app 会将它们作为应用资源携带,并在执行 `tauri build` 期间由
`apps/desktop/scripts/bundle-tools.mjs` 进行部署。设置
`EVA_TOOLS_DIR=/path/to/packages/eva-mcp` 可以在任一
模式下覆盖其位置。由于从 Finder 启动的应用不会继承终端的 PATH,Eva
会在 PATH 以及 `/opt/homebrew/bin`、
`/usr/local/bin` 和 `~/.local/bin` 中查找 `node`、`claude` 和 `codex`,并在缺少某个依赖时报告明确的错误。
## 第一个大脑
在启动屏幕上选择 **New brain** 并为知识项目命名。
设置表会要求提供 Brain Profile、工作语言、AI runtime 以及
可选的目的;Eva 将该配置及其模块存储在 `eva.json` 和
`EVA.md` 中,在
`~/Documents/Eva/Brains` 中创建一个量身定制的链接起始页,然后打开图谱。选择 Codex 或 Claude Code;
Eva 会使用电脑上已经登录的 CLI,且从不存储 API 密钥或
凭据。Eva 仅在本地使用 Git,以实现审查和可撤销的
历史记录;它不需要 GitHub 账户、远程仓库或 Git 身份。选择
**Ingest** 以添加第一个信息源。选择 **Query** 向维护的
大脑提问;有用的答案可以保存为可审查的分析页面。
使用 **Open brain** 从 Eva 管理的大脑库中进行选择。**Import a
brain** 会将一个外部的 Markdown 文件夹复制到 `~/Documents/Eva/Brains`,使其在不更改原始文件夹的情况下
加入该库。
使用 **Manage brains** 查看每个本地文件夹并更新其 Brain Profile、
工作语言、AI runtime 或目的。Eva 会在该
大脑的本地 Git 历史中记录配置更改;它不会创建账户、远程仓库或云端
副本。
## 配置感知工作
Profiles 会改变 Eva 读取和维护大脑的方式。研究型大脑会提取
主张、证据和矛盾;阅读型大脑会维护章节、
角色和线索;课程型大脑会跟踪概念、练习缺口和
复习。Health Check 使用相同的视角。
每当打开大脑时,**Tools** 按钮就会出现。结果始终基于
打开的大脑,引用其支持的页面,并且必须通过 Eva 的
常规审查流程进行保存。课程型大脑包含 **Flashcards** 和带有答案的 **Practice
exam**;不需要 API 密钥、账户或云端
上传。那些 profile 工具是建议,而不是死规定:**Other tools** 使完整的
工具库在每个大脑中都可用。每个工具都接受可选的焦点;
Flashcards 可以设置卡片数量,Practice exam 可以设置其主题、问题
数量和格式(混合、多项选择、笔试或简答)。
## 界面语言
Eva 可以跟随系统语言或使用本地保存的应用语言选择:
英语、西班牙语、葡萄牙语、法语、德语、意大利语、日语、韩语、
中文(简体)和中文(繁体)。这仅更改 Eva 的界面;每个大脑保留
其自身独立的工作语言。
## 健康检查
**Health** 结合了确定性的结构 lint 和一个可选的、
只读的 agent 过程。该 agent 可以标记有证据支持的矛盾、薄弱的
出处、过时的主张、覆盖盲区和研究问题。它从不
编辑页面、创建任务或提交更改。
## 隐私
Eva 默认将每个大脑保留在个人的电脑上。它从不创建
Git 远程仓库,也不将信息源、页面或历史推送到任何地方。Eva 将选定的
源文件复制到大脑的 `raw/` 目录中,并仅将其记录在本地历史
中。共享或备份大脑是个人在 Eva 之外做出的
明确选择。
仅限开发的钩子(用于自动化验证,在生产构建中无效):
设置 `VITE_DEV_VAULT=/abs/path/to/vault` 以在启动时自动打开一个 vault,以及 `VITE_DEV_SELECT=` 以自动选择一个节点。然后应用会
向 vite 开发服务器 POST 一份渲染报告,服务器会将其打印到终端。
## 许可证与贡献
Eva 是开源软件,基于 [MIT 许可证](LICENSE)。
欢迎提交 Issue 和 pull request。在贡献之前有两件事需要了解:
V1 的范围是刻意仅限 macOS 的(参见 [AGENTS.md](AGENTS.md)),并且
更改应保持测试套件通过 — 使用 `npm test` 测试
wiki-lib,并在 `apps/desktop/src-tauri` 中运行 `cargo test` 测试 review-gate 和 vault 逻辑。
标签:DLL 劫持, MCP, MITM代理, Ruby, Tauri, 可视化界面, 大语言模型, 桌面应用, 知识库, 网络安全研究, 自动化攻击, 跨平台