LifeOS Cortex 本地契约:一条命令读懂隐私边界、确定性重建与证据链
发布时间:2026/9/20 22:32:44 锦皓数字建站

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想给 LifeOS 的文件型记忆装上一个能检索、能写、但绝不越界的入口这个入口就是 Cortex——项目内置的本地记忆检索 CLI。它就是一个 Bun 命令行脚本不跑服务、不常驻进程、不建索引、不碰网络读的是你本地的记忆文件。下面先把它用起来再一层层追问它凭什么安全凭什么确定凭什么可信注上一行图片占位请忽略正确引用见下文 H2 之后。一条命令上手命令形态、根目录怎么解析、退出码怎么读这一节能带你跑通第一条 Cortex 命令并且看懂它返回的每一个字节。所有命令都是同一个形态在仓库根目录下执行bun install/LIFEOS/TOOLS/Cortex.ts status # 输出stdout 恰好一个 JSON 对象 {schema:lifeos-cortex/v1,ok:true,command:status,data:{canonical:{root:...,records:1234},mode:local-read-only,indexes:[]},error:null}记忆根canonical root按四级优先级解析写在 Cortex.ts 的runCortex里测试/运行时注入的memoryRoot→--memory-root参数 → 环境变量CORTEX_MEMORY_ROOT→ 默认~/.claude/LIFEOS/MEMORY。返回值有两套约定必须都看五字段信封schema、ok、command、data、error。失败时ok:false、data:nullerror里装{code, message}多一个字段都不允许发布 schema lifeos-cortex-v1.schema.json 里两种形态都声明了additionalProperties:false。而且这个信封是库内自校验的源码里validateCortexEnvelope在每次构造成功/失败结果后都会先自检一遍再放行不依赖调用方守规矩。语义化退出码——这是最容易踩的坑能解析出 JSON 不等于成功进程退出码和信封要双看。退出码什么时候出现错误码4命令/选项/payload/过滤器/边界值不合法或规范完整性破防invalid_input、integrity_error5没给写授权或既有治理机制拒绝了变更write_refused、governance_refused3显式 ID 或图扩展锚点找不到not_found1计划外的内部失败internal_error0成功—八个子命令收进一张总表所有命令都可选带--memory-root DIR和--adapter claude|hermes|codex|subagent未知、重复或缺值的选项一律拒绝而不是忽略落 4 号命令读写关键行为status只读报告钉住的根与记录数mode:local-read-only、indexes:[]。只报形状不测健康search query只读本地 BM25 排序只回卡片不回正文--expand ID可做有界图扩展默认 10 节点 / 2,000 估算 token上限 100 / 50,000timeline --anchor ID_OR_DATE只读按created取邻域--before/--after默认各 5可为 0上限 100ID 锚点在过滤命中时含中心记录get ID [ID...]只读只回显式选中的活跃记录任一 ID 缺失/过期/未生效整条命令退出 3all-or-nothing最多 100 个export ID [ID...]只读名字像写、实际是披露把选中记录序列化为lifeos-cortex-export/v1打到 stdout不创建任何文件选择与失效规则同getrebuild --from-canonical只读必须显式给 flag对规范视图与重建视图各算一次 SHA-256 并报告equivalent不创建任何索引remember json写只收type为memory/idea/knowledge的条目需--adapter--allow-write双给propose json写只收type:proposal的条目授权规则同上remember/propose的授权是双重绑定其一身份与授权分离——只点名适配器不给任何写权限必须同时显式传--allow-write其二命令与条目判别器绑定——类型不匹配在委托MemorySystem.add()之前就被拒。写 payload 恰好一个、上限 262,144 字节既有的变更分层、目标钉住、提案审批、审计日志、快照、源所有权、收缩守卫继续持有权威治理拒绝就是 5 号退出码不存在部分成功。进程内使用的话CortexAdapter.ts 的createCortexAdapter对四种身份返回一个冻结对象读方法天然只读remember/propose虽在接口上但每次调用仍按只读处理除非该次调用显式传{allowWrite:true}——而且选项对象里掺入任何别的键权限判定直接返回null整体拒绝。写权限是逐次授予的不是身份级的。分页与卡片约定search / timeline 通用卡片字段恰好是id、type、created、updated、provenancesource、可空session、相对path、数值score、est_tokens净化后正文字符数 ÷ 4 向上取整没有content也没有摘录列表响应含精确过滤后的total、从 1 起的page、page_size、items默认第 1 页每页 10 条页大小上限 100同分按 ID 字典序破平。安全层符号链接为什么只钉一次private 标签怎么拦截这一节回答凭什么相信它没越界边界怎么画、破防时发生什么。先说术语fail-closed就是门禁默认上锁——没有拿到明确钥匙一律进不去而不是默认放行再补检。Cortex 在符号链接问题上就用了这个姿态而且只钉一次顶层别名允许pinCanonicalRoot对根做一次realpath解析、确认目标是目录把这个真实路径钉住作为信任边界status会如实报告钉住后的路径。默认的LIFEOS/MEMORY软链指向私有用户数据仓库~/.config/LIFEOS/USER/MEMORY时就是靠这个机制工作的调用方不用手动解引用。钉住根之下符号链接一律禁止checkedRealpath对每次遍历到的路径做lstat判定 越界校验发现符号链接或realpath逃逸直接抛完整性错误。以下任何一种情况都报integrity_error、退出码 4根下的目录/文件符号链接、realpath 逃逸、重复记录 ID、坏 JSONL、不可能的时间戳updated早于created、valid_from valid_until、非法日历日期、非常规模块文件socket 等。还有语料级 fail-closed 上限在读取任何内容之前就检查CANONICAL_CORPUS_LIMITS文件数 ≤ 10,000、单文件 ≤ 8 MiB、总量 ≤ 128 MiB、记录数 ≤ 50,000。超限同样是 4 号。私有 span 的匹配语义。显式私有内容用类 HTML 标签包起来public privatenever persist or export this/private publicCaptureEnvelope.ts 的stripPrivateContent定义了四种情形的处理全是从严方向情形处理正常成对标签整体移除匹配不区分大小写容忍无害空白与属性嵌套 span按深度计数整体移除不靠单条正则孤儿闭合标签当控制标记删掉两侧公开文本保留未闭合的开头标签fail closed从该位置起抑制整串剩余部分更狠的是畸形开头任何归一化后长得像 private 开头标签但格式不良的构造——NUL/控制字符插空、全角 Unicode、丢了右尖括号——都按不可信开头处理、直接 fail closed而不是尝试宽松的 HTML 恢复。净化时点在 reviewer 推断之前、reviewer 调试/错误序列化之前、类型化条目路由之前、规范词法排序、图扩展、get、export、rebuild之前全都会过一次净化规范读取也会再次净化防止旧的已标记内容绕过当前边界。类型化条目的净化是递归的覆盖 content 以及承载持久化语义的元数据标题、名称、rationale、session provenance、entries、related slugs剥离后变空的必填字段会被拒绝。源中立的CaptureEnvelope携带source、channel、timestamps.captured_at可选source_at、可选valid_from/valid_until、可选session_id与content真正的摄取助手是ingestCaptureEnvelope(input, consumer)——先剥离私有内容再把净化后的 envelope 交给 consumer。fixture 覆盖了 Claude、Hermes、Codex、子代理与一个消息通道但注意措辞的克制这证明助手能够表示这些来源只有显式调用助手的调用点受边界保护文档并不声称所有既有 hook 都已自动迁移。其余 hooks 与通道专属采集写者仍走原有路径——不存在一个通用适配器守护进程。有效期窗口valid_from含边界、valid_until不含缺失的边界视为开放非法边界 fail closedDate.parse得 NaN 即不生效。search/timeline/get/export 默认排除查询时刻不生效的记录。--from/--to是另一个维度它们约束created时间戳闭区间不覆盖也不替代有效期判定。最后一句必须说透的边界原生 harness 转录可能在 harness 文档所述的 30 天保留期内保留private内容这超出 Cortex 的控制范围。Cortex 不触碰转录字节只剥离受控副本。私有标签是持久化与处理边界不是对 harness 转录、终端滚动回显、上游提供方日志、或内容到达 Cortex 之前已发出数据的清洗承诺。确定性层规范源地位、路径派生 ID 与 rebuild 证明了什么这一节讲事实从哪来谁是事实源、ID 和 provenance 怎么保证可复算、rebuild 的摘要等价到底证明了什么。规范源是 Markdown 与 JSONL派生索引是可丢弃的不能成为事实源。默认 CLI 检索语料就是既有的KNOWLEDGE/树排除下划线和点号前缀的路径规范根下若有根级*_MEMORY.md热文件也会纳入带MEMORY/KNOWLEDGE/布局的 fixture 供隔离测试用canonicalFiles按KNOWLEDGE→MEMORY/KNOWLEDGE→ 根本身三级回退。规范记录的要求与两个稳定设计ID 必须唯一非空created/updated必须是合法时间戳缺 Markdown ID 的记录获得稳定的路径派生 IDpath: 相对路径 SHA-256 前 16 位——换机器、换时间同一条记录 ID 不变provenance 用相对于规范根的路径所以更换绝对根别名不会改变记录摘要。rebuild --from-canonical是可重建性的只读证明规范化记录后分别对规范视图与重建视图算 SHA-256在lifeos-cortex-canonical-rebuild/v1payload 里报equivalent、记录数与indexes:[]。它证明的是Cortex 记录视图可被确定性重建不证明源文件被逐字节重写。它也不创建任何索引。索引策略标记的三种状态发布标记 CORTEX_INDEX_POLICY.json 是肯定的lifeos-cortex-index-policy/v1内容policy:no-index-v1状态判定与后果标记在、无索引清单明确 no-indexBM25 直读规范文件status报indexes:[]rebuild不建东西健康检查报健康的no-index-v1——不会为了证明没采用索引去遍历或哈希整个语料标记与清单双缺失状态歧义健康检查仅告警index-evidence-missing已采用的合法索引清单优先于 no-index 标记其实际字节与哈希被逐字节验证。清单非法、路径违规、索引字节缺失、规范不匹配或索引字节不匹配均为 CRITICAL标记本身格式错误则是 critical不会滑进歧义档。证据层基准测试与运营健康如何做到缺证据不绿灯这一节讲两件事检索质量怎么被度量运行状态怎么被诚实地报告。共同的底线是一条缺失的证据永远不产生绿灯。检索基准。带标签的查询集是LIFEOS/MEMORY/BENCHMARKS/cortex-retrieval-v1.jsonl存放在私有 MEMORY 树里由操作者针对自己的语料、在首次基准运行之前自行编写不随系统发布。每行给出 query、期望 ID、可选的期望时序与已知假阳性 ID并且每行标签必须携带lifeos-cortex-benchmark-label-provenance/v1溯源证明期望 ID 来自真实的live-cortex-cli执行与人工语料核验见 CortexBenchmark.ts 的标签校验。bun install/LIFEOS/TOOLS/CortexBenchmark.ts \ --labels LIFEOS/MEMORY/BENCHMARKS/cortex-retrieval-v1.jsonl \ --memory-root LIFEOS/MEMORY \ --output LIFEOS/MEMORY/BENCHMARKS/cortex-benchmark-v1-YYYYMMDD.json方法学上最关键的设计基准导入生产函数——activeCortexRecords、rankBM25、toCortexCard与规范摘要函数——而不是自带一份基准专用排序器。每条标签查询跑 25 次样本每个查询/样本只做一次生产排序同一份排序结果在两种披露测量间共享bm25-baseline序列化完整 top-5 记录progressive序列化 top-5 卡片、仅抓取被选中的第一条完整记录。所以排序质量被刻意保持完全相同被比较的是披露与注入成本不是两个检索算法。每个配置报告Recall5、MRR、时序成对排序准确率、假阳性召回、注入 token、p95 延迟、延迟样本数、语料盘上字节、实测磁盘增长、后代进程数、峰值 RSS、执行路径名另附语料分词次数与排序运行次数防止卡片优先的比较掩盖重复的检索工作。报告 schema 为lifeos-cortex-benchmark/v1stdout 始终收到报告--output落盘必须位于解析后的MEMORY/BENCHMARKS/下、使用版本化文件名cortex-benchmark-vN-*.json且不覆盖已存在的报告。报告是操作者自己语料 自己标签上的可复现时点本地测量不是普适的延迟或质量声明。向量索引的采纳门槛当前vector_config为null——没有向量基准候选也没有向量索引。采纳的前提是一份带标签的报告证明了相对渐进式 BM25 的检索质量提升且索引可规范重建、保持在单独文档化的磁盘与进程边界内。仅仅降低 token 用量不构成采纳向量索引的证据。运营健康检查。status报的是契约形状运营健康来自另一个工具bun install/LIFEOS/TOOLS/MemoryHealthCheck.ts --json报告含overall、实测证据、生效阈值、findings以及按 ok/warn/critical 派生的退出码 0/1/2。默认阈值与越界后果CortexHealth.ts 的assessCortexEvidence证据默认阈值越界/缺失的后果最新可观测性日志年龄 30 天WARN可观测性字节数 256 MiBWARN已采用索引新鲜度 7 天WARN检索证据新鲜度24 小时缺失/陈旧 WARN进行中 reviewer 终行宽限10 分钟超期判超时CRITICALReviewer 成功新鲜度7 天陈旧 WARN待审提案积压 10 条WARN判定规则几条硬线最新reviewer 证据优先于历史成功——最新一次运行失败、解析失败、超时、格式错误、schema 不完整或无效都是 CRITICAL新运行目录过了 10 分钟宽限仍无终行判超时格式错误的 JSONL 会被暴露而不是静默跳回上一次成功非法或未来时间戳不能证明新鲜度提案证据只统计状态恰为pending的行坏行告警可观测性证据递归测量MEMORY/OBSERVABILITY/下全部.jsonl与.log文件报字节数、文件数与最老 mtime检索证据取最新一行有效的memory-retrievals.jsonl。未来若采用派生索引lifeos-cortex-index/v1清单必须给出规范 SHA-256、索引路径与 SHA-256、indexed_at任何不匹配都是 CRITICAL。已验证的缺失清单是健康的no-index-v1词法基线它不是把没测量的索引状态称为健康的借口。阈值覆盖只接受有限正数非法值产出 critical 的cortex-threshold-invalidfinding而不是让比较失效。运营覆盖变量CORTEX_RETRIEVAL_STALE_MS、CORTEX_PROPOSAL_BACKLOG、CORTEX_OBSERVABILITY_MAX_BYTES、CORTEX_OBSERVABILITY_MAX_AGE_MS测试/自动化路径变量CORTEX_HEALTH_ROOT、CORTEX_HEALTH_NOW、CORTEX_INDEX_MANIFEST、CORTEX_HEALTH_NO_WRITE、CORTEX_HEALTH_REPORT_PATH。每次运行的输出记录的是当前证据不是永久健康保证。边界层资源硬上限一览拒绝上限不是目标值这一节把所有闸收到一张表里并解释每道闸挡的是什么。注意定位这些是拒绝上限而非目标值——超线直接拒绝不代表系统希望你把输入填到线边上。表面边界挡的是什么语料文件数 / 单文件 / 总量 / 记录数10,000 / 8 MiB / 128 MiB / 50,000读内容前的语料级 fail-closed 闸防失控语料CLI 写 payload262,144 字节防单条巨型条目打穿治理路径类型化条目自由文本65,536 字符防超长正文占用图扩展100 节点、50,000 估算 token防--expand无界扩散显式get/exportID 数100防一次请求拉空语料检索查询2,048 字符且 64 个词法词元防单条查询拖垮排序列表页大小100防单页响应失控Timelinebefore/after各自 0–100同上类型化元数据字符串1,024 字符防元数据膨胀提案目标路径4,096 字符防路径字段滥用热记忆集合48 条、每条 256 字符防热集挤占上下文Related 链接数64防关系网失控类型化持久化还会拒绝未知字段、非法枚举或字段类型、非有限/越界 confidence、控制字符、frontmatter/注释注入、含糊的 session 元数据、超尺寸数组以及隐私剥离后变空的必填文本。性能方面代表性 1,500 条记录的契约检索在测试中限定 1.5 秒以下重复测量的活由基准测试承担见证据层。再划一次线status报告的是契约可用性与语料形状它不测量健康——运营健康请看MemoryHealthCheck.ts两者别混用。它不会做的事负面清单为避免过度承诺把已实现版本不提供的东西逐条列明不起 MCP 服务器、不暴露任何网络 API不加跨设备或云端同步不引入 CMEM / CMEM Cloud / Chroma / SQLite FTS / 嵌入 / 向量索引不发任何外部 Cortex 遥测不跑守护进程也没有常驻 sidecar——不被调用就不存在不自动让所有 hook/通道/采集表面接入该边界不清洗原生 harness 转录30 天保留期问题见安全层不从搜索结果自动灌入完整记录——正文只在你显式get/export时给出。适用前提与延伸阅读适用前提以上全部以当前仓库的install/LIFEOS/TOOLS/实现为准运行需要 Bun 运行时与已部署的规范根默认~/.claude/LIFEOS/MEMORY或CORTEX_MEMORY_ROOT指定的目录私有 MEMORY 树中的基准标签、检索日志与索引清单都是操作者本地资产不随开源仓库分发。延伸阅读MemorySystem.md — 记忆架构、策展分层、写者与目录清单ObservabilitySystem.md — 健康证据与本地可观测性管线CortexContract.md — 契约文档本体CaptureEnvelope.ts — private span 与有效期的实现CortexAdapter.ts — 进程内读/写适配器工厂CortexBenchmark.ts — 基准方法与lifeos-cortex-benchmark/v1报告 schemaCortexHealth.ts — 证据收集与 fail-closed 评估【免费下载链接】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),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。