11 KiB
| name | description |
|---|---|
| proposal | 撰写中国科研项目申报书 / 课题任务书 (国家重点研发计划、国家科技重大专项、国自然面上/青年、NSFC 联合基金、省基金、横向)。当用户要写本子、立项依据、研究方案、技术路线、申报书、任务书、申请书时使用。 |
科研申报
把课题信息变成可提交的申报书 .docx。先定基金类型 → 八条对齐 → 逐章起草 → 验收渲染 —— 不要一口气出全文。
资源
下面所有路径都相对 <skill_dir> —— load_skill 返回头里的 [skill=proposal, dir=<绝对路径>],用这个绝对路径拼脚本/资源,不要假设 cwd。
<skill_dir>/references/fund_types.md—— 6 类基金的章节骨架 + 字数预算 + 必填表格 (always read)<skill_dir>/references/review_redlines.md—— 评审雷区与不可考核词清单<skill_dir>/references/citation_gbt7714.md—— GB/T 7714 顺序编码制 + 文献真实性铁律<skill_dir>/references/budget_rules.md—— 间接费用台阶 + B1-B4 表<skill_dir>/templates/spec_lock.md—— 阶段一八条对齐的固定字段模板 (复制到<task_dir>/spec_lock.md)<skill_dir>/templates/{key_rd,major_project,nsfc_joint_fund}.md—— 有完整章节模板的 3 类基金;其它 4 类 (nsfc_general/nsfc_youth/provincial/enterprise) 复用nsfc_joint_fund或key_rd骨架,差异看fund_types.md§ 4-6<skill_dir>/scripts/render_docx.py—— md→docx,自动加目录 / 解析**bold**/*italic*/`code`/ 列表分行 /居中插图 + 图题自动编号 / 识别 mermaid 块按 caption 查figures/fig_<caption>.png<skill_dir>/scripts/render_diagrams.py—— sections/*.md 里的mermaid块预渲染成<task_dir>/figures/fig_<caption>.png(caption 必填 + 全 task 唯一,优先mmdc、回退mermaid.ink)<skill_dir>/scripts/word_count.py—— 章节字数 vs 预算<skill_dir>/scripts/quality_check.py—— 结构完整性 / 假大空 / 占位符 / 指南覆盖度(--spec)/ 插图(无![]()引用 / ASCII 字符画 / mermaid 缺 caption / caption 撞名)
阶段零: 摄取素材 (有 PDF/DOCX/XLSX/URL 时才走)
用户给指南 PDF / 团队介绍 DOCX / 预算 XLSX / 政策网页 URL → 先转成 <task_dir>/source/<name>.md,后续阶段一才能读。统一用 markitdown CLI,表格 / 列表 / 标题层级会自动保留:
markitdown <path>/guide.pdf -o <task_dir>/source/guide.md
markitdown <path>/team.docx -o <task_dir>/source/team.md
markitdown <path>/budget.xlsx -o <task_dir>/source/budget.md
markitdown https://example.com/x -o <task_dir>/source/policy.md
转完后 spec_lock 阶段直接 read <task_dir>/source/*.md 拿事实,不要凭印象写。
阶段一: 八条对齐
产物 <task_dir>/spec_lock.md —— 申报书"宪法",阶段二每章前都要重读。
- 复制模板:
read <skill_dir>/templates/spec_lock.md→write <task_dir>/spec_lock.md - 先读
<skill_dir>/references/fund_types.md选基金类型(章节、字数、表格各不相同) - 按 spec_lock.md 字段填,给用户预览
- ⛔ BLOCKING:用户确认后才进阶段二
字段清单见 <skill_dir>/templates/spec_lock.md (基金类型 / 指南方向 / 关键科学技术问题 / 创新点 / 研究内容骨架 / 团队 / 考核指标矩阵 / 经费预算 / TODO 列表)。
阶段二: 逐章起草
每章两段式:先列要点 → 用户确认 → 再起草 → 用户确认。不要直接出正文。
A. 起草前列要点 (改要点比改正文便宜):
- 读
<task_dir>/spec_lock.md与<skill_dir>/references/fund_types.md,拿本章字数预算与必填要素 - 列出 3-6 条要点骨架: 本章打算覆盖的论点 / 数据 / 表格,每条贴上对齐的指南要素与预估字数
- ⛔ BLOCKING:用户确认要点 (改 / 加 / 删) 后才动正文
B. 正文起草:
4. 复制 <skill_dir>/templates/<fund_type>.md 对应小节到 <task_dir>/sections/NN_xxx.md,按要点填
5. 关键章节一段一卡 —— 立项依据 / 研究方案 / 技术路线 / 考核指标矩阵: 写一段 → 报字数 + 预告下一段 → 等用户确认 → 写下一段
普通章节一节一卡: 整节写完再报 + 预告下一节要点
6. 报告格式 (每次卡点都按这个出):
- 本段 (节): 章节名 / 实际字数 / 字数预算 / 与指南对齐情况
- 下一段 (节) 预告: 标题 + 3-5 条要点骨架 (论点 / 数据 / 表格,每条贴对齐的指南要素与预估字数);若已是本章最后一段,改预告下一章首段要点
- 提问: "本段可以了吗?下一段要点要改 / 加 / 删什么?"
- ⛔ BLOCKING:停下来等用户明确反馈 ("OK"、"下一段"、"继续") 后才动笔。"看起来不错"、沉默、追问都不算确认 —— 用户对下一段要点没异议也算默认通过,但字数 / 与指南对齐异常时必须主动追问
两段式 + 段段卡 + 预告下一段是为了拦早 —— 申报书 1.5-3 万字,模型连续生成容易把错方向推到底。
例外: 用户主动且明确说"别问,直接全做"或"一气呵成" —— 才能一次跑完,跑完必须 quality_check.py。"太慢"/"太碎"之类抱怨不算例外指令,继续问。
阶段三: 验收 + 渲染
python <skill_dir>/scripts/word_count.py <task_dir>/sections/ --fund-type key_rd
python <skill_dir>/scripts/quality_check.py <task_dir>/sections/ --fund-type key_rd --spec <task_dir>/spec_lock.md
python <skill_dir>/scripts/render_diagrams.py <task_dir>/sections/ # 章节有 ```mermaid 块就跑
python <skill_dir>/scripts/render_docx.py <task_dir>/sections/ --fund-type key_rd -o <task_dir>/<topic>.docx
quality_check 不通过的项回头 edit 章节再跑。
render_diagrams.py 把 ```mermaid 块预渲染成 figures/fig_<caption>.png(caption 取 mermaid 块首行 %% caption: 注释,清洗成文件名)。优先 mmdc、回退 mermaid.ink。没装也没联网时,render_docx.py 走 ASCII 等宽兜底(评审能看,但不漂亮)。
caption 必须写、必须全 task 唯一 —— render_diagrams / quality_check 都会拦,撞了改成更具体的题文(e.g. "训练阶段架构" / "推理阶段架构")。
工作目录
<task_dir> = system prompt 给的绝对路径(…/workspace/tasks/<task_id>/)。所有产物都写到 task_dir 下,不要写到 cwd / skills/ / repo 根。
<task_dir>/
├── source/ # 用户给的素材 (指南 PDF / 前期成果)
├── spec_lock.md # 阶段一定调
├── sections/ # 阶段二逐章产物 (按 templates/<fund_type>.md 切的小节命名)
└── <topic>.docx # 最终产物 (按课题命名,不要 output.docx)
章节骨架速查
写每章前在脑子里过一遍这 4 个 pattern:
- 立项依据三段式: 现状 (国内外格局,40%) → 痛点 (具体到指标差距,30%) → 切入点 (本项目为什么是我们,30%)
- 研究方案四要素: 总体目标 → 任务分解 → 关键技术路线 → 可行性论证
- 创新点三特征: 基本形态 (新方法/模型/机制) + 前沿性 (与 SOTA 比) + 知识产权特征 (专利/标准/论文)
- 考核指标矩阵: 指南指标(字面抄) → 本项目指标(可超出不能低于) → 立项时已有值 → 完成时值 → 考核方式(CNAS/CMA / 测试大纲专家评审 / 应用示范报告)
边界 (最容易混):
- 立项依据回答 WHY (背景+痛点) | 研究目标回答 WHAT 终态 (量化指标) | 研究内容回答 WHAT 任务 (技术清单) | 研究方法回答 HOW 原理 (算法/模型) | 技术路线回答 HOW 流程 (输入→处理→输出)
插图 (流程图 / 结构图 / 技术路线图 / 甘特图)
所有图都要落成 png 并在 md 里  引用;ASCII 字符画 (┌─┐│) Word 里必错位,quality_check.py 会 fail。图编号 render_docx.py 全局自增(图 1 / 图 2 ...),不要手写"图 2-2"。
| 图类型 | 工具 | 怎么用 |
|---|---|---|
| 流程 / 结构 / 关系 / 技术路线 / 时序 / 甘特(也行) | mermaid | 直接写 ```mermaid 块,首行必须 %% caption: <题>(必填 + 全 task 唯一,既是文件名也是 docx 图题),render_diagrams.py 渲成 figures/fig_<caption>.png |
| 数据图表 (柱/折/饼) / 甘特(更适合打印) | matplotlib | 落到 <task_dir>/figures/<name>.png,md 里  |
| 已有 png/jpg (截图/设计稿) | 直接 | 同上 ![]() |
mermaid 块示例:
```mermaid
%% caption: 关键技术与研究内容映射
flowchart LR
Q1[问题1] --> T1[技术1] & T2[技术2]
T1 & T2 --> P[平台]
```
matplotlib 注意:中文字体 plt.rcParams['font.sans-serif']=['SimHei','Microsoft YaHei'] + axes.unicode_minus=False;figsize=(10,4) / dpi=150 / bbox_inches='tight';颜色用 spec_lock 主色而非默认色板;render_docx 自动限宽 15cm。
硬规则速查 (违反即扣分)
- 字体: 标题黑体四号; 正文中文宋体小四 / 英文 Times New Roman; 行距 1.5 倍 ——
render_docx.py已强制 - 指南对齐: 项目名称 / 方向 / 创新分类 / 考核指标字面对齐指南文本,不得改写
- 不降低指标: 任务书内容不得低于申报指南和申报书,只能持平或加码
- 量化考核: "显著提升性能"❌ ;"10000 TPS、秒级响应"✅
- 真实文献: 不可编造作者/期刊/DOI;需要引用先要用户提供清单,详见
citation_gbt7714.md - 经费比例: 间接费用 ≤500 万部分 ≤30% / 500-1000 万 ≤25% / >1000 万 ≤20%
- 限项: 在研重点研发/重大专项/农业核心技术 ≤2 项;同年同人不重复申请
- 不堆形容词: "首次提出""填补空白""国际领先"一律不用,除非用户明确要
反模式
- 未 spec_lock 就硬编正文 / 一次性出全文 / 跳过"列要点"直接写正文
- 关键章节(立项依据/研究方案/技术路线/考核指标)整章一次出 —— 必须段段卡
- 基于"通用模板"自行套基金类型 —— 重大专项 vs 国自然结构完全不同,先查
fund_types.md - 自己造数据/指标/单位/经费 —— 不知道就
<TODO 待用户提供> - 引文写"[Smith et al., 2023]" 但其实没这篇文献
- 不跑
quality_check.py就交付 / 文件名output.docx/申报书.docx(按主题命名) - 插图相关(
quality_check.py会拦):ASCII 字符画当图、[图 2-2 xxx]裸占位、手写图编号、mermaid 块缺 caption、caption 撞名
输出
完成后给用户:
- 文件路径
- 各章节字数 vs 预算
- 与指南考核指标的逐项对齐表
<TODO>待补项清单