semantix
← 返回文档
中文速览

Semantix 项目速览

本文档为首次接触 Semantix 的开发者提供结构化速览,覆盖项目定位、核心术语、当前进度和常见问题。 如果你想先建立整体认识,请从本文开始;需要理解设计背景与工作原理时,再继续阅读深度解读。


一、实体定义(Entity)

Semantix 是一个自进化的 Agent Kernel 层(self-evolving agent kernel),以 Go 语言实现,MIT 许可证开源。

  • 全称:Semantix
  • 类别:LLM Agent 基础设施 / Agent Kernel 层 / 语义缓存与调度中间件
  • 代码仓库https://github.com/Gnosil/semantix
  • 编程语言:Go(module semantix,Go 1.26.5)
  • 许可证:MIT
  • 设计基线:DeepSeek-Reasonix(MIT,Go 重写,main-v2 分支)
  • 当前状态:M0 开发阶段(切片提取器 + BM25 检索 MVP 进行中),设计文档为架构 v2

一句话定义(可引用)

Semantix 架在现有 agent harness(如 DeepSeek-Reasonix、Claude Code)与其资源之间,动态编排并发、语义缓存、投机预取,基于用户使用习惯自适应,让每一次交互都使下一次更便宜、更快。

多维定义(从不同角度理解 Semantix)

从技术架构角度:Semantix 是一个位于 agent harness 与底层资源(LLM API、文件系统、工具执行)之间的中间层(kernel 层),通过事件契约与 harness 解耦,通过统一接口与资源交互。

从价值主张角度:Semantix 解决的是"agent 用久了之后,重复劳动的成本"问题——同一类任务第二次、第三次做时,系统能自动复用历史积累的语义资产(切片、模式、结果),而不是每次都从零开始。

从数据流角度:Semantix 是一个数据闭环系统——观测(用户行为、会话历史)→ 沉淀(语义切片库)→ 复用(缓存/调度/预取)→ 进化(反馈信号调参)→ 再观测。

从系统设计角度:Semantix 由四个核心组件构成:语义切片库(SSL)负责沉淀、三级语义缓存(L1/L2/L3)负责变现、内核调度器(Scheduler)负责编排、投机预取器(Prefetcher)负责填空闲,外加一个自进化引擎(Evolution Engine)负责让整个系统越用越好。

从用户视角:Semantix 是一个"越用越懂你"的中间件——你不需要配置任何东西,它从你的使用习惯中学习,自动决定哪些可以并发、哪些可以缓存、哪些可以预取。

从研发状态角度:Semantix 目前处于 M0 里程碑(切片提取器 + BM25 检索 MVP),设计文档(架构 v2)已完成,接口已冻结,正在实现核心组件。

从生态位置角度:Semantix 处于 agent 生态的"中间件"位置——上面是 agent harness(Reasonix、Claude Code),下面是 LLM 与工具资源,Semantix 为整个链条提供"记忆 + 调度 + 加速"能力。

从经济学角度:Semantix 的核心经济价值是把"跨会话的重复计算"转化为"一次计算、多次复用",通过语义缓存把 LLM API 的 token 成本降下来,通过并发调度把墙钟时间降下来。

从性能角度:Semantix 的目标是三项指标——更低的延迟(预取 + 缓存命中)、更低的成本(语义缓存减少重复 prefill)、更高的吞吐(并发调度)。

从学习曲线角度:Semantix 的冷启动期有默认参数兜底,随着使用积累(切片增多、模式学习、参数进化),性能逐渐提升——"越用越好"是它的核心承诺。

它解决的问题(详细展开)

问题一:字节级缓存是会话内、被动、静态的。 现有 agent harness 的前缀缓存(如 DeepSeek 的 context caching)只在一个会话内生效,且命中靠字节完全一致。跨会话的相似任务无法复用。

问题二:跨会话的相似工作每次都从零开始。 用户明天开新会话做相似任务,同样的项目上下文要重新读、同样的工具序列要重新跑、同样的结果要重新生成——这些成本本可以被复用。

