技能: Obsidian 知识筛选器 (Obsidian Knowledge Filter)
描述
此技能旨在从由大量 Markdown 文件组成的知识库(例如 Obsidian Vault)中,通过一个精确且分阶段的工作流,进行知识的检索、筛选和提取。它采用带编号前缀的 YAML 和 Markdown 文件来管理每一步的中间数据,并在每个关键步骤暂停以供用户审阅,确保最终产出的内容高度相关且无重复。
核心理念: 此技能的目标是在用户的指导下,通过一系列独立的脚本和分析步骤,精确地从知识库中提炼与特定主题相关的信息,并通过结构化的方式呈现,最终形成综合分析报告。
何时使用
当用户请求您通过查找、关联和综合分散在个人知识库中的信息来解决复杂问题时,请使用此技能。此工作流特别适用于需要高精度、希望减少冗余信息并全程参与筛选过程的场景。
工作流程
该过程分为四个主要阶段,每个阶段都以用户审阅为节点。
阶段 1: 关键词搜索与分析
步骤 1.1: 运行分析脚本 001_analyze_files.py
此脚本递归地在指定目录中搜索所有 .md 文件,并执行以下操作:
-
文件排除: 自动跳过任何路径中包含
tmp-,_attachments, 或.trash的文件/目录。 -
关键词分析: 查找包含指定关键词的文件,记录每个关键词的出现频率。
-
上下文合并: 将包含关键词的行的上下文(默认为前后 10 行)合并成连续的行号区间。
-
输出: 在一个新建的
tmp-YYYY-MM-DD-HH-MM-SS-analysis/临时目录中,生成001_analysis.yaml。
001_analysis.yaml 格式详解:
这是一个 YAML 文件,包含一个文件信息对象的列表。每个对象都具有以下结构:
- file_path: '文件夹/2025-12-29-示例文件.md' # 相对于当前工作目录的路径
keyword_counts:
- word: '关键词1'
count: 5
- word: '关键词2'
count: 2
line_ranges:
- [10, 30] # 第一个内容提取区间
- [45, 65] # 第二个内容提取区间
步骤 1.2: 用户审阅分析文件
Agent 暂停并请求用户审阅 001_analysis.yaml,用户可手动编辑此文件以增删文件或修改行号区间。
阶段 2: 内容提取与清理
步骤 2.1: 运行提取脚本 002_extract_content.py
用户确认后,此脚本会读取 001_analysis.yaml,并根据其中的 file_path 和 line_ranges 提取相应的内容。
-
内容清理: 在提取内容后,脚本会执行以下三项自动清理:
- 合并换行: 将连续的多个换行符合并为一个。
- 移除加粗: 删除所有的 Markdown 加粗标记 (
**)。 - 移除图片: 删除所有的 Markdown 图片链接 (
![[...]])。
-
输出: 在同一个临时目录中,生成
002_content.yaml,其结构与001_analysis.yaml类似,但每个对象都增加了一个content字段。
002_content.yaml 格式详解:
- file_path: '文件夹/2025-12-29-示例文件.md'
keyword_counts:
# ... (同上)
line_ranges:
# ... (同上)
content: "这是从文件中提取并清理后的文本内容...\n..."
步骤 2.2: 用户审阅内容文件
Agent 再次暂停,请求用户审阅 002_content.yaml,确保提取和清理后的内容符合预期。
阶段 3: 内容洞察综合
步骤 3.1: Agent 进行分块综合分析
用户确认后,Agent 开始对 002_content.yaml 进行智能分析。为提升效率并保证分析的连贯性,Agent 采用分块「读取-分析-写出」循环模式:
- 分块读取: Agent 以 1000 行为单位,逐块读取
002_content.yaml文件;例如,第一次会读取 1-1000 行。 - 综合分析: 针对刚才读取的 整个内容块(其中可能包含多个文件片段),Agent 在内部进行一次性综合分析,提炼出所有与用户任务相关的洞察、观点和联系。
- 单次写入: Agent 将 2 产生的分析洞察,一次性地追加写入到
003_content_analysis.md文件中,清晰地标注每个洞察来源于哪个文件。 - 循环执行: 跳到 1 继续下一块,直到处理完所有内容块。
这种方法避免了逐条分析的低效与碎片化,确保了分析过程的流畅性和上下文关联性。
- 输出:
003_content_analysis.md,其中包含了对所有文件片段的综合洞察。
步骤 3.2: 用户审阅洞察文件
Agent 完成所有内容块的分析后,暂停并请求用户审阅最终生成的 003_content_analysis.md,确认洞察的准确性和深度。
阶段 4: 最终报告合成
步骤 4.1: Agent 生成最终报告
在用户完成最终审阅后,Agent 将以 003_content_analysis.md 为素材,撰写一份逻辑连贯、结构清晰的最终报告。
- 输出:
004_report.md
步骤 4.2: 提交结果
Agent 向用户提交最终的 04_report.md 报告。