jp-lorenc1o/Eva-brain

GitHub: jp-lorenc1o/Eva-brain

Eva 是一款基于 LLM 的本地优先桌面应用,通过构建持久的、相互链接的 Markdown 知识图谱来解决个人信息源的整理、检索与知识管理问题。

Stars: 23 | Forks: 2

# Eva — LLM 大脑 ![License: MIT](https://img.shields.io/badge/license-MIT-cb181d) Eva 是一款开源、本地优先的桌面应用,用于使用 LLM 构建个人 知识库。Eva 不再在提问时反复从原始文档中检索,而是帮助 agent 在信息源和用户之间维护一个持久的、相互链接的 Markdown 大脑。 ![Eva 的图谱视图:选中一个源摘要后,红色链接发散到它所支持的每一个概念,而地图的其余部分变暗,随后一个章节集群展开为其页面](https://static.pigsec.cn/wp-content/uploads/repos/cas/49/491c27bad2148e18e1669ac3300b6474ad12127909b05db9b5918352fad4075b.gif) *导航一个真实的 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, 可视化界面, 大语言模型, 桌面应用, 知识库, 网络安全研究, 自动化攻击, 跨平台