Files
iomgaa 6bdb802f01 chore: track claude skills, tools, templates, reference code and research-wiki
- Add all claude skills (brainstorming, commit, debugging, TDD, etc.)
- Add claude hooks (pre-commit-guard, post-edit-quality)
- Add research templates (experiment plan, research brief, etc.)
- Add claude tools (arxiv/semantic_scholar/openalex fetch, wiki, exa)
- Add TRM4 reference implementation as algorithm fidelity baseline
- Add research-wiki content (plans, index, graph, query_pack)
- Update .gitignore to exclude .graphify_version runtime state
2026-07-06 20:59:03 -04:00

61 lines
2.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
单视频建树脚本(仅 VLM,不加载 EmbeddingModel
================================================
直接调用 VideoTreeBuilder,跳过 Pipeline 的嵌入模型初始化。
结果保存为 JSON 到 cache/trees/ 目录。
用法::
conda run -n Video-Tree-TRM python scripts/build_tree_single.py \
--video data/videomme/videos/xKiRmesHWIA.mp4
"""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
# 项目根目录加入 sys.path
sys.path.insert(0, str(Path(__file__).parent.parent))
from video_tree_trm.config import Config
from video_tree_trm.llm_client import LLMClient
from video_tree_trm.video_tree_builder import VideoTreeBuilder
from utils.logger_system import log_msg
def main() -> None:
"""构建单个视频的 TreeIndex,仅使用 VLM,不加载 EmbeddingModel。"""
parser = argparse.ArgumentParser(description="单视频建树(仅 VLM")
parser.add_argument("--video", required=True, help="视频文件路径")
parser.add_argument("--config", default="config/default.yaml", help="配置文件路径")
args = parser.parse_args()
# Phase 1: 加载配置 + 初始化 VLM
cfg = Config.load(args.config)
vlm = LLMClient(cfg.vlm)
# Phase 2: 构建树(纯 VLM 描述,embedding=None
builder = VideoTreeBuilder(vlm, cfg.tree)
tree = builder.build(args.video)
# Phase 3: 保存 JSON
stem = Path(args.video).stem
cache_dir = Path(cfg.tree.cache_dir)
cache_dir.mkdir(parents=True, exist_ok=True)
out_path = str(cache_dir / f"{stem}_video.json")
tree.save_json(out_path)
log_msg("INFO", "建树完成,已保存", path=out_path)
print(f"\n[完成] TreeIndex 已保存到: {out_path}")
print(f" L1 节点数: {len(tree.roots)}")
total_l2 = sum(len(r.children) for r in tree.roots)
total_l3 = sum(len(l2.children) for r in tree.roots for l2 in r.children)
print(f" L2 节点数: {total_l2}")
print(f" L3 节点数: {total_l3}")
if __name__ == "__main__":
main()