Native macOS · Local inference · Durable context · Controlled actions
简体中文 · English · 使用场景 · 系统架构 · 验证记录 · 源码导读
把本地模型、资料、记忆和 Mac 应用连接起来,让一次任务的结果成为下一次工作的上下文。
Lymora 是一个持续开发中的个人 macOS 智能体项目。它使用原生 SwiftUI 界面承载交互,在本机运行语言模型,并把任务状态、资料来源、记忆修订和操作结果保存为可追溯的数据。
项目重点是把模型能力落实为可控制的应用行为:资料回答能找到来源,记忆能够修订和撤回,应用操作需要明确目标与授权,任务中断后能够核对已有状态。
当前阶段:Development preview。 v6.2 正在开发,尚未完整交付。下文展示已实现的机制与指定历史版本的验证记录;各应用和功能的范围见能力状态。资料与源码核对日期:2026-09-22。
| 你想完成的事 | Lymora 如何参与 | 已有结果 |
|---|---|---|
| 带着资料提问 | 选择 TXT、Markdown 或简单文本 PDF,将问题与选定来源绑定,回答中保留引用 | 指定签名 App 完成 6 个新合成资料输入的验证,覆盖事实提取、缺失信息和来源引用 |
| 让信息进入后续任务 | 从已提交的原话确认保存;用新消息纠正;新任务按项目检索;撤回后停止后续选用 | 一个真实 App 合成场景走通保存、纠正、App/Core 重启召回与撤回 |
| 把指令落实到 Mac 应用 | 按原请求加载工具,通过 Safari / QQ 适配层读取或操作;将目标、预览、决定和回读结果绑定 | 有界 Safari 读取有历史 App 记录;QQ 有一条普通 App 个人文本的本地发出记录 |
这些结果对应不同候选版本,不能合并解释为最新版的全量可靠性或通用桌面控制。详细范围、日期和版本见证据说明。
记忆来自用户明确保存的已提交内容。纠正会产生新的修订,保留前后关系;撤回使该记录退出后续检索,同时保留历史,以便解释之前的任务使用过什么。
| 设计重点 | 解决的具体问题 | 实现入口 |
|---|---|---|
| 本地模型资源管理 | 模型何时加载、是否有足够内存、并发如何受限、取消与空闲时怎样释放资源 | Model supervisor |
| 原生应用与权限 | 工具是否来自原请求、操作的是哪个应用和控件、目标变化后能否继续执行 | Native runtime · macOS AX backend |
| 记忆与上下文 | 信息来自哪里、当前修订是什么、撤回后还会不会被选入新任务 | Submitted memory · Context assembler |
| 持久任务与恢复 | 请求中断后怎样找到原任务、哪些工作可以恢复、未知操作结果如何处理 | Run recovery · Native tool contracts |
本地推理使用已有 Qwen3.5-9B 量化模型与 llama.cpp / llama-server。项目工作集中在运行时、资源生命周期、原生应用接入、上下文和持久状态;模型训练与量化算法不属于本项目的实现贡献。
更深入的设计取舍、失败处理和阅读顺序见工程与源码导读。
关注 AI Agent: 从资料如何进入上下文开始,阅读原请求约束、按需工具加载、应用身份校验和结果回读,再看显式记忆如何进入下一次任务。
关注 AI Infra / 系统研发: 从模型进程所有权、内存与并发准入开始,阅读持久 Run/Step、租约与恢复、事务状态和操作结果核对。
| 技术层 | 当前实现 |
|---|---|
| 原生交互 | Swift / SwiftUI,macOS Accessibility,按适配器使用 Apple Events |
| 服务与编排 | Python / FastAPI,类型化工具契约,持久任务状态 |
| 本地推理 | Qwen3.5-9B,llama.cpp / llama-server,资源生命周期管理 |
| 状态与事件 | PostgreSQL、pgvector、NATS JetStream |
| 检查与验证 | Python / Swift 定向测试、隔离数据库检查、指定签名 App 场景记录 |
| 记录 | 可以说明什么 | 阅读入口 |
|---|---|---|
| 6 个资料输入 | 2026-09-08 的指定 App 对合成 TXT / Markdown / 简单文本 PDF 完成事实、缺失信息及引用检查 | 资料问答 |
| 1 个记忆生命周期场景 | 保存、更正、同一 App/Core 重启后召回、撤回后的后续检索行为 | 记忆验证 |
| 1 条 QQ 本地发出记录 | 指定个人文本任务的一次本地发出,不等同于远端已读、群聊或附件能力 | 原生应用 |
| v6.2 首批集成检查 | 后端 538 passed;隔离 PostgreSQL 128 passed;App 184 passed / 3 skipped / 0 failed,仅对应该次改动范围 | 检查范围 |
测试检查、组件截图、真实 App 运行和外部效果分别记录。当前没有把这些结果折算成整体完成率;历史全架构检查也并非全部通过。
| 能力 | 当前状态 | 边界 |
|---|---|---|
| 本地推理与模型资源生命周期 | 已有实现与定向检查 | 受模型、硬件和配置约束 |
| 显式记忆保存、修订与撤回 | 已有完整 App 场景记录 | 不是自动记录一切,也不是长期跨日使用评测 |
| 选定资料问答 | 已有有界 App 验证 | TXT / Markdown / 简单文本 PDF;不覆盖扫描件、复杂排版和通用 Office 编辑 |
| Safari / QQ 原生适配 | 部分能力已有 App 记录,继续开发 | 不能据此宣称任意网页、完整聊天历史、群聊、附件或通话均可用 |
| Mail 与更多应用 | 部分源码已集成,完整对话链仍在开发 | 不宣传为完整可用的邮件助手 |
| 跨日持续任务与更广泛自动化 | v6.2 开发范围 | 不计入已交付能力 |
完整运行涉及本地模型、数据库、事件服务及原生 App 身份和权限配置。仓库内的 Core 确定性说明脚本只演示架构边界,不会调用模型,不作为实际任务成功证明。
由 Timx-G 发起和维护的个人工程项目。技术交流可以围绕架构取舍、关键模块、失败修复与验证记录展开;第三方模型和基础组件的归属保持明确。
本项目自有源码目前用于作品展示与技术评估,暂未授予开放复用许可。第三方组件继续遵循各自许可;GitHub 平台规则允许的查看与 fork 不受本说明改变。详见源码使用说明。
开发状态与版本入口
当前开发目标为 Lymora v6.2 / IMPLEMENTATION IN PROGRESS。本文核对基线为 1287a0440ecfc39ef764910581af4d42fb795c28。公开仓库使用独立历史,测试账号与私人主机路径已替换为示例;它不等同于已签名安装包。源码整理范围与可复现检查见公开说明。
