From e7be42570d1b8c60d64716e4ec750ecaff6f0c70 Mon Sep 17 00:00:00 2001 From: iomgaa Date: Thu, 9 Jul 2026 12:12:47 -0400 Subject: [PATCH] =?UTF-8?q?feat(store):=20skills/v1=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E9=9B=86=20=E2=80=94=20TRM4=20=E7=B2=BE=E7=AE=80=20+=20TRM5=20?= =?UTF-8?q?card=20=E5=AD=97=E6=AE=B5=E6=B3=A8=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- store/skills/v1/action-reasoning.md | 86 +++++++++++++++++++++++ store/skills/v1/action-recognition.md | 88 ++++++++++++++++++++++++ store/skills/v1/attribute-perception.md | 86 +++++++++++++++++++++++ store/skills/v1/counting-problem.md | 84 +++++++++++++++++++++++ store/skills/v1/default-strategy.md | 81 ++++++++++++++++++++++ store/skills/v1/information-synopsis.md | 83 ++++++++++++++++++++++ store/skills/v1/object-reasoning.md | 85 +++++++++++++++++++++++ store/skills/v1/object-recognition.md | 83 ++++++++++++++++++++++ store/skills/v1/ocr-problems.md | 86 +++++++++++++++++++++++ store/skills/v1/spatial-perception.md | 91 +++++++++++++++++++++++++ store/skills/v1/spatial-reasoning.md | 83 ++++++++++++++++++++++ store/skills/v1/temporal-perception.md | 86 +++++++++++++++++++++++ store/skills/v1/temporal-reasoning.md | 85 +++++++++++++++++++++++ 13 files changed, 1107 insertions(+) create mode 100644 store/skills/v1/action-reasoning.md create mode 100644 store/skills/v1/action-recognition.md create mode 100644 store/skills/v1/attribute-perception.md create mode 100644 store/skills/v1/counting-problem.md create mode 100644 store/skills/v1/default-strategy.md create mode 100644 store/skills/v1/information-synopsis.md create mode 100644 store/skills/v1/object-reasoning.md create mode 100644 store/skills/v1/object-recognition.md create mode 100644 store/skills/v1/ocr-problems.md create mode 100644 store/skills/v1/spatial-perception.md create mode 100644 store/skills/v1/spatial-reasoning.md create mode 100644 store/skills/v1/temporal-perception.md create mode 100644 store/skills/v1/temporal-reasoning.md diff --git a/store/skills/v1/action-reasoning.md b/store/skills/v1/action-reasoning.md new file mode 100644 index 0000000..8cf7720 --- /dev/null +++ b/store/skills/v1/action-reasoning.md @@ -0,0 +1,86 @@ +--- +name: action-reasoning +description: 动作推理类问题——需要推理动作的原因、方式、影响或因果关系 +task_type: Action Reasoning +--- + +## 适用场景 + +问题要求推理视频中行为的原因(Why)、方式(How)、影响(What happened)或选择比较(Which)。 +例: "Why did X do Y?" "What tool had the least impact?" "Which event happened because of Z?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 全景扫描 + +始终以 read L1 开始,不要跳过全景阶段直接搜索。 + +### Step 2: 因果定位 + +根据问题类型选择不同的搜索方式。 + +### Step 3: 证据验证 + +在给出答案前,确保选中的选项有直接的视频证据支持。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "question_asks": "用自己的话改写题目,保留所有限定条件(时间点、行为范围、因果方向)", + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "causal_level": "直接触发 / 间接原因 / 根本原因", + "evidence_type": "direct_quote / visual_description / inference", + "l1_coverage": "已覆盖 X/Y 个 L1 节点" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "search_similar", + "args": {"query": "关键词", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果你引用了字幕原文来支持某个选项,但你的解读改变了原文的主语或因果方向,逐词重读原文,检查 who does what to whom 是否与你的解读一致。 + +## 常见陷阱 + +1. **因果层级陷阱**: Why 问题中常有多个因果层级的选项。Agent 倾向于选"根本原因",但题目通常问的是"直接触发原因"。 +2. **外部知识陷阱**: 用常识替代视频证据是危险的。所有判断必须有视频中的直接证据支持。 diff --git a/store/skills/v1/action-recognition.md b/store/skills/v1/action-recognition.md new file mode 100644 index 0000000..38310d3 --- /dev/null +++ b/store/skills/v1/action-recognition.md @@ -0,0 +1,88 @@ +--- +name: action-recognition +description: 动作识别类问题——需要识别视频中发生了什么动作或行为 +task_type: Action Recognition +--- + +## 适用场景 + +问题要求识别视频中发生的动作、行为或技能。 +例: "What happens when X?" "What are the magic tricks about?" "Which skill is NOT performed?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: L1 全局扫描 + +以 read L1 开始建立全局动作图谱。 + +### Step 2: 分拆式搜索 + +必须对每个选项单独搜索验证,不要将多个选项拼成一个查询。 + +### Step 3: 时间感知验证 + +如果问题包含时间限定词,必须特别小心。 + +### Step 4: 多源证据交叉 + +不要只依赖单一信息源下结论。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "is_negation_question": false, + "branches_explored": "已探索 X/Y 个 L1 分支" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "search_similar", + "args": {"query": "关键词", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果你用同一个查询搜索了多个选项的证据,回到 Step 2,对每个选项使用独立的、有区分性的关键词分别搜索。 + +## 常见陷阱 + +1. **字幕语义歧义**: 游戏解说、体育评论中的专业术语容易被误解。对模糊的字幕证据,查看相邻 L3 的视觉描述进行交叉验证。 +2. **"以上全部"选项**: 当选项 D 是"All of the above"时,必须为 A/B/C 三个选项都找到存在证据。 diff --git a/store/skills/v1/attribute-perception.md b/store/skills/v1/attribute-perception.md new file mode 100644 index 0000000..b223a32 --- /dev/null +++ b/store/skills/v1/attribute-perception.md @@ -0,0 +1,86 @@ +--- +name: attribute-perception +description: 属性感知类问题——需要识别或推理人物/对象的态度、情感、身份等抽象属性 +task_type: Attribute Perception +--- + +## 适用场景 + +问题要求理解人物态度、情感、动机、身份或对象的抽象属性。 +例: "What evidence indicates that X?" "What can be said about Y's attitude?" "Which statement is incorrect?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 精准关键词搜索 + +用问题中的核心属性词和实体名称构造搜索查询,直接定位包含目标实体的节点。 + +### Step 2: 字幕深读 + +定位到相关节点后,仔细阅读字幕原文。 + +### Step 3: 相邻节点检查 + +当 top-1 搜索结果不足以做出判断时,检查相邻的 L3 节点。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "evidence_directness": "explicit / implicit / metaphorical", + "competing_options": "当前证据可能支持的其他选项: [B, C]" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "search_similar", + "args": {"query": "关键词", "question": "当前关注的具体问题"} + } +} +``` + +当 evidence_directness 为 metaphorical 时,必须寻找第二条独立证据再提交。 + +## 自检信号 + +如果你抓住第一个看似相关的文本线索就推断属性结论,停下来——检查你找到的线索是字面含义还是隐喻,语境是否支持你的解读。 + +## 常见陷阱 + +1. **浅层线索锚定**: 看到隐喻就推断能力评价,但实际语境可能在讲其他事情。抓住第一个看似相关的线索就下结论是最常见的错误模式。 +2. **隐喻/间接表达**: 视频中常用比喻或间接描述来表达属性。当证据来自隐喻时,必须标记为 metaphorical 并主动寻找第二条佐证。 diff --git a/store/skills/v1/counting-problem.md b/store/skills/v1/counting-problem.md new file mode 100644 index 0000000..0e16fb5 --- /dev/null +++ b/store/skills/v1/counting-problem.md @@ -0,0 +1,84 @@ +--- +name: counting-problem +description: 计数类问题——需要统计视频中特定事物出现的次数或数量 +task_type: Counting Problem +--- + +## 适用场景 + +问题要求统计某类事物的数量,选项通常为具体数字。 +例: "How many goals does X score?" "How many times does Y appear?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 全局定位 + +用 search_similar 搜索被计数实体的名称,同时用 view_node 获取所有 L1 节点列表以了解视频的全局结构。 + +### Step 2: 系统遍历 + +对每个可能包含目标实体的 L1 段落执行系统化下钻流程。 + +### Step 3: 汇总确认 + +在回答前,在 reflect 的 instances 字段中逐一列出所有发现的实例及其来源节点。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "l1_coverage": "已遍历 X/Y 个 L1 段落", + "instances": ["实例1@L3_xxx", "实例2@L3_yyy"] + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "view_node", + "args": {"node_id": "L1_000", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果 l1_coverage 尚未达到 100% 就准备提交答案,停下来——必须遍历完所有 L1 段落。 + +## 常见陷阱 + +1. **L2 节点数 ≠ 实例数**: 一个 L2 节点可能包含 0 个或多个被计数实例。必须深入 L3 逐一确认。 +2. **模糊数量词不可信**: L1/L2 摘要中的"multiple""several""a few"不能替代精确计数。 diff --git a/store/skills/v1/default-strategy.md b/store/skills/v1/default-strategy.md new file mode 100644 index 0000000..fc2f386 --- /dev/null +++ b/store/skills/v1/default-strategy.md @@ -0,0 +1,81 @@ +--- +name: default-strategy +description: 通用三阶段搜索策略——适用于无特定题型策略时的默认搜索方法 +task_type: _default +--- + +## 适用场景 + +当没有匹配到特定题型的搜索策略时,使用此通用策略。适用于所有四选一视频问答题。 + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 建立全局认知 + +通过读取 L1 摘要建立对视频的整体理解,同时使用 search_similar 对问题中的核心实体或事件进行语义检索,快速定位最相关的区域。 + +### Step 2: 聚焦验证 + +针对"待定"状态的选项,下钻到 L2 和 L3 层寻找区分性证据。 + +### Step 3: 提交答案 + +基于已收集的证据做出最终判断。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "view_node", + "args": {"node_id": "L1_000", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果你发现自己只为 best_candidate 搜索了证据而没有检查竞争选项,停下来——你必须至少为 1 个竞争选项做独立搜索后再提交。 + +## 常见陷阱 + +1. **确认偏差**: 找到第一条支持证据后容易锚定在该选项上,后续搜索变成寻找"确认"而非寻找"区分"。 +2. **L1 过度信任**: L1 摘要是概括性的,可能遗漏关键细节。涉及具体数字、精确时间、视觉细节的问题,仅凭 L1 摘要判断几乎必然出错。 diff --git a/store/skills/v1/information-synopsis.md b/store/skills/v1/information-synopsis.md new file mode 100644 index 0000000..c42f838 --- /dev/null +++ b/store/skills/v1/information-synopsis.md @@ -0,0 +1,83 @@ +--- +name: information-synopsis +description: 信息概要类问题——需要理解视频整体主题和核心内容 +task_type: Information Synopsis +--- + +## 适用场景 + +问题要求概括视频的主题、主要内容或核心观点。 +例: "What is the video primarily about?" "What is the main topic discussed?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: L1 全览 + +顺序读取所有 L1 节点的 scene_summary 和 topic_keywords。 + +### Step 2: 选项对照 + +将每个选项与所有 L1 摘要逐一对照。 + +### Step 3: 按需下钻 + +如果 L1 摘要已经能明确区分选项,可以直接回答。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "l1_coverage": "已阅读 X/Y 个 L1 节点", + "abstraction_level": "整体 / 部分 / 细节" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "view_node", + "args": {"node_id": "L1_000", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果你只读了 L1_000 就认为了解了视频主题,停下来——必须读取所有 L1 节点才能做出可靠判断。 + +## 常见陷阱 + +1. **概括粒度偏差**: 当选项中同时有"大主题"和"具体子主题"时,选择与视频主要篇幅最匹配的那个。 diff --git a/store/skills/v1/object-reasoning.md b/store/skills/v1/object-reasoning.md new file mode 100644 index 0000000..0246f5d --- /dev/null +++ b/store/skills/v1/object-reasoning.md @@ -0,0 +1,85 @@ +--- +name: object-reasoning +description: 对象推理类问题——需要对视频中的对象进行属性、关系或因果推理 +task_type: Object Reasoning +--- + +## 适用场景 + +问题要求推理视频中对象的属性、关系、用途或意义。 +例: "What can be inferred about X?" "What does Y represent?" "Which gadget had the least impact?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 定位 + +根据问题的线索选择最高效的定位方式。 + +### Step 2: 证据收集 + +从 L1/L2 字幕中提取与推理相关的因果链和解释性信息。 + +### Step 3: 验证 + +对每个选项逐一检查是否有直接证据支持或否定。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "question_asks": "用自己的话改写题目", + "needs_visual": "本题是否需要视觉细节来区分选项?如果是,需要对比哪些具体属性?", + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "evidence_level": "L1_summary / L2_subtitle / L3_visual / observe_frame" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "view_node", + "args": {"node_id": "L1_000", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果你在 view_node 或 search_similar 的摘要中读到了外观描述并直接用于判断,检查 needs_visual 字段——如果为"是",必须用 observe_frame 确认。 + +## 常见陷阱 + +1. **编号/顺序推理**: 视频中的编号可能是倒序或非线性的。必须在字幕中找到明确的编号标注,不要假设编号顺序与出现顺序一致。 +2. **"代表/象征"类推理**: 字幕中可能有多层含义,需要区分字面信息和深层含义。选择与视频论述最直接对应的选项。 diff --git a/store/skills/v1/object-recognition.md b/store/skills/v1/object-recognition.md new file mode 100644 index 0000000..28d49c8 --- /dev/null +++ b/store/skills/v1/object-recognition.md @@ -0,0 +1,83 @@ +--- +name: object-recognition +description: 对象识别类问题——需要识别视频中出现的具体对象、人物或物品 +task_type: Object Recognition +--- + +## 适用场景 + +问题要求识别视频中出现的特定对象、人物、物品或标识。 +例: "Who wins the final?" "What tool is used?" "Which item is NOT shown?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: L1 全局理解 + +优先 read L1 建立全局观。 + +### Step 2: 精准搜索与下钻 + +用对象名称或特征作为搜索关键词,定位包含目标对象的 L2/L3 节点。 + +### Step 3: 竞争选项验证 + +对最强竞争选项执行独立搜索,确认是否有支持或反驳证据。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "evidence_source": "subtitle / visual_description / summary" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "view_node", + "args": {"node_id": "L1_000", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果你只基于 L1 摘要中的 key_entities 就判断某对象存在或不存在,要警惕——需要在 L2/L3 层确认后再下结论。 + +## 常见陷阱 + +1. **描述性指代容易出错**: 当题目用描述性短语而非名称指代对象时,映射关系很容易出错。必须在字幕中找到精确的对象名称来确认。 +2. **视觉细节高度依赖 L3 质量**: 精确视觉信息取决于 L3 关键帧的描述质量。当 L3 摘要模糊时,检查字幕中是否有解说员口头提及。 diff --git a/store/skills/v1/ocr-problems.md b/store/skills/v1/ocr-problems.md new file mode 100644 index 0000000..bd4a859 --- /dev/null +++ b/store/skills/v1/ocr-problems.md @@ -0,0 +1,86 @@ +--- +name: ocr-problems +description: OCR/文本识别类问题——需要从视频画面中读取文字、数字或标识 +task_type: OCR Problems +--- + +## 适用场景 + +问题要求读取视频画面中显示的文字、数字、标题或图形叠加层信息。 +例: "What does the video state about X?" "Which concept is NOT described?" "What is the score at halftime?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 精准关键词搜索 + +搜索查询应包含选项中的具体名称或数字,而非泛化描述。 + +### Step 2: 多层信息源检查 + +答案可能来自三个不同的信息源:字幕、可见文字、L3 帧描述。 + +### Step 3: 数值精确验证 + +当答案是具体数字时,不要从模糊描述中推算——必须寻找直接标注。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "answer_source": "subtitle / visible_text / frame_description / inference", + "numeric_precision": "exact_match / approximate / inferred" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "search_similar", + "args": {"query": "关键词", "question": "当前关注的具体问题"} + } +} +``` + +当 answer_source 为 inference 且 numeric_precision 不是 exact_match 时,不要提交——继续搜索更精确的证据。 + +## 自检信号 + +如果你的搜索查询使用了问题的泛化描述而非选项中的具体名称或数字,回到 Step 1 换用精确关键词重新搜索。 + +## 常见陷阱 + +1. **搜索策略僵化**: 3 步内没找到精确数字时应立即切换策略,不要在同一方向上反复尝试。 +2. **图像 OCR 能力有限**: 当答案只存在于画面叠加层而非语音字幕时,应优先从字幕中寻找解说员口述的数字。 diff --git a/store/skills/v1/spatial-perception.md b/store/skills/v1/spatial-perception.md new file mode 100644 index 0000000..c0ecfcc --- /dev/null +++ b/store/skills/v1/spatial-perception.md @@ -0,0 +1,91 @@ +--- +name: spatial-perception +description: 空间感知类问题——需要从关键帧中精确判断空间位置和方位关系 +task_type: Spatial Perception +--- + +## 适用场景 + +问题要求从视觉画面中精确判断物体/人物的空间位置、朝向或方位关系。 +例: "In which direction is the red narrator facing?" "Where is the lamp hung?" "At what position does the model appear?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 目标定位 + +用 search_similar 定位包含目标对象的节点。 + +### Step 2: 多帧采集 + +对目标场景至少查看 3 个不同的 L3 帧,不要从单张帧推断空间关系。 + +### Step 3: 空间参照物建立 + +从 L3 的 spatial_layout 字段中提取可靠的空间参照物。 + +### Step 4: 保守判断 + +如果多帧证据之间对空间关系的描述不一致,选择最保守的选项。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "spatial_anchors": ["桌子在画面左侧", "人物面向右方"], + "frames_checked": 1, + "direction_confidence": "low" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "observe_frame", + "args": {"node_ids": ["L3_000_000_000"], "question": "目标对象在画面中的位置和朝向"} + } +} +``` + +answer_ready 仅在 frames_checked >= 2 且 direction_confidence 不为 low 时才可设为 true。如果步数用尽仍为 low,基于最佳猜测回答。 + +## 自检信号 + +如果你只看了 1 个 L3 帧就判断空间方向,至少看 2 帧。 + +## 常见陷阱 + +1. **系统性能力缺陷**: 树摘要重点描述"谁在做什么",不描述"谁在画面的什么位置面朝什么方向"。对此题型的期望应保持保守。 +2. **单帧判断必错**: 左右方向从单一视角极易搞反。不要重蹈覆辙。 diff --git a/store/skills/v1/spatial-reasoning.md b/store/skills/v1/spatial-reasoning.md new file mode 100644 index 0000000..6c0d0d1 --- /dev/null +++ b/store/skills/v1/spatial-reasoning.md @@ -0,0 +1,83 @@ +--- +name: spatial-reasoning +description: 空间推理类问题——需要基于语义线索推断地点、场景或空间关系 +task_type: Spatial Reasoning +--- + +## 适用场景 + +问题要求推断视频中的地点、场景设定或空间位置关系。 +例: "Where might this take place?" "Which location appears?" "Where is X relative to Y?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: L1 摘要快速判断 + +读取 L1 的 main_setting、key_entities、topic_keywords 字段,寻找地标、文化或生态特征线索。 + +### Step 2: 语义推理 + +利用世界知识对 L1 中的线索进行地点/场景推理。 + +### Step 3: 视觉验证 + +仅在选项间差异微妙、L1 摘要不足以区分时才需要这一步。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "evidence_type": "summary_inference / landmark_recognition / visual_confirmation" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "view_node", + "args": {"node_id": "L1_000", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果你需要从关键帧中精确计数行数、列数等空间信息来区分选项,需要查看多个 L3 帧进行交叉验证。 + +## 常见陷阱 + +1. **此题型与 Spatial Perception 完全不同**: Spatial Reasoning 是基于语义的位置推理,Spatial Perception 是精确的视觉空间方位感知。不要把两者的策略混用。 +2. **唯一的错误模式是视觉误判**: 当问题需要从关键帧中精确判断空间数量信息时才会失败。这类问题需要多 L3 帧交叉验证。 diff --git a/store/skills/v1/temporal-perception.md b/store/skills/v1/temporal-perception.md new file mode 100644 index 0000000..11244bb --- /dev/null +++ b/store/skills/v1/temporal-perception.md @@ -0,0 +1,86 @@ +--- +name: temporal-perception +description: 时间感知类问题——需要精确定位视频中特定事件发生的时间点 +task_type: Temporal Perception +--- + +## 适用场景 + +问题要求定位特定事件发生的具体时间或时间段。 +例: "When does the kitchen mishap occur?" "At what time does X happen?" "Which car model gets the most coverage?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 利用树的时间结构 + +优先使用 view_node 进行顺序下钻,而非 search_similar。 + +### Step 2: 字幕时间锚点提取 + +从字幕中识别时间锚点——这些是确定事件发生时间的关键线索。 + +### Step 3: 多时间点采样 + +必须在至少 2-3 个不同时间点采集证据。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "temporal_anchors": ["Monday@L2_001", "2PM lunch@L2_003"], + "time_points_sampled": 2 + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "view_node", + "args": {"node_id": "L1_000", "question": "当前关注的具体问题"} + } +} +``` + +answer_ready 仅在 time_points_sampled >= 2 时才可设为 true。 + +## 自检信号 + +如果 time_points_sampled 为 1 就准备提交,停下来——至少采样 2 个时间点。 + +## 常见陷阱 + +1. **单点采样是唯一已知的失败模式**: 只在一个时间点采样就下结论是危险的。 +2. **倒计时 vs 正计时**: 篮球等运动的 game clock 是倒计时的。时间数字大意味着实际发生更早。不要搞反。 diff --git a/store/skills/v1/temporal-reasoning.md b/store/skills/v1/temporal-reasoning.md new file mode 100644 index 0000000..b82ed83 --- /dev/null +++ b/store/skills/v1/temporal-reasoning.md @@ -0,0 +1,85 @@ +--- +name: temporal-reasoning +description: 时间推理类问题——需要确定事件顺序、时间关系或时间线排列 +task_type: Temporal Reasoning +--- + +## 适用场景 + +问题涉及事件的时间顺序、先后关系或时间线排列。 +例: "In which order are the following events introduced?" "What happened first?" "As depicted in the video, what happened when X?" + +## 视频树字段索引 + +| 层级 | 字段 | 适用场景 | +|------|------|---------| +| L1 | scene_summary | 整体概况 | +| L1 | key_entities | 查找人物/物体 | +| L1 | main_actions | 主要动作 | +| L1 | temporal_flow | 时间线概览 | +| L1 | topic_keywords | 主题定位 | +| L2 | event_description | 事件因果 | +| L2 | entities / actions | 实体和动作细节 | +| L2 | state_changes | 状态转变 | +| L2 | spatial_relations | 空间关系变化 | +| L3 | frame_summary | 精确视觉证据 | +| L3 | visible_entities | 具体物体确认 | +| L3 | ongoing_actions | 正在发生的动作 | +| L3 | spatial_layout | 精确空间位置 | +| L3 | visual_attributes | 光照、色调、机位 | +| L2/L3 | subtitle | 字幕转写(L1 无此字段) | +| 全层 | visible_text | 画面文字(OCR) | + +## 搜索步骤 + +### Step 1: 事件定位 + +对每个待定位的事件分别执行 search_similar。 + +### Step 2: 时间线构建 + +按 L1 顺序阅读,构建显式时间线。 + +### Step 3: 冲突消解 + +对时间戳间距较小的事件对,必须下钻到 L3 用精确时间戳确认顺序。 + +## 输出格式 + +每轮在 content 中输出以下 JSON(第一轮可省略 reflect): + +```json +{ + "reflect": { + "learned": "这条信息揭示了什么", + "options": { + "A": "对此选项已知什么、来自哪个节点", + "B": "...", "C": "...", "D": "..." + }, + "confidence": 0.5, + "best_candidate": "B", + "answer_ready": false, + "timeline": {"事件A": "L3_xxx@120s", "事件B": "L2_yyy@200s"}, + "events_located": "已定位 X/Y 个目标事件", + "l1_coverage": "已覆盖 X/Y 个 L1 节点" + }, + "plan": { + "goal": "本轮要获取什么信息", + "tool": "选择哪个工具", + "reason": "为什么这个工具和参数能达成目标" + }, + "action": { + "tool": "search_similar", + "args": {"query": "关键词", "question": "当前关注的具体问题"} + } +} +``` + +## 自检信号 + +如果你只通过 L1 摘要判断事件先后而没有用 L3 时间戳确认,考虑是否需要更精确的验证。 + +## 常见陷阱 + +1. **同质内容排序最难**: 多个相似子主题的排序必须用 L3 级精确时间戳区分,L1/L2 摘要的分辨率不够。 +2. **天数计数错误**: 不要把 L1 分段边界当成天数边界。L1 的分段是按时长而非按日期划分的。