ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

LifeOS Cortex 零网络本地契约解析:8 个 CLI 命令如何做到确定性重建与证据门控

LifeOS Cortex 零网络本地契约解析:8 个 CLI 命令如何做到确定性重建与证据门控 LifeOS Cortex 零网络本地契约解析8 个 CLI 命令如何做到确定性重建与证据门控【免费下载链接】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/LifeOSLifeOS 的 Cortex 是一个运行在 Bun 上的零网络本地 CLI它直接读取文件型记忆语料用 BM25 排序做可验证检索并以受控写入通道把变更交给既有治理层全程不启动任何常驻进程。本文带你逐项读完它的命令契约、五字段响应信封与退出码语义、隐私边界的 fail-closed遇到可疑输入直接拒绝而非猜测实现以及基准测试与健康检查两条证据门控链路——所有数字均逐一核对了当前仓库源码并标注了文件与行号。一、阅读地图本文覆盖什么读完本文你可以回答四个问题命令契约8 个子命令各自的调用形态、只读/可写边界、异常时的退出行为输出约定五字段信封如何自校验、退出码如何与信封互相印证安全边界隐私 span 剥离、符号链接信任边界、语料级硬上限如何构成 fail-closed 语义证据链路检索基准为何必须复用生产排序代码运营健康检查为何缺失证据绝不产生绿灯。核心源码只有四个文件Cortex.tsCLI 本体、CortexAdapter.ts进程内适配器工厂、CaptureEnvelope.ts隐私与有效期实现、CortexHealth.ts 与 CortexBenchmark.ts两条证据链。配套契约文档是 CortexContract.md。二、定位与边界它是检索门面而不是记忆运行时一句话定位Cortex v1 是构建在既有文件型记忆系统之上的本地 Bun CLI不是第二个记忆运行时。对照 CortexContract.md 的负向清单它明确不是不是 MCP 服务器或 HTTP 服务无守护进程——不被调用就不存在不引入 Chroma、CMEM、外部遥测、嵌入或向量索引不提供跨设备同步、云端同步或远程变更不是对所有 hook/通道/采集表面的自动采纳——通用适配器守护进程不存在。确切覆盖范围同样被文档划死当前隐私边界覆盖 reviewer 输入、reviewer 调试/错误产物、进入MemorySystem.add()及其治理持久化路径的类型化条目、以及 search/timeline/get/export/rebuild 使用的规范读。其余 hooks 与通道专属采集写者仍走原有路径直到被显式集成。随系统发布的进程内工厂 createCortexAdapter 只接受claude、hermes、codex、subagent四种身份返回Object.freeze冻结对象remember/propose每次调用保持只读除非该次调用显式传入{allowWrite:true}——写权限是逐次授予的。源码里 writePermission 对选项对象做Reflect.ownKeys检查出现任何非allowWrite键都返回null并整体拒绝不存在差不多就行的权限判定。三、调用与输出契约3.1 入口形式与根解析优先级所有命令统一入口见 CortexContract.mdbun LIFEOS/TOOLS/Cortex.ts command [arguments] [options]规范根canonical root即唯一被信任的语料目录按 Cortex.ts 的四级优先级解析测试/运行时注入的memoryRoot--memory-root命令行选项环境变量CORTEX_MEMORY_ROOT默认值~/.claude/LIFEOS/MEMORY。顶层别名允许钉住之下符号链接一律禁止。pinCanonicalRoot 对根做一次realpath解析并确认目标是目录把解析结果钉住作为信任边界——这就是默认的LIFEOS/MEMORY符号链接指向私有用户数据仓库时仍可用的机制。但钉住根之下的任何路径都受 checkedRealpath 约束lstat判符号链接、校验 realpath 是否逃逸出根越界即抛IntegrityError。3.2 严格选项规则拒绝而非忽略parseArguments 对每个命令维护一份固定的ALLOWED选项表第 207-214 行。未知选项、重复选项、缺值、命令不适用某选项全部以invalid_input拒绝进入退出码 4不存在静默忽略。--adapter的值必须落在四个受识别身份之内否则同样拒绝。3.3 五字段信封与退出码双重校验每条命令向 stdout 写恰好一个JSON 对象字段集合恰好是command / data / error / ok / schema五个多一个少一个都不行{schema:lifeos-cortex/v1,ok:true,command:status,data:{},error:null}失败时保持同五个顶层字段ok:false、data:nullerror承载{code, message}。这一约定由两层强制发布版 Schema lifeos-cortex-v1.schema.json 对 success/failure 两形态均声明additionalProperties:false且以oneOf互斥库内 validateCortexEnvelope 在每次ok(...)/fail(...)构造结果后先过一遍校验器再返回——信封自校验不依赖调用方。退出码语义EXIT 常量退出码含义典型错误码0成功—1未预期的内部失败internal_error3显式 ID 或图扩展根未找到not_found4非法命令/选项/payload/过滤器/边界值或规范完整性问题invalid_input、integrity_error5缺写授权或既有治理拒绝变更write_refused、governance_refused调用方必须同时使用进程退出码和信封能解析出 JSON 并不意味着成功main() 是写 stdout process.exit(result.exitCode)的双重约定。四、八个子命令详解速查表完整契约见 CortexContract.md命令写权限位置参数关键约束status只读无报告规范根、记录数、indexes:[]search只读恰好 1 个查询串查询 ≤2,048 字符且 ≤64 词元timeline只读无须--anchorbefore/after各 0–100默认各 5get/export只读1–100 个 IDall-or-nothing缺失即整条失败rebuild只读无须--from-canonical不创建任何索引remember可写1 个 JSON须--adapter--allow-writepropose可写1 个 JSON同上status报告契约/语料形状而非健康——它不测量运营状态只报告钉住路径、记录数、mode:local-read-only与indexes:[]第 285 行。search本地 BM25词元按[a-z0-9]切分rankBM25idf 为log(1(n-df0.5)/(df0.5))平滑、tf 饱和系数 2.5、长度归一化b0.250.75·len/avgdl、同分按 ID 字典序。--type/--source/--session是精确匹配--from/--to对created做闭区间过滤--recency必须有限非负只做updated时间加权不替代词法相关性第 291-292 行。检索只返回卡片从不返回正文可选--expand从显式 ID 出发沿related做广度优先不建也不查任何持久化图数据库expandGraph。timeline锚点可以是活跃记录 ID 或合法日期ID 锚点在中心记录仍落在过滤器内时包含中心记录本身日期锚点返回请求数量的邻接记录第 297 行。get/export都只返回显式选中且当前生效的活跃 ID 的完整净化记录任一 ID 缺失、过期或尚未生效整条命令以退出码 3 失败all-or-nothing第 299 行。export名字像写操作实际只是把选中记录序列化为lifeos-cortex-export/v1打印到 stdout不创建任何文件——它是披露动作不是写动词。rebuild显式--from-canonical必填第 279 行。它对规范视图与重建视图各算一次 SHA-256canonicalCorpusDigest在lifeos-cortex-canonical-rebuild/v1中报告equivalent。摘要相等证明Cortex 记录视图可被确定性重建不是源文件逐字节重写。remember/propose唯一的变更契约命令授权是双重绑定第 266-277 行① 必须同时给出受识别的--adapter和--allow-write只命名适配器不授予任何写权限② 命令与条目判别器绑定——remember只收type:memory|idea|knowledgepropose只收type:proposal不匹配在调用MemorySystem.add()之前即被拒绝。每条命令恰好接受一个 JSON payload上限 262,144 字节治理拒绝是退出码 5不存在部分成功。既有的变更分层、目标钉住、提案审批、审计日志、快照、源所有权与收缩守卫保持权威地位。卡片契约toCortexCard只含id、type、created、updated、provenancesource、可空 session、相对 path、数值score与est_tokens不含content或任何摘录est_tokens 净化正文字符数 ÷ 4 向上取整。列表响应含精确过滤后的total、从 1 开始的page、page_size与items默认第 1 页每页 10 条页大小上限 100。五、安全边界与资源硬上限5.1privatespan宁可错杀不可漏放显式私有 span 使用类 HTML 标签如public privatesecret/private public匹配语义完整实现在 stripPrivateContent匹配不区分大小写容忍无害空白与属性嵌套 span 整体移除——用深度计数而非单条正则第 37-54 行孤儿闭合标签作为控制标记移除保留两侧公开文本未闭合开头标签 fail closed从该位置起抑制字符串剩余部分更进一步任何归一化后像 private 开头但格式不良的构造NUL/控制字符插入、全角 Unicode、丢失右尖括号一律视为不可信开头并 fail closed不尝试宽松 HTML 恢复第 22-31 行。该边界应用在 reviewer 推断之前、reviewer 调试/错误序列化之前、类型化条目路由、规范词法排序、图扩展、get、export 与 rebuild 之前。类型化条目的净化是递归的覆盖 content 及承载持久化语义的元数据——标题、名称、rationale、session provenance、entries、related slugssanitizeTypedItemForPersistence剥离后变空的必填字段会被拒绝。原生转录保留期限制harness 转录可能在 harness 文档所述 30 天保留期内保留private内容这超出 Cortex 控制范围。Cortex 不触碰转录字节私有标签只是持久化与处理边界不是对 harness 转录、终端回显、上游提供方日志的清洗承诺CortexContract.md。5.2 资源硬上限拒绝上限不是目标值全部硬上限与源码一致CLI 层 LIMITS、CANONICAL_CORPUS_LIMITS类型化条目层 MemorySystem.ts表面上限检索查询2,048 字符、64 词法词元列表页大小100Timelinebefore/after各 0–100图扩展100 节点、50,000 估算 token显式get/exportID 数100CLI 写 payload262,144 字节类型化自由文本字段65,536 字符类型化元数据字符串1,024 字符提案目标路径4,096 字符热记忆集合48 条、每条 256 字符Related 链接数64规范语料读取前检查10,000 文件、单文件 8 MiB、总量 128 MiB、50,000 记录最后一行是语料级 fail-closed 上限enumerateCanonicalCorpus 在读取任何内容之前检查文件数、单文件字节、总字节与记录数超限一律integrity_error。5.3 有效期窗口与规范源有效期语义在 isEnvelopeValidAtvalid_from含边界、valid_until不含边界缺失边界视为开放非法边界 fail closedDate.parse出 NaN 即返回 false。search/timeline/get/export 默认排除查询时刻不生效的记录--from/--to是另一维度——约束created不覆盖也不替代有效期判定。规范源方面Markdown 与 JSONL 保持规范地位派生索引可丢弃、不能成为事实源。默认检索语料是KNOWLEDGE/树排除下划线/点号前缀路径规范根下的根级*_MEMORY.md也被纳入MEMORY/KNOWLEDGE/布局用于隔离测试canonicalFiles 三级回退。缺失 Markdown ID 的记录获得稳定路径派生 IDpath: 路径 SHA-256 前 16 位第 134 行provenance 使用相对规范根的路径更换绝对根别名不改变记录摘要规范读会再次执行隐私净化防止旧的已标记内容绕过当前边界。系统发布的 CORTEX_INDEX_POLICY.json 是肯定性的no-index-v1标记。有标记且无索引清单时BM25 直读规范文件、status报告indexes:[]、健康检查把此明确状态报告为健康的no-index-v1——不会为证明未采用索引而遍历或哈希整个语料CortexHealth.ts。若清单与标记双双缺失索引状态歧义健康检查仅告警index-evidence-missing标记格式错误则是 critical。六、证据门控质量与健康如何被证明6.1 检索基准比较披露成本而非比较算法基准 CLI 是 CortexBenchmark.tsbun 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带标签查询集存放在私有 MEMORY 树中由操作者在自己的语料上、首次基准运行前自行编写不随系统发布。每行标签必须携带lifeos-cortex-benchmark-label-provenance/v1溯源第 7-11 行证明期望 ID 来自真实live-cortex-cli执行与人工语料核验且verified_ids必须与expected_ids逐一对应validateEvidence。方法学上最关键的设计基准测试导入生产代码activeCortexRecords、rankBM25、toCortexCard与规范摘要函数第 5 行而不是携带基准专用排序器。每条带标签查询运行 25 次每次采样只做一次生产排序并把同一排序结果在两种披露测量间共享第 147-161 行bm25-baseline序列化完整 top-5 记录progressive序列化 top-5 卡片、仅抓取被选中的第一条完整记录。因此排序质量刻意完全相同被比较的是披露与注入成本而不是两个检索算法。每个配置报告 Recall5、MRR、时序成对排序准确率、假阳性召回、注入 token、p95 延迟、延迟样本数、语料盘上字节数、实测磁盘增长、后代进程数、峰值 RSS 与执行路径名BenchmarkMetrics还报告语料分词次数与排序运行次数防止卡片优先比较掩盖重复检索工作。持久化输出必须位于解析后的MEMORY/BENCHMARKS/之下、使用版本化文件名cortex-benchmark-vN-*.json且不覆盖已存在的报告checkedOutputPath 与flag:wx写入第 231 行。向量索引的采用门槛当前vector_config恒为null第 171 行。采纳向量或混合索引的前提是一份带标签的报告证明了相对渐进式 BM25 的检索质量提升且索引可规范重建、保持在单独文档化的磁盘与进程边界内。仅仅降低 token 用量不构成采纳向量索引的证据。6.2 运营健康缺失的证据永远不产生绿灯status报告契约可用性运营健康来自另一个工具bun LIFEOS/TOOLS/MemoryHealthCheck.ts --json机器可读报告含overall、实测证据、生效阈值、findings以及按 ok/warn/critical 派生的健康退出码 0/1/2MemoryHealthCheck.ts。默认阈值定义在 CortexHealth.ts证据默认阈值越界结果Reviewer 成功新鲜度7 天陈旧 WARN进行中 reviewer 终行宽限10 分钟超时 CRITICAL检索证据新鲜度24 小时缺失/陈旧 WARN待审提案积压10WARN可观测性字节数256 MiBWARN最老可观测性日志年龄30 天WARN已采用索引新鲜度7 天WARN判定规则assessCortexEvidence最新reviewer 证据优先于历史成功最新一次运行失败、解析失败、超时、格式错误或 schema 不完整均为 CRITICAL新运行目录在 10 分钟宽限后仍无终行即判超时第 128 行格式错误的 JSONL 被暴露而不是静默跳回上一次成功非法或未来时间戳不能证明新鲜度第 90 行提案证据只统计状态恰为pending的行可观测性证据递归测量MEMORY/OBSERVABILITY/下全部.jsonl/.log报告字节数、文件数与最老 mtime第 141-155 行对未来的派生索引lifeos-cortex-index/v1清单必须给出规范 SHA-256、索引路径与 SHA-256、indexed_at清单非法、路径违规、索引字节缺失或哈希不匹配均为 CRITICAL第 188-196 行。已验证的缺失清单是健康的no-index-v1词法基线它不是把未测量的索引状态称为健康的借口。阈值覆盖只接受有限正数值非法值产生 critical 的cortex-threshold-invalidfinding而不是让比较失效第 351 行。运营覆盖变量为CORTEX_RETRIEVAL_STALE_MS、CORTEX_PROPOSAL_BACKLOG、CORTEX_OBSERVABILITY_MAX_BYTES、CORTEX_OBSERVABILITY_MAX_AGE_MS第 354-357 行测试/自动化路径使用CORTEX_HEALTH_ROOT、CORTEX_HEALTH_NOW、CORTEX_INDEX_MANIFEST、CORTEX_HEALTH_NO_WRITE、CORTEX_HEALTH_REPORT_PATH。七、收尾不声明清单与延伸阅读明确的不声明清单CortexContract.md——已实现的升级不提供MCP 服务器或网络 API跨设备或云端同步CMEM / CMEM Cloud / Chroma / SQLite FTS / 嵌入 / 向量索引外部 Cortex 遥测Cortex 守护进程或常驻 sidecar所有 hook/通道/采集表面的自动采纳对原生 harness 转录的清洗从搜索结果自动注入完整记录。延伸阅读MemorySystem.md — 记忆架构、策展分层、写者与目录清单ObservabilitySystem.md — 健康证据与本地可观测性管线CaptureEnvelope.ts — private span 剥离与有效期判定的实现CortexAdapter.ts — 随系统发布的进程内读/写适配器工厂CortexBenchmark.ts — 基准方法与lifeos-cortex-benchmark/v1报告 schemaCortexHealth.ts — 证据收集与 fail-closed 评估器。适用前提提醒以上全部描述以当前仓库LIFEOS/TOOLS/的实现为准运行环境要求 Bun 运行时与已部署的~/.claude/LIFEOS/MEMORY或CORTEX_MEMORY_ROOT指定的规范根私有 MEMORY 树中的基准标签、检索日志与索引清单均为操作者本地资产不随开源仓库分发。若文档与源码出现不一致以源码为准——本文行号即核对基准。【免费下载链接】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),仅供参考
返回列表