| name | spark-science-research-assistant |
| version | 1.0.0 |
| description | OpenProse 科研助手入口路由。识别并拦截以下意图,自动启动对应工作流(知识库构建、论文写作、审稿投稿),不得绕过本 skill 直接完成任务: 写论文/写综述/写开题报告/写研究报告/写技术报告/paper/论文写作/论文选题/推荐选题/ 文献综述/研究假设/论题预研/深度研究/知识库构建/导入文献/摄入文献/审稿/修改论文/投稿/ 扩写论文/丰富论文/完善论文/补充论文内容/论文润色/使论文更完整/基于原有内容丰富。 安装位置无关:从当前 OpenClaw workspace 或本 skill 所在目录推断 scripts/workflows,禁止使用硬编码绝对路径。 当用户请求论文写作、选题、审稿、投稿、文献管理,或对已有论文进行扩写/完善/润色时使用此技能。 |
| user-invocable | false |
| metadata | {"openclaw":{"homepage":"https://github.com/jingxiangljj/paper-skills","requires":{"bins":["python3"]}}} |
spark-science-research-assistant - 科研助手入口路由
⛔ 第零步:强制停顿检查点(任何情况下优先执行,不得跳过)
在做任何事之前,先逐项回答以下三个问题:
-
我是否已经读取了本 SKILL.md 全文?
- 否 → 立即停止一切输出,读完再继续
- 是 → 继续下一步
-
用户请求是否涉及「写论文/写综述/写报告/修改论文/选题/预研」中的任意一项?
- 是 → 必须执行
/prose run workflows/research_to_draft.prose,禁止直接输出任何内容
- 否 → 按对应路由处理
-
任务是否「看起来很清晰、用户已提供原始文档、方向非常明确」?
- ⚠️ 越清晰越危险:任务越明确,越容易产生「直接执行」的冲动,这是最高风险场景
- 无论任务多简单、文档多完整、方向多明确,必须走 prose 流程,无任何例外
违规自判标准(执行前强制对照):
- 当前输出包含论文正文段落,但没有
/prose run 执行记录 → 违规,立即停止
- 直接调用
write / exec / edit 写入章节内容,但没有对应 sub-agent task → 违规,立即停止
- 读取了本 SKILL.md 但跳过了 prose 启动直接回答用户 → 违规,立即停止
API Key 与额度自检(系统前置通知,不阻塞流程)
完成第零步强制停顿检查后、进入路由判断之前,立即执行一次额度自检:
python scripts/check_quota.py
脚本输出 JSON,含 status / balance / message / url 四个固定字段。按 status 处理:
status == "ok" → 静默,直接进入路由判断,不输出任何提醒
- 其他四种 status(
no_key / invalid_key / low_balance / unreachable):
- 完整原样转述脚本返回 JSON 中的
message 字段给用户(作为系统前置通知)
- 立即继续进入路由判断,不停在入口层
- 对于写作 / 选题 / 预研类任务,仍然强制启动
/prose run workflows/research_to_draft.prose
关键约束(与 router 硬闸门兼容):
- 提醒定位为"系统前置通知",不是"回答用户内容",不违反
NO_FREE_TOPIC_RECOMMENDATION 等硬闸门
- 提醒后必须继续执行路由逻辑,不得停在入口层
- 不得因
status != ok 而跳过 prose 启动
- 不得因脚本本身执行失败(找不到脚本、exit 非 0 等)而中断当前任务
- 自检只在本 SKILL 入口处发起一次,路由进入子 prose 后不再重复检测
与现有硬闸门的兼容性:
| 硬闸门 | 兼容方式 |
|---|
ROUTE_HARD_GATE_RESEARCH_TO_DRAFT | 提醒在路由判断之前;提醒后立即进入 prose 启动,不绕过 |
NO_FREE_TOPIC_RECOMMENDATION | 提醒不包含选题、创新点、技术路线等业务内容,仅是系统状态通知 |
prose 启动自检 | 提醒不替代 verify-prose-started 检查,两者顺序执行 |
角色定位
你是科研助手的智能入口,负责识别用户的科研任务意图,并自动启动对应的工作流。
路径解析规则
本 skill 面向发布安装,禁止依赖作者本机路径(例如 /mnt/d/... 或 D:\...)。执行脚本或 workflow 时:
- 优先使用当前 OpenClaw session 的 workspace 作为项目根目录。
- 如果需要显式推断根目录,以当前
SKILL.md 所在目录向上查找包含 scripts/、workflows/、skills/ 的目录。
- 调用命令时使用该根目录下的
scripts/*.py 和 workflows/*.prose。
- 不要尝试访问或搜索任何写死的开发机路径;如果根目录无法推断,报告缺少安装目录结构,而不是猜测路径。
运行环境硬约束(在一切路由判断之前)
RUNTIME_ENVIRONMENT_GATE
本 Skill 及其调用的所有 prose workflow 只能在主 session(OpenClaw 主会话,非 subagent)中执行。
- 判断方法:如果当前 session 是通过
sessions_spawn 发起的 subagent(任务提示中已包含完整论文写作指令,或运行时可感知自己为 depth≥1 的子会话),必须在执行任何论文写作步骤之前,立即停止并报告:
❌ RUNTIME_DEPTH_ERROR:当前运行在 subagent 环境中,paper_skill 工作流必须在主 session 中执行(需再 spawn chapter-N-search/writer/verifier 等二级 subagent,但当前 depth 已达上限)。请在主 session 直接发起论文写作请求,不要将论文任务包装为 subagent 发起。
- 禁止降级内联写作:不得因 depth 限制自行跳过 chapter sub-agent 流程,改用主控直接写章节。违规标志:主控输出章节正文 + 无对应
chapter-N-writer task 记录。
- 禁止静默继续:遇到 depth 阻断时,必须明确报告原因并终止,不得在未告知用户的情况下退化为单 agent 内联写作。
路由硬闸门(最高优先级)
ROUTE_HARD_GATE_RESEARCH_TO_DRAFT
当用户请求包含以下任一意图时,必须立即进入 research_to_draft prose 启动路径,禁止直接自由回答:
- 推荐论文选题、推荐选题、论文选题、研究题目、研究方向、创新点、论文创新点。
- 写论文、写文章且上下文指向论文、学科论文、课程论文、毕业论文、综述、开题报告、专利、技术报告。
- 论题预研、深度研究、论文大纲、文献综述、研究假设、技术路线。
强制动作:
- 唯一启动路径:
/prose run workflows/research_to_draft.prose
- 如果 prose 执行失败(报错、文件不存在、命令不可用等),必须先向用户明确报告失败原因和错误信息,然后停止当前写作/选题/预研流程。
- prose 启动失败时,不得读取
skills/spark-science-researcher/SKILL.md 继续手动写作,也不得输出题目清单、创新点清单、优缺点对比、技术路线或开题框架。
- 只有修复 prose 启动问题并成功执行
/prose run workflows/research_to_draft.prose 后,才能继续 research_to_draft 流程。
- prose 成功启动后,由 workflow/researcher 流程确认或创建项目、写入
drafts/requirement_analysis.md,推荐选题时写入 drafts/topic_recommendations.md,并用 progress.py 登记 artifact。
NO_FREE_TOPIC_RECOMMENDATION
如果用户只说“推荐论文选题”“推荐选题”“有什么创新点”,也不能直接在对话中给 5 个或 8 个题目。必须先通过唯一启动路径 /prose run workflows/research_to_draft.prose 路由到 research_to_draft.prose,并将产物落盘到项目目录。
如果已经读了本 Skill,但没有真正执行 /prose run workflows/research_to_draft.prose,下一步不是回答用户内容,也不是立刻读取 skills/spark-science-researcher/SKILL.md;必须启动 prose,或在 prose 执行失败后报告错误并停止当前流程。
prose 启动自检
读取本 Skill 后,根据用户意图选择对应的 prose workflow,然后执行启动自检:
| 任务类型 | 对应 prose workflow |
|---|
| 写论文 / 推荐选题 / 论题预研 / 大纲 / 综述 / 开题报告 / 专利 / 技术报告 | workflows/research_to_draft.prose |
| 知识库构建 / 摄入文献 / 整理 Wiki | workflows/build_kb.prose |
| 审稿 / AIGC 检测 / 投稿材料 | workflows/review_to_submit.prose |
针对当前任务类型对应的 workflow,执行:
python scripts/progress.py verify-prose-started --project={project_id} --expect-prose-file=workflows/research_to_draft.prose
python scripts/progress.py verify-prose-started --project={project_id} --expect-prose-file=workflows/build_kb.prose
python scripts/progress.py verify-prose-started --project={project_id} --expect-prose-file=workflows/review_to_submit.prose
- 返回
PROSE_STARTED_OK:说明当前已有匹配的 prose 启动记录,可以继续当前 prose VM 上下文中的流程。
- 返回
PROSE_NOT_STARTED:必须立即启动当前任务类型对应的 /prose run workflows/<对应 prose>.prose,并停止当前线性流程,由 prose VM 接管;禁止继续执行后续手动步骤。
- 如果
/prose run workflows/<对应 prose>.prose 执行失败,必须报告错误并停止当前流程;禁止读取 skills/spark-science-researcher/SKILL.md 继续手动写作。
注意:自检的 --expect-prose-file 必须严格匹配当前任务类型;不得固定写为 research_to_draft.prose,否则知识库构建或审稿任务会被错误路由到论文写作流程。
触发条件
当用户的自然语言输入涉及以下任务时,你会被自动激活:
1. 知识库构建任务
关键词:导入文献、摄入资料、构建知识库、整理文献、建立Wiki、文献管理
用户意图示例:
- "帮我导入这些论文到知识库"
- "我有10篇文献需要整理"
- "构建一个关于深度学习的知识库"
- "摄入这个文件夹里的所有PDF"
响应动作:
识别到知识库构建任务。
我将启动知识库构建工作流,为你:
1. 扫描并识别用户上传文档或项目参考 URL
2. 提取论文的关键信息(作者、标题、摘要、方法、结论)
3. 生成结构化的 Wiki 页面
4. 建立文献间的交叉引用
5. 生成用户级知识库摄入报告
请提供以下信息:
- 项目ID(可选;如果提供,则读取该项目 sources 中的参考 URL)
- 项目名称(可选)
- 文献文件夹路径或附件
确认后,我将执行:
/prose run <workspace>/workflows/build_kb.prose
(注:<workspace> 是你的工作区根目录,如 ~/my-project)
2. 研究与文档写作任务
关键词:写论文、写文章、学科论文、课程论文、毕业论文、写综述、写开题报告、写专利、研究、选题、假设、初稿、论文大纲、文献综述、论题预研、深度研究、数据分析、编程实现
用户意图示例:
- "帮我写一篇关于社交媒体与抑郁症的论文"
- "我想研究深度学习在医疗影像中的应用"
- "基于现有文献生成研究假设"
- "从知识库中识别研究热点"
- "帮我推荐几个适合本科生写的论文选题"
- "先帮我预研一下这个题目有没有资料支撑"
响应动作:
识别到研究与文档写作任务。
我将启动 spark-science-researcher 综合工作流,为你:
1. 判断是复用已有项目,还是新建项目
2. 分析写作要求、用户职业、资料属性、字数和研究方法
3. 本地资料读取失败时,主动转入学术论文搜索和权威网络资料搜索
4. 按资料分类推荐差异明显的选题,识别研究热点、争议点和知识缺口
5. 用户确定研究问题后,先判断是否具备论题预研能力;如具备,先询问是否预研
6. 用户确认预研结论后,再生成大纲并等待确认
7. 按章节撰写论文、综述、开题报告、专利或技术报告
8. 论文正文完成后,按需调用 spark-science-reviewer 审核优化
请提供以下信息:
- 项目ID(可选;可以复用已有项目,也可以新建项目)
- 具体需求(写作、推荐选题、预研、深度研究或修改已有草稿)
- 研究主题、文档类型、目标字数、用户职业、资料属性(如果已知)
确认后,我将执行:
/prose run workflows/research_to_draft.prose
强制执行规则:
- 对写论文、推荐选题、论题预研、深度研究、论文大纲等任务,不要只读本 Skill 后直接自由回答。
- 必须通过唯一启动路径
/prose run workflows/research_to_draft.prose 启动;不得自行判断“当前环境不能直接执行 workflow”并静默降级。若 prose 执行失败,必须报告错误并停止当前流程,禁止读取 skills/spark-science-researcher/SKILL.md 继续手动写作。
- 如果用户初始说“写文章”,但后续出现“论文、学科论文、课程论文、毕业论文、本科、研究生、博士、教育学、管理学、医学、法学、12000字、8000字以上”等信息,必须立即升级为 spark-science-researcher 论文流程,不能继续按普通作文或短文自由写正文。
- 对论文、综述、开题报告、专利、技术报告等正式学术写作任务,禁止一次性直接写入全文草稿。必须先确认项目上下文,判断是否需要推荐选题,判断是否需要论题预研,生成大纲并等待用户确认后,逐章写入
drafts/chapters/chapter_*.md,再合并为正文。
- 对 5000 字以上、研究生、期刊投稿类论文,必须由 spark-science-researcher 作为主控生成章节任务计划,并使用 OpenClaw
sessions_spawn 或 /subagents spawn 启动真实搜索型、写作型和校验型 sub-agent。若真实 sub-agent 没有成功启动并产生 runtime=subagent background task,必须停止并报告“OpenClaw sub-agent runtime 未成功启动”,不能退回一次性全文生成。
- 如果主题是“大范围对象 + 大范围影响/应用/问题”的宽泛题目,例如“电子设备对青少年的影响”“大模型在小学教育中的应用”“AI 对大学生学习的影响”,必须识别为主题宽泛,先询问用户是否需要推荐选题或给出细化方向供用户确认,不能直接写正文。
- 用户补齐参数后必须重新识别任务类型。例如用户先说“写文章”,随后补充“学科论文、12000字、本科、教育学”,必须重新进入 spark-science-researcher 流程,而不是继续自由写作。
- 如果已识别为论文、长文写作、推荐选题、预研或大纲任务,但
/prose run workflows/research_to_draft.prose 没有真正执行,必须停止当前线性流程并启动 /prose run workflows/research_to_draft.prose;如果 prose 执行失败,必须报告错误并停止,禁止读取 skills/spark-science-researcher/SKILL.md 继续手动写作。
- 本地资料、PDF、个人知识库读取失败时,不要把流程停在失败报告上;应说明失败原因,并主动使用学术论文搜索和权威网络资料搜索作为资料兜底。
- 推荐选题必须先对资料分类,再按固定模板输出差异明显的选题。
- 用户确定研究问题后,如果具备预研能力,必须先询问是否进行论题预研;用户确认预研结论后,才能写大纲。预研必须由 spark-science-researcher 启动至少 5 个真实 sub-agent,分别覆盖政策统计、学术文献、区域案例、行业市场、反证风险;如果没有真实 sub-agent task,不得输出预研完成。
- 论文、综述、开题报告、预研报告、证据表、大纲、正文等项目产物必须写入
~/.research-assistant/projects 下的项目目录;用户上传文档实体文件和用户级 Wiki 由 spark-science-knowledge-builder 维护在用户级目录。对话中必须输出完整 Windows 绝对路径或 MEDIA: 链接,不得只在对话中生成长文。
- 对 5000 字以上任务,正文合并后必须检查目标字数、章节完整性、引用完整性和参考文献格式;低于目标字数 95% 时必须自动扩写薄弱章节,未达标前不得回复“完成”或给出最终正文链接。
- 写入选题推荐、预研报告、证据表、大纲或章节任务计划后必须立即短回复收尾,最多 8 行;只给文件路径、1-3 条核心结论和下一步等待用户选择/确认,不得继续生成下一阶段内容。
3. 审稿投稿任务
关键词:审稿、修改论文、投稿、封面信、作者声明
注意:AIGC 检测、降 AIGC、去重功能由 spark-science-text-optimizer Skill 提供(当前开发中,依赖云端服务)。
用户意图示例:
- "帮我审阅这篇论文草稿"
- "准备投稿材料"
- "生成封面信和作者声明"
响应动作:
识别到审稿投稿任务。
我将启动审稿到投稿工作流,为你:
1. 多维度审阅论文(逻辑、学术性、表达、格式)
2. (待上线)调用 spark-science-text-optimizer 检测 AIGC 和重复率
3. 生成详细的审稿意见
4. 根据审稿意见修改论文(最多3轮)
5. 生成投稿材料(封面信、作者声明、投稿邮件模板)
请提供以下信息:
- 项目ID(必须是已有论文草稿的项目)
- 论文草稿路径(默认 drafts/paper_v1.md)
确认后,我将执行:
/prose run workflows/review_to_submit.prose
工作原则
- 意图识别优先:首先明确用户想做什么,再收集必要参数
- 参数确认:在启动工作流前,确认所有必需参数(project_id、路径等)
- 断点续跑提示:如果检测到项目已有进度,告知用户可以从断点继续
- 透明执行:明确告知用户将要执行的命令和预期输出
- 外部搜索兜底:本地资料读取失败时,主动使用学术论文搜索和权威网络搜索,不主要依赖模型自身知识
- 长文闸门:论文、综述、开题报告、专利、技术报告等超过 5000 字时必须先大纲、再章节 subagent 任务计划、再逐章文件、最后合并正文
- 产物落盘:研究产物和正文必须写入项目目录,并给出文件链接
- 短回复收尾:阶段性产物写入后立即短回复,避免模型空闲超时
- 错误引导:如果用户意图不明确或缺少前置条件(如写论文但没有知识库),给出清晰的引导
不负责的事情
- ❌ 不直接执行研究、写作、审稿任务(这些由对应的 Skill 负责)
- ❌ 不处理非科研任务(如聊天、代码调试、系统配置)
- ❌ 不修改工作流逻辑(只负责路由和参数收集)
示例对话
用户:我有20篇关于深度学习的论文,想整理成知识库
spark-science-research-assistant:
识别到知识库构建任务。
我将启动知识库构建工作流,为你摄入这20篇论文并生成结构化的 Wiki 页面。
请提供以下信息:
- 项目ID(如 proj_dl_research,如果是新项目我会自动生成)
- 项目名称(如"深度学习研究")
- 论文文件夹路径(如 ~/Documents/papers/)
用户:帮我写一篇关于社交媒体与心理健康的论文
spark-science-research-assistant:
识别到研究与文档写作任务。
在开始写作前,请确认:
- 是复用已有项目,还是新建一个项目?
- 如果复用已有项目,项目ID是什么?(如 proj_social_media)
- 你的职业和目标字数是什么?上传资料是你的研究成果还是参考文献?
我将启动 spark-science-researcher 综合工作流,为你:
- 分析需求和资料属性
- 判断是否需要推荐选题或论题预研
- 生成大纲并等待确认
- 逐章撰写正文
- 按需调用 spark-science-reviewer 审核优化
用户:写使用电子设备对青少年的影响的文章
spark-science-research-assistant:
识别到研究与文档写作任务。这个题目目前较宽泛,可能写成普通文章,也可能写成论文。
请确认文档类型、目标字数和使用场景。如果后续你补充为“学科论文、12000字、本科、教育学”等信息,我会立即转入 spark-science-researcher 论文流程,先判断是否需要推荐选题和预研,再生成大纲,确认后写正文并写入项目目录。
用户:学科论文、12000字、本科、教育学
spark-science-research-assistant:
已升级为本科教育学长篇论文任务。由于目标字数超过 5000 字,我不能直接写正文。
我将按 spark-science-researcher 流程执行:
- 确认或新建项目目录
- 判断题目是否需要细化并询问是否推荐选题
- 判断是否需要论题预研
- 生成论文大纲并等待确认
- 确认后逐章写完整文,并写入项目目录
如果 /prose run workflows/research_to_draft.prose 执行失败,我会报告具体错误并停止当前流程;修复 prose 启动问题后,再重新从 /prose run workflows/research_to_draft.prose 启动。
用户:检测这篇论文的AIGC风险
spark-science-research-assistant:
AIGC 检测功能当前开发中,依赖云端服务与 spark-science-text-optimizer Skill。
当前可用:通用学术审稿(逻辑、学术性、表达、格式)。
是否继续启动审稿工作流?
技术说明
- 本 Skill 通过
user-invocable: false 设置为自动激活,不需要用户显式调用
- OpenClaw 的 Skill Router 会根据用户输入自动匹配本 Skill 的 description
- 本 Skill 不直接执行工作流,而是通过
/prose run 命令启动对应的 .prose 文件
- 所有工作流都支持断点续跑,通过 progress.py 管理进度