SuperAPI AI 工具集

omh-deep-research

写作与研究

查看项目

更新于 10-15 17:13

技能介绍

用途

OMH Deep Research 是一个多阶段网络研究技能,用于在 Hermes 环境中执行深度研究任务。当用户提出“deep research on”“a research report about”“comprehensive research”“investigate X”“what's known about Y”等请求,或 omh-deep-interview 遇到陌生领域需要背景资料、omh-ralplan 在规划前需要外部上下文,或问题需要综合 3 个以上网络来源时,可使用本技能。

以下情况不建议使用:已存在针对该主题且状态为 confirmed 的报告(应直接查看);问题只需一次 web_search 即可回答;用户仅需要实时/时事数据(本技能强调持久综合而非时效性);当前 Hermes 安装没有可用的 web 工具集。

主要能力

技能采用五个调用阶段,任意两个阶段之间均可安全退出:

  1. decompose(拆解):读取用户查询,写出 {slug}-plan.md,状态 phase=search,不派发子代理。
  2. search(检索):读取计划、状态与 findings/,写入新的发现文件,更新 state.completed_subtopics 与 phase,并行派发 1-3 个 [omh-role:researcher] 子代理。
  3. gap_check(缺口检查):读取全部发现,可选写入 _followup.md 或直接切换阶段,派发 0 或 1 个 [omh-role:researcher] 子代理。
  4. synthesize(综合):父级内联全部发现,写入 {slug}-report.md(status: draft,phase=verify),派发 1 个 [omh-role:research-synthesist] 子代理。
  5. verify(核验):父级内联报告与发现,确认 frontmatter / 变更状态 / 标记 blocked,派发 1 个 [omh-role:research-verifier] 子代理。

每个研究会话的状态保存在 .omh/state/research--{slug}.json,多个主题可并发进行。会话产物(计划、发现、报告)以 slug 为键存放在 .omh/research/ 下。父级负责文件系统操作,所有网络工具调用都在委派的子代理内部完成;父级读取发现文件并将其内容内联到综合者与核验者的 context 字段中,子代理只返回文本。角色通过 [omh-role:NAME] 标记引用,角色正文位于 plugins/omh/references/role-*.md。

使用方式

安装(为 Hermes 发现创建符号链接):

mkdir -p ~/.hermes/skills/omh && ln -snf <repo>/plugins/omh/skills/omh-deep-research ~/.hermes/skills/omh/omh-deep-research

父目录创建必须先于符号链接。安装后可通过 hermes skills list | grep omh-deep-research 确认技能可被发现。

前置条件(缺失时技能会快速失败):

  • web 工具集:提供 web_search 与 web_extract。若任一不可用,输出“omh-deep-research requires the web toolset (web_search + web_extract); aborting.”并在执行任何工作前退出。
  • omh_state 工具:首选路径。若缺失,回退到手动读写 .omh/state/research--{slug}.json(按实例,{slug} 为 Phase 1 生成的 kebab+日期+随机4位)。若两者均不可写,则快速失败并给出明确错误。
  • 对 .omh/ 的写权限,用于状态、计划、发现、报告与日志。

Phase 0 会检查已有状态与哨兵文件:生成候选 slug、列出已有研究实例、对活跃实例执行取消检查、对已确认报告进行哨兵自愈、按主题匹配恢复,或对已确认主题提示刷新/查看/取消。无冲突时进入 Phase 1。

Phase 1 生成 slug(规则:kebab(topic)[:40] + '-' + YYYYMMDD + '-' + random4,random4 为 4 个小写十六进制字符),将主题拆解为 3-5 个子主题,每个子主题草拟 2-3 个候选查询,原子写入计划文件并初始化状态。

Phase 2 可重入:每次调用派发一批最多 3 个 researcher 子代理后退出,由 state.completed_subtopics 驱动再次进入。写入顺序严格为:发现文件 → completed_subtopics → 阶段切换。

Phase 3 只有两个分支:0 个缺口时设置 phase=synthesize;≥1 个缺口时派发一个 researcher 子代理处理 _followup,然后设置 phase=synthesize。

Phase 4 由父级内联全部发现内容,派发一个 research-synthesist 任务,父级始终用返回文本覆盖报告文件,frontmatter 以 status: draft 开始。若 state.synthesis_attempts > 0,会把先前核验者的 REQUEST_CHANGES 反馈附加到目标中。

Phase 5 由父级内联报告与发现,派发一个 research-verifier 任务并解析 VERDICT。PASS 时严格按顺序:先原子写入 status: confirmed 的报告(幂等哨兵,必须最先落盘),再追加 REPORT_CONFIRMED 日志,最后清除状态。FAIL 且尝试次数小于 3 时,递增尝试次数、保存反馈、设置 phase=synthesize 并退出。FAIL 且尝试次数等于 3 时,设置 phase=blocked,向用户展示缺口列表并保留状态。

适用场景

  • 需要综合多个网络来源形成一份连贯答案的研究问题。
  • 为 omh-deep-interview、omh-ralplan、omh-autopilot 等下游技能提供背景调查;下游技能通过 .omh/research/{slug}-report.md 且 frontmatter 为 status: confirmed 来检测已完成的研究会话。
  • 需要引用核验的研究报告生成。

限制

  • 父级绝不直接调用 web_search 或 web_extract,所有网络工具使用都在委派的 researcher 子代理内完成。
  • 绝不内联角色文本,只使用 [omh-role:NAME] 标记。
  • 阶段边界是提交点,每个阶段必须在写入输出并更新状态后干净退出;跨多个委派的长阶段不具备退出安全性。
  • 每个项目只允许一个活跃研究会话,Phase 0 强制执行,不应创建并行研究状态。
  • slug 冲突对用户可见,random4 后缀用于避免同主题同日重跑互相覆盖。
  • 已知缺口:尚未集成到 wiki / fact_store / memory 的持久化,v1 中哨兵报告是唯一的持久接口;[omh-role:research-verifier] 的按调用子代理工具范围限制可能因 Hermes 安装而异,此时只读契约由 role-research-verifier.md 中的文字约定强制执行。
  • 日志为追加式事件,仅记录决策与阶段转换,绝不记录发现内容。

日志事件词汇

STARTED slug={slug};PLAN_WRITTEN slug={slug} subtopics=N;BATCH_COMPLETE batch=N subtopics=[...];GAP_CHECK_COMPLETE gaps=N;REPORT_DRAFT;VERIFY_PASS;VERIFY_FAIL;SYNTHESIS_RETRY attempt=N;BLOCKED_RETRIES_EXHAUSTED slug={slug};REPORT_CONFIRMED slug={slug};REPORT_CONFIRMED_RECOVERED slug={slug};BLOCKED slug={slug};CANCELLED。