从零理解 Semantix
要理解 Semantix,可以从一个约束开始:模型上下文有限、工具执行有成本,而历史会话里并不是所有内容都值得再次使用。
1. 为什么 transcript 不等于记忆
保存聊天记录只解决“没有丢失”。当新任务到来时,系统仍需回答:哪一段历史相关、属于哪个项目、是否已经过期、能否直接复用结果、使用后有没有帮助。
如果把所有历史原样塞回 prompt,会同时增加 token、噪声和指令注入风险。因此 Semantix 选择先抽取有边界的语义切片,再做检索和分级复用。
2. 为什么需要作用域
记忆至少有三种寿命:只属于当前会话、属于某个项目、属于这个用户。把它们混在一个全局池会造成跨项目污染;全部限制在单会话又失去跨会话价值。
session、project、user 作用域是数据隔离和召回范围的第一道边界。它不是访问控制的替代品,敏感内容仍应在导入前脱敏。
3. 为什么检索不能直接批准复用
BM25 可以找到相同错误文本,向量检索可以找到同义描述,混合检索可以降低两者各自的盲区。但它们衡量的是相关性,不是世界状态是否相同。
例如,“上次依赖升级成功”与当前任务高度相关,但锁文件已经变化。直接复用上次结果可能错误;把升级步骤作为 L2 背景则通常风险较低。
因此 Semantix 使用 hit、grey、miss 表达检索证据,再为 L3 增加依赖指纹、规则门和可选 judge。无法证明安全时恢复正常执行。
4. 为什么有三级缓存
三层缓存对应三种不同的复用对象:
- L1 复用供应商对稳定 prompt 前缀的计算。
- L2 复用历史经验文本,但模型和工具仍继续工作。
- L3 复用经过验证的结果,可能跳过重复执行。
把三者叫作“缓存”不代表它们有相同语义。L3 的风险远高于 L1,因此不能只用一个相似度阈值控制全部路径。
5. 调度与预取为什么属于 Kernel
Harness 知道当前对话和工具,Kernel 能积累跨会话统计。调度器把这一统计转成 round plan;预取器利用历史转移模式提前读取可能需要的资源。
预测会失败,所以 runner 应限制在可撤销、低风险的只读动作,并同时记录命中和浪费。预取不是越权执行未来步骤。
6. “演化”实际指什么
当前仓库中的演化是有边界的参数更新,例如根据反馈调整检索阈值和注入预算。更新使用平滑、上下界和逃逸机制,结果可检查。
它不表示系统能够自动重写所有策略,也不表示使用次数越多就必然提高任务质量。是否有效必须通过真实会话、人工标签和任务结果验证。
7. 系统的失败原则
Semantix 是优化层。读取记忆失败、候选不确定、judge 不可用或预取被拒绝时,宿主应继续正常完成用户任务。这是 fail-open。
Fail-open 不意味着安全检查失败后仍使用缓存;它意味着放弃本次优化,回到原始执行路径。
8. 如何评价这个项目
先分四层证据:设计文档说明要做什么,代码和测试说明指定路径如何工作,合成回放说明夹具上的效果,真实生产数据才说明某个部署中的实际收益。
Semantix 已具备可运行的实现和仓库级证据。对于泛化成本和性能优势,仍应在你自己的模型、仓库和会话分布上运行 verify、人工抽查候选,并对照真实账单。