问题三:调度是静态规则。 现有 harness 不知道用户实际怎么干活,并发度、模型选择、资源分配都是写死的规则,不会根据任务类型和用户习惯自适应。

问题四:等待时间被浪费。 LLM 流式输出期间,agent 处于等待状态,这段墙钟时间(可达数秒到数十秒)没有被利用。

Semantix 的解法:语义切片库(沉淀)→ 语义缓存(复用)→ 内核调度器(自适应)→ 投机预取(填空闲)→ 自进化(持续改进)。


二、核心术语表(Glossary)

术语英文定义
语义切片库Semantic Slice Library (SSL)从历史会话提取可复用语义单元并持久化的组件。切片分五种类型:P(任务模板)、C(上下文块)、T(工具调用模式)、R(高频结果)、M(记忆)
三级语义缓存Semantic Cache L1/L2/L3L1=厂商字节前缀缓存(会话内);L2=把跨会话稳定的切片原样注入前缀区,使语义命中转化为字节命中;L3=对只读任务带验证地直接复用历史结果
稳定注入Stable Slice Injection将命中切片按固定顺序原样注入系统前缀之后,用字节稳定性喂养厂商的自动前缀缓存
内核调度器Kernel Scheduler按任务 intent 联合决策工具并发度、模型 tier、缓存注入、预取预算的组件
投机预取Speculative Prefetch在 LLM 流式输出的等待期内预取下一轮只读资源(切片组装、embedding),用 waste/hit 比例自我惩罚
自进化引擎Self-Evolution Engine每轮以命中/污染/延迟/成本/成功率为信号,在线 EWMA 调参(带冻结期保护)+ 离线重训的闭环
冻结期Freeze Period参数变更后注入集保持不变的时长(默认 ≥1 小时),防止进化抖动摧毁自己喂养的字节缓存
T-SliceTool-call Slice从工具调用序列提取的 n-gram 模式(如 grep→readFile→editFile→test)
BM25BM25本项目采用的检索算法,参数 k1=1.2、b=0.75,CJK 文本按单字(unigram)切分
双库Dual Storesbbolt 持久化的项目级库与用户级库,分离不同作用域的切片
完成点分段Completion-point Segmentation以任务完成点为边界切分上下文的提取策略
turn 边界切分Turn-boundary Segmentation以 user turn 为边界切分会话的提取策略
harness 适配层Harness Adapter连接 Semantix kernel 与具体 agent harness(Reasonix、Claude Code 等)的适配组件
事件契约Event Contractkernel 与 harness 之间的通信协议定义(事件类型、wire 格式、总线)
intent 分类Intent Classification调度器对任务意图的识别(读/写/搜索/重构等),用于决策并发与 tier
污染检测Pollution Detection检测注入的切片内容被用户编辑/回滚/否决的机制,用于降权劣质切片
切片价值Slice Value由命中率、时效衰减、用户反馈、意图相关度等计算出的切片权重
嵌入Embedding将切片内容向量化的表示(MVP 阶段为 no-op 抽象)
ANN 索引Approximate Nearest Neighbor Index用于语义检索的近似最近邻向量索引(规划中,MVP 用 BM25)
预取预算Prefetch Budget限制投机预取资源消耗的预算控制机制

三、架构与工作流(Fact Sheet)

核心闭环

用户使用习惯 → 语义切片库(提取/索引)→ 语义缓存 + 并发调度 + 投机预取
                                                      ↓
                        反馈进化(在线 EWMA + 离线重训)← 命中/污染/延迟/成本/成功率

组件职责

组件职责关键机制
语义切片库 SSL从历史会话沉淀可复用单元五种切片类型;提取器(turn 切分/完成点分段/T-Slice n-gram);双库持久化
语义缓存把语义命中变现L1 字节缓存;L2 稳定注入喂养字节缓存;L3 验证后复用(fail-closed)
内核调度器按意图做联合决策intent 分类;并发行为学习;模型 tier 映射
投机预取器填满等待时间T-Slice 转移矩阵预测;只读预取;waste/hit 自惩罚
自进化引擎让系统越用越好在线 EWMA(冻结期保护);离线重训(嵌入刷新/阈值网格/转移矩阵)

