ADR-0008注入分档恢复+新建lookup_relation工具 #114
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#103 第四批清单:31 条实现类落差 + 9 条待拍板(条目 14;含两条已在评估侧单独拍板的结论,原样落地)
What to build
ADR-0008「保留 dxkuma ADR-0009 全部结构」承诺的"注入分档"(显式边 + 同事件共现自动注入;同群共现按需查询)在 2026-07-13 的一次"修复漏实现"更新中被无意推翻——同群共现也变成了每轮自动(
gather_implicit_relations),且这条路径实测是 n 次 + n(n-1)/2 次 DB 往返、跑在前台热路径上。"按需"这一档目前没有机制:lookup_relation只是个纯函数,没有对应的模型工具。同时"独立封顶"这半在关系注入侧完全没有实现——gather_relationship_edges无 LIMIT/ORDER BY 拉全历史边,渲染三段全是无条件列表推导。评估侧已单独拍板:恢复分档 + 新建
lookup_relation工具。本票按此落地,两半(分档恢复 / 独立封顶)作为两条并列的 AC,不要合并处理——ADR-0009 对画像明文否决硬上限,ADR-0008/0015 对关系/触发注入则明文允许上限,两条规则相反。Acceptance criteria
一、恢复注入分档
runtime_loop.py两处gather_implicit_relations(...)自动调用:_full_frozen_snapshot(被run()与run_callback()两个入口共用,摘除影响两者)与_run_event_driven_turn(此处实测已是空转——sender_ids最多 1 个 id,gather_implicit_relations开头len(unique_ids) < 2即返回,摘掉零行为变化)gather_implicit_relations若在生产侧无引用,明确处置(删除,或改造为下述新工具的批量路径)lookup_relation(不经工具港,同search_stickers先例;计入run_limit,不豁免;不新开成本池,记进调用它的路径已有的池):tools.py加常量 + schema + 在build_tool_schemas追加,runtime_loop加_handle_lookup_relationhandler 并接入既有工具分发分支(_handle_search_memory/_handle_search_stickers那一段),内部复用既有lookup_relation纯函数gather_relationship_edges及其渲染路径一行不改tests/test_runtime_loop.py::test_co_occurring_senders_without_an_edge_get_an_implicit_relation_line改造成针对新工具的测试,不能静默删除;同文件test_an_explicit_edge_suppresses_the_duplicate_implicit_line在自动档消失后重新定位原文(docs/adr/0008-relationship-network.md「背景」节):
原文(docs/adr/0031-on-demand-memory-search.md「拒绝了」节第 2 条——每轮自动正是本次要摘掉的形状):
二、独立封顶(与上面分档恢复是两件独立的事,不要合写成一条)
arise_max_relationship_lines_per_turn),穿_build_runtime_loop→render_relationship_snapshot,对显式边渲染的行数设上限gather_relationship_edges/render_relationship_snapshot拉取与渲染逻辑接上这个上限(当前storage.get_relationship_edges(sender_id)无 LIMIT/ORDER BY 拉全历史边,axes/edge_lines/implicit_lines 三段渲染全是无条件列表推导)原文(docs/adr/0008-relationship-network.md「决策」节第 1 条):
三、边界(明确不要做的事)
Blocked by
None — can start immediately