Research Idea
把任意资料转化为领域文献证据、研究脉络 map,以及多个高价值、可查新、可证伪的“科学问题-科学假设”候选,并选出最值得推进的一对。候选生成不得脱离前置文献调查,不能由 AI 仅凭资料臆造。
与相邻 skill 的边界:
research-topic-extractor:只负责把资料提炼成可检索主题。research-literature-radar:先发现并筛选经典、前沿和重要论文,形成候选文献池。research-literature-interpretation:逐篇解读入选论文,提取问题、机制、证据、边界和可迁移启发。research-literature-review:负责 Premium 查新和证据综述。parallel-vibe:负责默认 3 轮串行独立审查与打磨。research-plan:在已有科学问题和假设后,才用于实验设计或分析计划。
输入
- 必需:任意资料或信息,如文本、文件、文件夹、URL、论文线索、实验现象、代码仓库或 PR 背景。
- 可选:
- 输出路径:用户指定时遵从;未指定时放在
./docs/ideas/。 - 工作区:用户指定时遵从;未指定时为当前工作目录下
.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/research-idea/。 - 轮次:默认 3 轮;用户指定时遵从。
流程
输入
按用户请求和配置文件提供必要输入;缺失信息应明确列出并停止依赖该输入的步骤。
执行步骤
初始化与资料归纳
- 运行
scripts/init_workspace.py创建隐藏工作区和 manifest。 - 读取资料,只把摘要、结构化事实和必要引用写入隐藏工作区。
- 用
research-topic-extractor生成主题、5-10 个英文关键词、2-5 个核心问题;保存为theme/theme.json,字段为topic、keywords、core_questions。
文献调查与解读(候选生成前置)
- 调用
research-literature-radar,根据theme/theme.json获取领域内重要、经典、前沿和具有启发性的论文。优先获取公开 PDF 正文;若无法获得 PDF,允许使用题目、摘要和可核验元数据,但必须标记证据深度不足。 - 将雷达结果及其 provenance 保存到
research-literature-radar/,至少记录论文稳定 ID、题目、年份、来源、PDF/摘要可用性、入选理由和未覆盖风险。雷达失败或没有达到最低证据量时,不得直接生成候选,应先报告并停止后续依赖步骤。 - 对入选论文调用
research-literature-interpretation,采用并行子 agent 分批执行:- 一个子 agent 只负责一篇论文,独立读取该论文的 provenance 与可用正文/摘要,并将结果写入
research-literature-interpretation/下独立的论文目录。 - 同时运行的解读子 agent 最多 3 个(不含负责调度与汇总的主 agent);入选论文超过 3 篇时按批次排队,上一批全部完成(或记录失败)后再启动下一批。
- 本阶段不再嵌套启动额外的并行解读 agent;若单篇需要补证据或定向复核,由该子 agent 在自身任务内完成,不能突破全局并发上限。
- 主 agent 汇总所有成功解读,并保留每篇论文的失败/证据不足状态;任何论文未完成时不得把研究脉络 map 标记为完整。
- PDF 可用时优先基于全文;只有摘要时,解读必须收缩到摘要支持的范围,不得补写全文结论。
- 一个子 agent 只负责一篇论文,独立读取该论文的 provenance 与可用正文/摘要,并将结果写入
- 基于全部解读建立
research-map/research-map.md(或等价结构化文件)。研究脉络 map 必须呈现:时间顺序、关键问题演化、代表性方法/机制、证据转折、争议与失败边界、尚未闭合的知识缺口、不同研究线之间的连接,以及每个判断对应的论文锚点。它是候选生成的必需输入,不是最终报告中的装饰性综述。
基于研究脉络 map 的初始候选
将用户资料摘要、theme/theme.json、研究雷达摘要、论文解读摘要和 research-map 作为共同背景,调用 parallel-vibe 一次性启动多个独立 agent 进行初始 brainstorming;默认使用 n=3,用户可指定数量。各 agent 必须独立提出并论证候选,不得互相读取草稿或把同一候选改写成多个版本。汇总时去重并保留分歧,最终形成 3-7 个候选。每个候选必须包含:
- 科学问题:明确研究对象、机制/关系/边界条件。
- 可证伪假设:能被实验、数据或观察推翻。
- 关键预测:如果假设成立,应观察到什么。
- 反证路径:什么结果会推翻假设。
- 初始价值判断:新颖性、重要性、可行性和风险。
候选必须明确指出它来自研究脉络 map 的哪个缺口、转折或矛盾,并给出至少一个支持该推理的论文锚点。若 map 证据不足,先补充雷达/解读,不得用“常识”填空。
避免只写宽泛主题,例如“研究 X 的机制”。科学问题必须能被一个具体研究计划承接。
逐对查新
逐一查新每个候选,形成候选池后再比较:
- 用
research-topic-extractor把该候选转换成查新主题、关键词和核心问题。 - 将每个候选的主题提取结果保存到
candidates/Cx/theme.json。 - 调用
research-literature-review,档位固定为Premium,输出目录限定为.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/research-idea/*/novelty/Cx/。 - 每个候选必须形成
novelty/Cx/novelty-decision.json,字段包括:novelty_status:未研究/部分研究但关键缺口存在/已充分研究direct_answer:已有研究是否直接回答该科学问题equivalent_hypothesis_tested:是否已有等价假设被检验key_gap:关键缺口decision:保留 / 修改 / 淘汰
如果所有候选均为“已充分研究”,把查新结论作为反例证据,回到“基于研究脉络 map 的初始候选”重新 brainstorming;只有当 map 本身不足以支持新一轮推理时,才回到文献调查阶段补充证据。
多轮独立打磨
对保留或需修改的候选,用 parallel-vibe 做默认 3 轮串行独立审查。rounds=3 是外层迭代轮数,n=3 是每轮独立 agent 数;必须执行 3 次 parallel-vibe,每次把上一轮汇总后的改写版本作为下一轮输入。
科学问题-科学假设有没有什么缺陷?哪里可以改进?
执行要求:
- 默认
rounds=3、每轮n=3,默认串行;用户明确要求并行时才并行。 - 每轮/每个 thread 独立读取当前候选、用户资料摘要和查新摘要。
- 每个独立 agent 输出缺陷、改进建议、风险和重写版本;汇总后优化当前候选,再进入下一轮。
parallel-vibe作为内部依赖运行;读取其 summary 后只抽取结论,不向用户交付其路径。
优先使用:
for round in 1 2 3; do
python3 parallel-vibe/scripts/parallel_vibe.py \
--prompt "{第 ${round} 轮审查指令}" \
--n 3 \
--out-dir "{workspace_dir}/parallel-vibe/round-${round}"
done
系统级安装时可改用 ~/.codex/skills/parallel-vibe/scripts/parallel_vibe.py 或 ~/.claude/skills/parallel-vibe/scripts/parallel_vibe.py。
选择最佳方案
用同一套标准比较所有保留候选:科学重要性、新颖性、可证伪性、可行性、解释力、风险透明度。最佳方案应是综合价值、可证伪性和可推进性最强的一对,不一定是最宏大的问题。
写最终报告并验证
按 references/report-template.md 写最终 Markdown。写完后运行:
python3 research-idea/scripts/validate_report.py --report "{最终报告路径}"
# 系统级安装后也可使用:
python3 ~/.codex/skills/research-idea/scripts/validate_report.py --report "{最终报告路径}"
python3 ~/.claude/skills/research-idea/scripts/validate_report.py --report "{最终报告路径}"
若校验失败,先修复报告再交付。
输出
最终交付一个 Markdown 文件。未指定输出目录时,写入当前项目的 ./docs/ideas/;默认命名为:
Research-Idea_{github仓库名}_{pr名}_{时间戳}.md
完整默认路径为 ./docs/ideas/Research-Idea_{github仓库名}_{pr名}_{时间戳}.md。用户显式指定输出目录或文件名时遵从,但不得将正式报告放入隐藏工作区。
如果无法识别 GitHub 仓库名或 PR 名,使用当前目录名与当前分支名;仍无法识别时分别使用 repo 与 manual。
报告必须包含:
- 文献调查摘要与证据深度说明。
- 研究脉络 map 的时间线、研究线、关键转折和知识缺口摘要。
- 多个科学问题-科学假设对。
- 选择理由、最佳方案及原因。
- 查新摘要、证据缺口、可证伪路径和最小下一步。
报告不得暴露 .bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/research-idea/、tests/research-idea/、parallel-vibe/、.parallel-vibe/、.parallel_vibe/、@main/summary.md、manifest 或其他中间产物路径。
输出管理
本 Skill 的新任务中间文件统一写入 ./.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/{skill名}/input|output|log/。同一任务复用一个任务根目录;多 Skill 协作才创建 shared/。正式交付物不写入该目录,历史隐藏目录只允许显式兼容读取、迁移或清理。
- 默认工作区:
{cwd}/.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/research-idea/{yyyy-mm-dd-hh-mm}/。 - 所有中间文件、查新记录、并行审查产物、草稿和日志都必须保存在隐藏工作区内;除最终 Markdown 外,不要写到项目根目录或
docs/ideas/。 - 若用户显式指定工作区,目录名仍必须是隐藏目录(以
.开头),并且位于当前工作目录内;输出目录不得位于隐藏工作区内。
初始化优先使用脚本:
python3 research-idea/scripts/init_workspace.py --input-label "{简短主题或资料名}" --cwd .
# 系统级安装后也可使用:
python3 ~/.codex/skills/research-idea/scripts/init_workspace.py --input-label "{简短主题或资料名}" --cwd .
python3 ~/.claude/skills/research-idea/scripts/init_workspace.py --input-label "{简短主题或资料名}" --cwd .
脚本会先检查 research-topic-extractor、research-literature-review 与 parallel-vibe;缺失时早失败。只在开发测试时传 --with-test-dir 创建测试区。
校验
默认测试区:
./tests/research-idea。测试材料、验证日志和测试报告放入该目录;最终报告不得引用测试区路径。
普通用户运行初始化脚本时不创建测试区;开发测试时传
--with-test-dir。科学问题必须是问题,不是主题名。
假设必须可证伪,不写无法被推翻的价值判断。
查新结论必须区分“没有研究过”和“研究过但缺口仍在”。
不因查新成本高而跳过 Premium 文献调研。
不把文献综述正文当作最终输出;最终输出是研究想法报告。
不泄露隐藏工作区、中间文件、agent 内部指令或测试路径。
失败与恢复
保留错误证据和已完成产物;仅在输入、环境或外部依赖恢复后从最近的失败步骤重试。
约束
遵守以下公共约束,并执行本 Skill 的专属边界。
公共硬约束
- 任务需要落盘时,使用唯一的
./.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/根目录;共享材料放入shared/,Skill 专属材料放入该 Skill 的input/、output/、log/。 - 正式交付物、源代码和正式计划按项目约定保存,不写入任务工作区;未经授权不覆盖、删除、迁移或远程写入。
- 项目维护变更检查 BAC 可用性并记录需求、AI 产出、工具结果、文件改动和验证摘要;BAC 只做过程审计,不替代署名、责任或合规判断。
- 不记录 API Key、访问令牌、密码、Cookie、环境/凭据文件、私有 Prompt、身份信息、本地用户名、主机名或不必要的大体积原始数据。
- 文件路径必须规范化并限制在授权项目范围内;外部 URL、子进程和网络访问遵循最小权限,防止路径遍历、SSRF 和命令注入。
- Skill 版本唯一记录在自身
config.yaml:skill_info.version;公开 API、协议、目录或配置变更同步文档与CHANGELOG.md。 - 仅将 Skill 或 Bensz 基础设施本身的设计缺陷交给
bensz-collect-bugs;先脱敏写入~/.bensz-skills/bugs/,当前任务不中断,只有用户明确要求才公开上报,禁止直接修改用户已安装的 Skill 源码。
Skill 专属约束
不得超出本 Skill description 和上方流程所声明的范围;不将未验证的信息伪装成确定结论。