autodidact
自动课题研究器。给定一个研究课题,自动循环执行"提问→检索→整理→评估",持续更新知识库直到研究目标达成。适用于行业调研、技术研究、概念理解、创业方案构建等场景。触发方式:用户说"帮我研究 X"、"调研一下 X"、"我想深入了解 X"、"/autodidact X"。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
自动课题研究器。给定一个研究课题,自动循环执行"提问→检索→整理→评估",持续更新知识库直到研究目标达成。适用于行业调研、技术研究、概念理解、创业方案构建等场景。触发方式:用户说"帮我研究 X"、"调研一下 X"、"我想深入了解 X"、"/autodidact X"。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
课题研究提问引擎。综合知识审计报告、用户插入问题、既定框架,生成每轮最有价值的问题列表,驱动后续检索。是整个研究循环的核心引擎——问题的质量决定研究的深度。通常由 autodidact skill 调用,也可单独使用。
信息检索 skill。接收问题列表,通过浏览器自动搜索并抓取高质量网页内容,存入 raw/ 文件夹。含两层质量筛选(抓取前过滤低质来源,抓取后评分)。通常由 autodidact skill 调用,也可单独使用。依赖 agent-browser CLI。
个人知识库管理工具。支持三个命令:/wiki compile(将 raw/ 素材增量编译为结构化 wiki)、/wiki check(知识审计:有问题列表时做完整审计,无问题列表时做纯结构审计)、/wiki check <questions_file>(基于 wiki 回答问题并做结构审计,合并输出为单份 check 报告)。
| name | autodidact |
| description | 自动课题研究器。给定一个研究课题,自动循环执行"提问→检索→整理→评估",持续更新知识库直到研究目标达成。适用于行业调研、技术研究、概念理解、创业方案构建等场景。触发方式:用户说"帮我研究 X"、"调研一下 X"、"我想深入了解 X"、"/autodidact X"。 |
| user-invocable | true |
| args | <课题描述> [--max-rounds 20] [--background <已知背景>] |
协调 questioner、researcher、wiki 三个模块,驱动研究循环,直到达成终止条件。
执行原则(重要):autodidact 是整个研究循环的主控,负责驱动循环直到终止条件满足。
<知识库根目录>/
├── CLAUDE.md ← 知识库规则(必须存在)
├── raw/ ← 原始抓取素材(不修改)
├── wiki/ ← 结构化知识库
│ ├── INDEX.md
│ └── <主题>.md
└── outputs/
├── research_state.json ← 持久状态(唯一真相来源)
├── research_summary.md ← 最终研究摘要
├── user_questions.md ← 用户插入问题(可随时编辑)
└── rounds/ ← 每轮过程产物(可归档/删除)
├── round_N_questions.json
└── round_N_check.md
过程产物统一放 outputs/rounds/,持久状态放 outputs/ 根目录。
解析参数:
课题描述(必须)--max-rounds:最大轮次,默认 20--background:用户已知背景(可选,传给 questioner 用于跳过基础问题)检查并初始化环境(冷启动):
目录:raw/、wiki/、outputs/、outputs/rounds/ 不存在则自动创建,无需提示。
初始化或读取 outputs/research_state.json:
向用户通报研究计划(通报后立即进入研究循环,无需等待用户回应):
## 开始研究:<课题描述>
- 最大轮次:N
- 当前状态:全新开始 / 从第 X 轮继续
- 知识库现状:wiki/ 中有 X 篇文章 / 空
在调用 questioner 之前,先检查两类外部输入,任何一类有新内容都应触发本轮循环(即使原本已达终止条件):
① 用户插入问题
检查 outputs/user_questions.md 是否存在且有未处理的问题:
## 待处理
- 期权的波动率曲面是什么?
- 国内有没有专门做期权策略的私募基金?
## 已处理
- ~~备兑开仓被行权后怎么操作?~~(已纳入第2轮)
用户只需在 ## 待处理 下加一行 - 问题文本 即可。
若有待处理问题,将文件路径传给 questioner,questioner 将其合并入本轮问题列表,优先级设为 high。
questioner 完成后,由 autodidact 负责更新 user_questions.md:
读取 questioner 输出 JSON 中的 incorporated_user_questions 字段,将对应条目从 ## 待处理 移至 ## 已处理,格式:~~问题文本~~ [r<N>]。
② 用户贡献的新 raw 文件
对比 research_state.json 中 all_raw_files_processed 列表与当前 raw/ 目录的实际文件,找出新增文件。
若有新文件,通知 questioner 扫描这些文件内容,提取新主题和问题。
每轮执行以下步骤,完成后更新 research_state.json:
按 questioner 的逻辑执行问题生成(可通过 Skill tool 加载 questioner 获取详细执行逻辑)。
传入上下文:
outputs/rounds/round_<N-1>_check.md,第1轮无)
outputs/user_questions.md 有待处理问题)all_questions_ever,含 id 和 text,去重用)输出:outputs/rounds/round_N_questions.json
Step 1 完成后:立即将 current_round_progress.step1_done 更新为 true,然后继续执行 Step 2。
按 researcher 的逻辑执行信息检索(可通过 Skill tool 加载 researcher 获取详细执行逻辑)。
传入:outputs/rounds/round_N_questions.json
输出:raw/ 新增文件列表(每行一个路径)
Step 2 完成后:立即将 current_round_progress.step2_done 更新为 true,然后继续执行 Step 3。
按 wiki compile 的逻辑执行增量编译(可通过 Skill tool 加载 wiki 获取详细执行逻辑)。
传入:本轮新增的 raw/ 文件列表。将 Step 2 输出的文件路径列表转为逗号分隔字符串后传入(如 raw/a.md,raw/b.md)。
注意:若 Step 1 检测到用户贡献的新 raw 文件,也一并追加到此列表。
输出:新增/更新的 wiki 主题列表
Step 3 完成后:立即将 current_round_progress.step3_done 更新为 true,然后继续执行 Step 4。
按 wiki check 的逻辑执行完整审计(可通过 Skill tool 加载 wiki 获取详细执行逻辑)。
传入:
outputs/rounds/round_N_questions.json--round N输出:outputs/rounds/round_N_check.md(问题覆盖状态 + 结构性审计)
Step 4 完成后:立即将 current_round_progress.step4_done 更新为 true,然后继续执行 Step 5。
将本轮完整信息写入状态文件,包括:
all_questions_everall_raw_files_processedoutputs/rounds/round_N_check.md)overlap_ratio 数值、audit_issues_count 数值)current_round_progress 设为 null(标记本轮已完整完成)漏洞数定义:audit_issues_count = wiki check 审计摘要中「知识漏洞数」+「partial 问题数」之和。矛盾和来源缺失单独记录但不计入漏洞数。
终止条件全部满足才终止(AND 关系):
| 条件 | 第1轮 | 第2轮起 | 判断方式 |
|---|---|---|---|
| 审计漏洞边际递减 | 跳过(直接视为未满足) | 参与判断 | 本轮漏洞数 ≤ 上轮的 60%,或连续两轮漏洞数均 < 3 |
| 无用户插入问题 | 参与判断 | 参与判断 | user_questions.md 无 pending 问题 |
| 无新 raw 文件 | 参与判断 | 参与判断 | 用户没有贡献新素材 |
| 问题重叠率 > 70% | 跳过(overlap_ratio 为 null) | 参与判断 | questioner 输出的 overlap_ratio > 0.7(null 视为未满足) |
为什么用"边际递减"而非"绝对值 < 3":知识库越深,审计发现越少是自然规律。但如果用绝对值,审计工具稍微努力一点就能找出 3+ 条漏洞,导致循环永不终止。边际递减才能真正捕捉"已无明显新增价值"的信号。
硬上限:达到 max_rounds 无条件终止
继续:检查当前上下文使用量,若超过 50% 则自动执行 /compact 压缩对话(无需用户确认),然后立即进入 round N+1。
终止:确认 state.json 中已记录本轮 decision: terminate 后,执行收尾流程。
研究循环结束后:
生成研究摘要,写入 outputs/research_summary.md:
# 研究摘要:<课题>
## 研究概况
- 研究轮次:N 轮
- 检索文章:X 篇(raw/)
- 知识主题:X 个(wiki/)
- 终止原因:<漏洞边际递减达标 / 重叠率超标 / 达到最大轮次 / ...>
## 核心发现
(基于 wiki/ 内容,提炼 3-5 个最重要的发现)
## 未解决问题
(列出所有 open 状态的问题)
## 知识图谱
(列出 wiki/ 中的主题及其关联关系)
向用户输出:
## 研究完成:<课题>
共 N 轮,检索 X 篇文章,整理 X 个知识主题。
产出文件:
- wiki/ ← 结构化知识库
- outputs/research_summary.md ← 最终摘要
- outputs/rounds/ ← 各轮审计报告
- outputs/research_state.json ← 完整研究轨迹
{
"topic": "课题描述",
"started_at": "2026-04-09T10:00:00",
"max_rounds": 20,
"status": "in_progress",
"current_round_progress": {
"round": 2,
"step1_done": true,
"step2_done": true,
"step3_done": false,
"step4_done": false
},
"rounds": [
{
"round": 1,
"timestamp": "2026-04-09T10:05:00",
"questions": [
{
"id": "r1q1",
"text": "问题文本",
"layer": "L1-定义",
"priority": "high",
"source": "framework",
"status": "resolved"
}
],
"new_raw_files": ["2026-04-09_xxx.md"],
"user_contributed_raw_files": [],
"wiki_topics_updated": ["主题A", "主题B"],
"check_report": "outputs/rounds/round_1_check.md",
"termination_check": {
"audit_issues_count": 5,
"pending_user_questions": 0,
"new_raw_files": 0,
"overlap_ratio": null,
"decision": "continue",
"reason": "audit_issues_count 5,边际递减条件未满足"
}
}
],
"all_questions_ever": [
{"id": "r1q1", "text": "问题文本"},
{"id": "r1q2", "text": "问题文本"}
],
"all_raw_files_processed": ["2026-04-09_xxx.md"],
"final_summary": null
}
current_round_progress 在每个 Step 完成后立即更新,用于中断恢复时判断从哪步继续。一轮完整完成(Step 5 写入 rounds[])后清空此字段(设为 null)。
current_round_progress,若非 null,说明上次在该轮中途中断。根据 stepN_done 字段跳过已完成的步骤,从第一个未完成的步骤继续,避免重复抓取和编译## 第 N 轮 / 最多 M 轮,让用户了解进度