v0.25.0.zh.md
docs/i18n/release-notes/v0.25.0.zh.md
Tesserae v0.25.0 — Descent:在单个上下文窗口内导航任意规模的图
<!-- translations:start -->
English · 한국어 · 日本語 · Русский · Español · Français · Deutsch
<!-- translations:end -->
发布于 2026-07-24 · PyPI · GitHub 发布 · pip install --upgrade tesserae==0.25.0
编译后的项目图迟早会超出任何上下文窗口——参考项目序列化后已达 250 万 token,是 200k 窗口的 12 倍,而且还在持续增长。扁平检索找得到 单个节点,但代理始终无法纵览整个图:唯一有界的概览是最粗粒度的 47 个社区摘要层,其下的一切都不可见。本版本推出 Descent(下潜):把 层级结构变成查询时的契约,让代理只需几次有界调用,就能从全图概览一路 导航到单个节点——无论图有多大。
1 · graph_map — 一个工具,下潜所有图
一个新的 MCP 工具 graph_map(scope, budget_chars, cursor) 把所有知识源 统一成同一种形态:以预算打包的卡片作答的作用域树。不传 scope 返回 根地图——图的统计数字、枢纽警告,以及最粗粒度的社区卡片。传入社区 id 则沿树状图(dendrogram)下潜一层;最细一层列出成员节点。agent:<key> 渲染某个代理的蒸馏 L1 索引,org:root 渲染代理组织树,<alias>:: 渲染 兄弟项目的地图——同样的卡片、同样的协议、没有特例。每张卡片都带有 parent_scope,因此上升不过是再调一次 graph_map;超出预算的层级会 确定性地分页(+N more, cursor=K),而不是无声截断。
2 · 层级一直都在——现在被保留下来了
Louvain 本来每次编译都会算出完整的树状图;我们过去只取其中一层,其余 全部丢弃。现在编译会把它完整持久化到 .tesserae/hierarchy.json 边车文件——在参考图上共 4 层——并且它是图内容的纯确定性函数:固定 种子、规范排序、零 LLM 调用,5 千节点如此,100 万节点也如此。 graph.json 的字节不受任何影响,全量与增量编译的一致性检查现在会断言 每一层的树状图完全相同,过期的社区摘要缓存也会按所有层级的存活状态 清理。
3 · CTX-01 — 任何工具响应都不会超出预算,永远不会
一个统一的 fit_to_budget 辅助函数现在钳制每一个 MCP 响应:逐条目 上限、确定性准入、一行续读提示。可能淹没会话的工具都已修复—— query_decisions 和 find_session_findings 新增 limit 参数, list_communities 返回成员计数加句柄而不是数千个原始 id, search_nodes/node_context/timeline/search_facts 逐条截断。 会话成本现在是 depth × budget——与图的大小无关。
4 · 摘要出现在你真正查看的地方
细粒度社区的标题是惰性生成的:第一次下潜到尚未摘要的作用域时发起 一次 LLM 调用,以成员集合摘要(membership digest)作为缓存键;没有 客户端时退回到确定性的结构化标题——从不阻塞、从不抛错。摘要之摘要的 提示词经过引用校验(不引用任何子社区的文本会被拒绝),因此上层 永远不会偏离它所概括的内容。守护程序的睡眠周期新增第三个操作 SUMMARIZE,为代理真正访问的社区预热缓存——把每个 tick 的有界 LLM 预算花在需求上,而不是花在语料库的规模上。
5 · 分层上下文编译
compile_context 学会了 scope=<community>——把检索限制在社区的诱导 子图内,从结构上根除枢纽爆炸——以及 strategy="hierarchical":先匹配 摘要层,再下潜命中的分支,最后在分支内部运行 PPR。PPR 投影新增可开关 的度数上限和来源边降权,用来削弱超级枢纽。默认路径保持字节一致;两项 功能在 A/B 验证之前均为可选启用。
升级
pip install --upgrade tesserae==0.25.0
重新编译一次以写出层级边车文件,然后让你的代理调用 graph_map()—— 整张图尽在掌握,一次一页,页页有界。