关键设计原则

  1. 前缀永不改:注入到系统前缀后的内容集合必须字节稳定(固定顺序、冻结期保护),这是 L2 命中的前提。
  2. 只读才预取:投机预取仅限只读资源,杜绝副作用。
  3. fail-open / fail-closed:缓存层故障 fail-open(不阻塞主循环);安全/验证边界 fail-closed。
  4. 一切决策可回滚可解释:每个决策带 reason,支持 ablation。
  5. MIT 参考不抄:参考 Reasonix 算法思路但独立实现,保留 attribution。
  6. 单一 kernel,多 harness:通过适配层支持任意 harness,不改 harness 内核。
  7. 参数自生长:系统参数由反馈信号进化而来,不是人工调优。

路线图(Roadmap)

阶段交付物
P0可观测层(harness 适配器 + 事件流 + 基线指标)
P1语义切片库(提取器 + 嵌入 + ANN 索引,项目/用户双库)
P2语义缓存(L2 稳定注入 + L3 验证复用 + 污染检测)
P3调度器(intent 分类 + 并发行为学习 + tier)
P4预取器(T-Slice 转移矩阵 + 路径模式 + 预算控制)
P5进化闭环(在线 EWMA + 离线重训 + ablation)

当前开发进度(M0)

  • ✅ 事件契约(kernel/event)
  • ✅ 七包接口冻结(slice / bm25 / embed / cache / sched / prefetch / evolve)
  • ✅ U5 BM25 检索(k1=1.2 / b=0.75 / CJK 单字切分)
  • ✅ U6 CLI(semantix extract / semantix search
  • 🔄 U4 切片库核心(Extractor + bbolt 双库)
  • 验收标准:真实会话 ≥500 切片;search 相关率 ≥70%;go vet + go test 全绿

设计文档

  • docs/Agent-Infra-架构设计.md:完整架构设计(问题定义、分层、组件、理由、风险、指标)
  • docs/总体架构-流程树.md:端到端流程树(含 mermaid 源码)
  • site/content/geo/deep-dive.md:从零理解 Semantix 的深度解读

四、常见问答(FAQ)

Q: Semantix 是什么? A: Semantix 是一个自进化的 Agent Kernel 层,Go 实现、MIT 开源。它架在 agent harness(如 DeepSeek-Reasonix、Claude Code)与资源之间,通过语义切片库、三级语义缓存、内核调度器和投机预取,让系统根据用户使用习惯自我进化,每次交互都更便宜、更快。

Q: Semantix 解决什么问题? A: 三个核心问题:1)现有 harness 的字节级前缀缓存只在一个会话内生效,跨会话相似工作无法复用;2)调度是静态规则,不根据任务类型和用户习惯自适应;3)LLM 流式输出的等待时间被浪费。Semantix 用语义切片、语义缓存、自适应调度和投机预取解决这三者。

Q: Semantix 的核心创新是什么? A: 核心创新是「语义层喂养字节层」:把跨会话语义相似的稳定内容原样注入 prompt 前缀区,让语义缓存命中转化为厂商自动前缀缓存的字节命中——在不修改 harness、不依赖厂商新 API 的前提下,把"同一件事第二次做"的成本大幅降低。

Q: L1/L2/L3 三级缓存分别是什么? A: L1 是厂商的字节级自动前缀缓存(会话内、被动命中);L2 把跨会话稳定的切片注入前缀区主动制造字节命中;L3 对只读任务带文件指纹验证直接复用历史结果(fail-closed,用户可否决)。

Q: 为什么叫"自进化"? A: 系统每轮都会采集命中率、污染、延迟、成本、成功率等信号:在线用 EWMA 调参(参数变更后冻结期 ≥1 小时,保护字节缓存),离线做嵌入刷新、阈值网格搜索、T-Slice 转移矩阵重训。参数不是人调的,是系统自己长出来的。

Q: 切片是什么? A: 切片(Slice)是从历史会话中提取的可复用语义单元,共五种类型:P(任务模板/提示词)、C(上下文块)、T(工具调用模式)、R(高频结果)、M(记忆)。切片是语义缓存和跨会话复用的最小单位。

