iomgaa
f4f92b0938
feat(search): 实现 SearchToolDispatcher 工具调度器 (Task 7)
...
- 新增 app/search/tools.py:
- get_tool_descriptions() 工具描述文本(与 TRM4 一致)
- SearchToolDispatcher 类实现 ToolDispatcher Protocol
- dispatch() 按工具名路由: view_node / search_similar /
observe_frame / submit_answer / read_skill
- ValueError(未知工具)上抛,KeyError/FileNotFoundError 捕获返回错误文本
- view_node: env.get_node_text + summarize_node + get_children_info + summarize_children
- search_similar: env.search_similar + summarize_nodes_batch
- observe_frame: env.resolve_frame_paths + get_subtitle + observe_frame + 字幕前置
- 修复 app/tree/environment.py get_children_info():
- 原实现返回 _format_time_range (str) 导致 summarize_children 解包失败
- 改为返回原始数值元组 via 新增 _node_time_range_raw 静态方法
- 新增 tests/unit/test_search_tools.py (14 tests):
- get_tool_descriptions 含/不含 read_skill
- 五种工具 dispatch 路由验证
- 未知工具 ValueError + 节点不存在错误文本
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 06:07:27 -04:00
iomgaa
82f1607195
style: format environment.py
2026-07-07 05:46:25 -04:00
iomgaa
44ee62867d
feat(tree): add get_node_text + get_children_info to TreeEnvironment
...
- get_node_text(node_id, anchor=False): returns raw text + optional
anchor_map dict by parsing [cN]/[sN] prefixes from anchored text
- get_children_info(node_id): returns structured child list with
id/time_range/summary (description truncated to 120 chars)
- Both methods reuse existing internal helpers (_node_full_text,
_node_anchored_text, _get_children, _node_description,
_format_time_range)
- 9 new test cases across TestGetNodeText and TestGetChildrenInfo
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 05:45:48 -04:00
iomgaa
4686adf266
feat(tree/repair): 检测器扩展 — visible_entities/ongoing_actions/spatial_layout 为空也触发修复
2026-07-07 03:15:42 -04:00
iomgaa
18971a794b
feat(tree/repair): Q&A 反向补全 — 从 TRM4 supplement 迁移
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 02:37:50 -04:00
iomgaa
edaa0d8290
feat(tree): VideoTreeBuilder 保真 #1 #2 #3 + 复杂度重构
...
- 从 reference/video_tree_trm/video_tree_builder.py (994行) 迁移
- 保真算法 #1 : L2 轴心建树策略 (asyncio.gather 链式并发)
- 保真算法 #2 : VLM 批量帧描述 + JSON fallback (_L3_BATCH_SIZE=5)
- 保真算法 #3 : 断点续跑 (progress.json + L1 中间 JSON)
- 新增: VLMProvider/LLMProvider Protocol 替代 LLMClient
- 新增: 结构化 JSON 输出 → L1Card/L2Card/L3Card
- 新增: L2 代表帧复用 L3 帧 (_sample_representative_frames)
- 新增: 字幕注入 + Voronoi 分配
- 重构: 提取 _load_resume_state/_assemble_roots 降低 _build_async 复杂度 D(21)→C(14)
- 44 个单元测试全部通过
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 02:17:50 -04:00
iomgaa
12f20493c1
feat(tree): 质量校验 — 交叉验证 entities/visible_text
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 01:57:32 -04:00
iomgaa
fb6f9964d8
feat(tree): 字幕模块 — SRT 解析 + 完整性检查 + Voronoi 分配
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 01:54:09 -04:00
iomgaa
547c9ddd84
feat(tree): TreeConfig 配置 dataclass
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 01:41:50 -04:00
iomgaa
e0f7851975
fix(tree): from_dict 增加 ID 唯一性校验
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 01:40:46 -04:00
iomgaa
c136de076d
refactor(tree): extract _embed_l2_subtree to reduce embed_all complexity
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 01:37:09 -04:00
iomgaa
22ad014973
feat(tree): TreeIndex 数据结构 — Card 体系 + 节点 + 序列化
...
- 新增三级 frozen Card dataclass: L3Card(6字段), L2Card(7字段), L1Card(7字段)
- 节点重构: L3Node/L2Node/L1Node 使用 Card 替代原始字符串字段
- 添加 @property 兼容层: description/summary 代理到 Card 字段
- L3Node 新增 subtitle 字段(字幕集成预留)
- JSON 序列化/反序列化支持 Card 结构 + embedding base64 编解码
- load_json 新增 ID 唯一性校验(重复 ID 抛 ValueError)
- 移除 pickle 序列化(仅保留 JSON)
- 日志从 log_msg 迁移到 loguru
- 17 个单元测试全部通过
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-07 01:35:10 -04:00
iomgaa
e60823de1a
build: add README, pyproject.toml, package skeletons and smoke test
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-07-06 11:37:59 -04:00