Commit Graph

12 Commits

Author SHA1 Message Date
Elaina
d18a521f9c fix: 修复评审发现的4个高优先级问题
1. sparse.py: 话题切换过滤从赋0分改为continue,真正排除旧话题候选
2. gatekeeper.py: reset() 清空IDF缓存,避免新会话状态污染
3. gatekeeper.py: 句级裁剪后重新估算token数
4. sparse.py: content_words提取纳入所有英文单词(含单字符如'pg')和2字中文词
2026-04-22 12:21:52 +08:00
Elaina
c828fceae9 chore: update README with complete algorithm and 100-round 4-topic results 2026-04-22 12:12:04 +08:00
Elaina
07b66d3b58 chore: update README with full algorithm, remove concrete hardware specs 2026-04-22 11:14:19 +08:00
Elaina
9a2b1e3b6a chore: remove paper, add summary, update README 2026-04-22 10:49:11 +08:00
Elaina
8852f1b1fb chore: remove paper (未完成) 2026-04-22 10:43:50 +08:00
Elaina
a8204a50b5 docs: 更新 README.md,包含算法细节、局限性、适用场景 2026-04-22 09:49:17 +08:00
Elaina
93156cf736 docs: 修正论文与文档不一致处
- recency: '时间衰减' → '新鲜度奖励(越新越大)'
- 删除3.6节句级裁剪(未实现)
- 补充中间地带fallback规则(0.20≤overlap≤0.45默认继续)
- 修正MS MARCO作者:Liu→Nguyen
- 10ms延迟标注为理论估算,移除无依据数据
- 更新局限性描述与实现状态一致
2026-04-22 09:46:47 +08:00
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