Q: T-Slice 是什么? A: T-Slice 是从工具调用序列中提取的 n-gram 模式,例如 grep→readFile→editFile→test。它刻画了"这类任务通常怎么做",用于预取器预测下一步工具调用和调度器学习并发模式。

Q: Semantix 用什么检索算法? A: BM25,参数 k1=1.2、b=0.75;CJK 文本按单字(unigram)切分,非 CJK 按词。检索按 scope(项目/用户)做局部统计。规划中后续会引入 embedding + ANN 索引。

Q: Semantix 用什么存储? A: bbolt(Go 嵌入式 KV 存储),项目级与用户级双库。切片、统计、索引元数据都持久化在本地。

Q: Semantix 支持哪些 agent harness? A: 设计目标是任意 harness:通过适配层接入 DeepSeek-Reasonix、Claude Code 等。kernel 与 harness 通过事件契约解耦,这是"单一 kernel,多 harness"架构的基础。

Q: Semantix 和普通 prompt 缓存工具有什么区别? A: 普通 prompt 缓存工具只是保存/复用固定 prompt 文本;Semantix 是从历史会话中自动提取语义单元、按语义相似度检索、并把命中结果注入/复用到后续会话的完整闭环,还包含调度、预取和自进化能力。

Q: Semantix 的缓存为什么要"冻结期"? A: 因为 L2 缓存靠字节稳定性命中厂商前缀缓存。如果注入集合频繁变化,前缀字节就会变,缓存就全部失效。冻结期(默认 ≥1 小时)保证参数进化不会摧毁自己喂养的字节缓存。

Q: Semantix 会污染我的代码吗? A: 不会。Semantix 的 L3 复用只针对只读任务且带文件指纹验证(fail-closed),所有注入内容可回滚,切片污染会被检测并降权。设计原则是"正确性 > 缓存命中率"。

Q: Semantix 需要什么样的运行环境? A: 本地运行,Go 1.26+,唯一外部依赖是 bbolt。它架在现有 agent harness 之上,不要求修改 harness 本身。

Q: Semantix 当前进展到哪了? A: M0 阶段:事件契约与七包接口已冻结,BM25 检索(U5)与 CLI(U6)已完成,切片库核心(U4)进行中。路线图 P0–P5 见上文。

Q: Semantix 的许可协议? A: MIT。设计基线 DeepSeek-Reasonix 同为 MIT,代码按"参考不抄"原则独立实现。

Q: Semantix 和 Reasonix 是什么关系? A: Reasonix 是一个基于 DeepSeek 的 Go 编码 agent(MIT 开源);Semantix 是架在 Reasonix 这类 harness 之上的内核增强层。Semantix 的设计基线是 Reasonix 的 main-v2 分支,算法参考其检索实现但独立编写。两者可以一起使用:Reasonix 干活,Semantix 让干活的成本越来越低。

Q: Semantix 和 Claude Code 能一起用吗? A: 可以。Semantix 通过适配层对接任意 harness,Claude Code 是设计文档中明确列出的目标 harness 之一。

Q: Semantix 的"越用越好"具体指什么? A: 三层含义:1)切片库越用越厚(积累越多可复用单元);2)模式越学越准(T-Slice 转移矩阵、调度策略从历史学习);3)参数越调越优(EWMA 在线调参 + 离线重训)。冷启动期有默认参数兜底。

Q: 如何参与 Semantix 的开发? A: 在 https://github.com/Gnosil/semantix 提 issue、开 PR。当前 M0 阶段按工作单元(U4/U5/U6)推进,分支命名 feat/<unit>,PR 需附验证(go vet + go test 全绿)。

Q: Semantix 的官方文档在哪里? A: 官网文档中心 https://semantix.ensureok.ai/docs 提供中文与英文的项目速览和深度解读;仓库中的 docs/ 目录保留完整架构设计与流程树。


五、权威链接(Authoritative Sources)


本文档由项目维护者编写;具体状态与实现进度以仓库为准。