Elaina
|
224295ccaf
|
fix: selector gain函数使用IDF加权,与文档一致
- selector.select() 接收 idf_cache 参数
- gain = ΣIDF(t) for t ∈ new_anchors / cost^α(与文档公式一致)
- gatekeeper.select() 将 anchor_extractor._idf_cache 传入selector
- sparse.py recency 注释澄清为'新鲜度奖励'而非'时间衰减'
- 所有测试 9/9 通过
|
2026-04-22 09:45:30 +08:00 |
|
Elaina
|
7ced5d9a10
|
docs: 添加论文《上下文门控器》
|
2026-04-22 01:22:13 +08:00 |
|
Elaina
|
64ca67c051
|
fix: 修复 _active_topic 在话题切换后不更新的 bug
问题: _active_topic 只在 continue 时更新,switch 后停留在旧值,导致 overlap 计算失效。
修复:
- select() 每次都更新 _active_topic(无论是否切换)
- 同步调用 topic_gate.update_active_topic() 保持两份状态一致
同时更新 TopicGate 实例的活跃话题状态,解决两份状态独立的问题。
|
2026-04-22 01:14:13 +08:00 |
|
Elaina
|
bbaab47de4
|
docs: 添加 SPEC.md 规格文档
|
2026-04-22 01:12:03 +08:00 |
|
Elaina
|
071f9ef418
|
feat: 上下文门控器初始实现
- anchor.py: 锚点提取(中文 2/3-gram、英文单词、代码标识符)
- block.py: 对话块数据结构
- topic_gate.py: 话题门控(overlap/new_ratio 判断切换)
- sparse.py: 稀疏召回(BM25/IDF-overlap + exact match 加分)
- selector.py: 最小覆盖贪心选择
- gatekeeper.py: 完整流程封装
- tests/: 单元测试 + 端到端测试(含 MiniMax API 验证)
特性:
- 纯 Python,无额外模型依赖
- 支持 2 核 2G 环境
- 话题门控 + 稀疏召回 + 最小覆盖选择
|
2026-04-22 01:09:35 +08:00 |
|