不装数据库的本地记忆检索LifeOS Cortex 完整上手指南【免费下载链接】LifeOS⛰️ LifeOS — The universal AI Harness designed to move you from Current to Ideal state in both life and work.项目地址: https://gitcode.com/GitHub_Trending/pe/LifeOS想象这样一个场景你的笔记本里攒了几千个 Markdown 文件里面是日记、项目笔记和灵感想找上个月关于某次架构决策的讨论却不想为此装一个数据库、起一个向量库、再养一个常驻服务。这就是 LifeOS 里 Cortex 要解决的问题——一个跑在 Bun 上的本地 CLI用纯文件做本地记忆检索不联网、不建索引服务调一次跑一次。它明确不做的事和它真正是什么Cortex 的定位可以用一个类比说清它是你本地记忆文件上的一间阅览室不是云盘也不是搜索引擎站点。你敲一条命令它启动、读文件、算排名、输出结果、退出你不敲它什么都不占。和它是什么同样重要的是它明确不做的事这些分散在系统各处的承诺可以合并成一句话没有 MCP 服务或网络 API没有 Chroma、CMEM、SQLite FTS、嵌入或向量索引没有外部遥测没有跨设备同步没有后台守护进程或常驻 sidecar也不会把搜索结果自动灌进你的上下文更不碰 AI 运行时的原生转录。它检索的是你自己的文件读完就交还控制权。系统还随代码发布了一个进程内适配器工厂 CortexAdapter.ts为claude、hermes、codex、subagent四种身份提供调用入口。这里有个反直觉的细节查询类方法永远是只读而remember/propose虽然挂在接口上但每次调用默认也只是只读除非这一次调用显式带上{allowWrite:true}。写权限是逐次授予的不是按身份批发——知道调用方是谁和允许它写入是两回事。快速上手一条命令跑起来 安装好 LifeOS 之后Cortex 已经在仓库里了直接调bun LIFEOS/TOOLS/Cortex.ts status它会报告当前规范根、记录总数、只读模式和空索引列表退出码 0 就说明环境通了。根目录按优先级解析运行时注入的memoryRoot--memory-root参数 环境变量CORTEX_MEMORY_ROOT 默认值~/.claude/LIFEOS/MEMORY。有意思的是顶层目录本身是个符号链接也完全合法——它会被realpath解析后钉住成信任边界所以默认别名指向私有用户数据仓库也能直接工作但钉住之后根目录下面的任何符号链接、任何可能逃逸出根的realpath都会触发完整性错误。信任只钉在一层越界就关门。它怎么跟你说话信封与退出码每次调用stdout 上恰好一个 JSON 对象永远五个字段schema、ok、command、data、error没有多余的顶层键。失败时同样是五个字段ok:false、data:null错误装进{code, message}。而且这个约定不是文档写写的——每次构造结果前Cortex.ts 内部的自校验器都会先验一遍信封本身字段集合、ok与data/error的一致性不合格库直接抛错。退出码是第二套语义两者必须一起看0成功3显式 ID 没找到not_found4命令、选项、payload 或语料完整性有问题invalid_input/integrity_error5写授权缺失或治理层拒绝write_refused/governance_refused1兜底的内部错误。为什么强调能解析出 JSON 不等于成功因为失败时 stdout 同样会输出完全合法的 JSON——ok:false的那一份。脚本里只写JSON.parse不加退出码判断会把语料完整性校验失败当成正常数据往下游传。信封告诉你发生了什么退出码告诉进程管理器该不该报警。读先给你卡片要全文再取六个只读命令status/search/timeline/get/export/rebuild背后是同一个思想渐进披露。搜索永远只回卡片全文要你自己点名取——你的上下文窗口只为你明确要的东西付费。status报告语料形状根、记录数、indexes:[]它不测健康只看结构search用本地 BM25 打分词元按[a-z0-9]切同分按 ID 字典序稳定排支持--type/--source/--session精确过滤和--from/--to闭区间日期过滤--recency可以对updated加一点近因权重但不取代词法相关性加--expand ID还能沿related链接做一次有界广度扩展预算默认 10 节点、2,000 token全程不建任何持久化图数据库timeline --anchor ID_OR_DATE围绕锚点返回前后各 5 条0–100 可调get/export ID...返回显式 ID 的完整净化记录单次最多 100 个 ID任一 ID 缺失或不在有效期内整条命令以 3 退出——all-or-nothing。export听着像写操作其实只是把记录序列化成lifeos-cortex-export/v1payload 打印到 stdout不落盘rebuild --from-canonical是对可重建性的证明分别对规范视图和重建视图算 SHA-256报告是否一致。它不建索引、不重写源文件只证明记录视图能被确定性重建。bun LIFEOS/TOOLS/Cortex.ts search 缓存淘汰策略 \ --type memory --from 2026-01-01 --page 1 --page-size 10返回的卡片只有id、type、created、updated、provenance、score和est_tokens没有任何正文摘录——这是刻意的防止无关内容悄悄吃掉你的上下文。写身份与授权的双重绑定 ️整个 CLI 里只有两个命令会改变数据remember和propose而且授权是双重绑定的——缺任何一半都拒绝bun LIFEOS/TOOLS/Cortex.ts remember typed-item-json \ --adapter claude --allow-write第一重身份与授权分离。必须同时给出受识别的--adapter和--allow-write只报名字不授予任何写权限。第二重命令与条目类型绑定。remember只收memory/idea/knowledge三类条目propose只收proposal类型不匹配在调用持久化之前就被拦下一次调用恰好一个 JSON payload上限 262,144 字节。条目最终委托给 MemorySystem既有的变更分层、目标钉住、提案审批、审计日志、快照和收缩守卫仍然是权威裁判——Cortex 只是门口那一道门。治理层拒绝时退出码 5不存在部分成功要么整条写入完成要么什么都不会变。隐私网内容出门前先过滤一遍检索会不会把敏感内容一起带出来Cortex 的答案是把滤网架在所有出口前面public privatenever persist or export this/private public显式私有 span 的匹配不区分大小写、容忍无害空白和属性嵌套 span 整体移除孤儿的闭合标签作为控制标记删掉、两侧公开文本保留。关键在于fail-closed语义——就像门只能朝安全方向开未闭合的开头标签会抑制从它开始到字符串末尾的一切内容任何归一化后看起来像private开头但格式不良的构造插入 NUL 控制字符、全角 Unicode、丢右尖括号都被当作不可信开头同样触发抑制而不是尝试宽松的 HTML 恢复去猜它想表达什么。这道边界在 reviewer 推断之前、调试/错误序列化之前、类型化条目路由之前、BM25 排序、图扩展、get、export、rebuild之前都生效净化是递归的覆盖 content 以及承载持久化语义的元数据——标题、名称、rationale、会话 provenance、related slugs——剥完必填字段变空会被拒绝。所以旧文件里遗留的已标记内容在规范读取时会被再次净化绕不过当前边界。有效期窗口是同一张网的另一根线valid_from含边界、valid_until不含缺失视为开放边界非法解析出 NaNfail closed直接判为不生效。注意--from/--to是另一个维度——它们约束的是created时间戳不覆盖也不替代有效期判定。可控性上限是拒绝线不是目标值 边界设计里比较有意思的一点所有上限都是超过就拒绝的硬线不是尽量做到的建议值。挑几个代表性的检索查询最多 2,048 字符且不超过 64 个词法词元列表页大小上限 100写入 payload 上限 262,144 字节。更狠的是语料级检查发生在读取任何内容之前最多 10,000 个文件、单文件 8 MiB、总量 128 MiB、记录数 50,000 条超一条就报integrity_error一条都不读。未知选项、重复选项、缺值同样被拒绝而不是忽略静默容错在这个 CLI 里几乎没有生存空间——你给的每一个参数要么被明确接受要么得到退出码 4。可信吗拿证据说话 Cortex 对我说我准这件事的态度是别信我说的去跑 CortexBenchmark.ts。方法学上最值得学的一点基准测试导入生产代码rankBM25、toCortexCard与规范摘要函数而不是自带一份基准专用排序器——测的就是线上那份逻辑。带标签的查询集由操作者在自己的语料上亲手编写、存放在私有 MEMORY 树里不随系统发布且每行标签必须携带溯源字段证明期望 ID 来自真实的 CLI 执行加人工核验。每条查询跑 25 次比较的是两种披露成本序列化完整 top-5 记录 对 序列化 top-5 卡片、只抓取选中的第一条。注意排序质量在这两组之间被刻意保持完全相同——比的是注入成本不是两个检索算法。报告里除了 Recall5、MRR、时序准确率、p95 延迟还有注入 token 数、磁盘增长、后代进程数、峰值 RSS以及分词次数与排序运行次数防止卡片优先的比较掩盖掉重复的检索工作。向量索引呢当前vector_config就是null。采纳的前提是一份带标签的报告证明相对渐进式 BM25 有检索质量提升并且索引可规范重建、有独立的磁盘与进程边界——单靠省 token不构成采纳证据。运营侧的健康检查是另一条链路bun LIFEOS/TOOLS/MemoryHealthCheck.ts --json它生成含 overall 判定、实测证据、生效阈值和逐项 findings 的机器可读报告健康退出码 0/1/2。核心原则一句话缺失的证据永远不产生绿灯。最新一次 reviewer 运行失败、超时或解析不了是 critical而不是回退去引用上一次成功格式错误的 JSONL 会被暴露出来不会被静默跳过未来的索引必须提供规范 SHA-256 与索引字节哈希才能被认可。系统发布的 CORTEX_INDEX_POLICY.json 里那份no-index-v1标记表示已验证地没有索引健康检查把它当作健康的词法基线——但这是已验证的缺失不是拿没测量冒充健康的借口。说句实话的局限声明Cortex 是一个单目录、单机、无网络的文件型检索器它不做向量语义检索不做跨设备同步不提供服务端接口不清洗 AI 运行时的原生转录也不会替你把搜索结果自动灌进上下文。它只在你显式调用时存在干完就退出。在这个边界内隐私与完整性是 fail-closed 的越界的事它宁可拒绝也不猜。延伸阅读均在仓库内完整契约CortexContract.md记忆架构与写者目录MemorySystem.md健康证据收集实现CortexHealth.ts【免费下载链接】LifeOS⛰️ LifeOS — The universal AI Harness designed to move you from Current to Ideal state in both life and work.项目地址: https://gitcode.com/GitHub_Trending/pe/LifeOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考