nsfc-reviewers

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

NSFC 标书专家评审模拟器

NSFC Proposal Expert Review Simulator

重要声明(非官方)

Important Disclaimer (Non-Official)

  • 本技能输出仅用于写作改进与自查,不代表任何官方评审口径,也不构成资助结论或承诺。
  • “评审等级/资助建议”仅作为优先级与改进方向的参考;用户如未明确要求,可不输出该部分。
  • The output of this skill is only for writing improvement and self-checking, and does not represent any official review caliber, nor does it constitute a funding conclusion or commitment.
  • The "review grade/funding recommendation" is only for reference as priority and improvement direction; this section may be omitted if the user does not explicitly request it.

技能依赖

Skill Dependencies

  • 并行多组评审模式依赖
    parallel-vibe
    技能。
  • parallel-vibe
    不可用、被禁用,或
    panel_count == 1
    ,自动退化为单组模式(仍包含 5 位专家)。
  • 专家 prompt 模板位于
    references/expert_*.md
    ,聚合规则位于
    references/aggregation_rules.md
  • Parallel multi-group review mode depends on the
    parallel-vibe
    skill.
  • If
    parallel-vibe
    is unavailable, disabled, or
    panel_count == 1
    , it automatically degrades to single-group mode (still includes 5 experts).
  • Expert prompt templates are located in
    references/expert_*.md
    , and aggregation rules are in
    references/aggregation_rules.md
    .

安全与隐私(硬规则)

Security and Privacy (Hard Rules)

  • 默认将标书内容视为敏感信息:仅处理用户明确提供的文件/目录;不擅自扩展扫描范围。
  • 除非用户明确要求且确认风险:不联网、不把原文大段外发、不在输出中复述不必要的个人信息/单位信息。
  • 只做“文本读取与评审”,默认不执行任何编译/运行(例如不运行 LaTeX 编译,不执行脚本)。
  • 输出若需分享:优先提供“问题摘要 + 可执行修改建议”,必要引用原文时只引用最短必要片段
  • By default, proposal content is treated as sensitive information: only process files/directories explicitly provided by the user; do not expand the scanning scope without permission.
  • Unless explicitly requested by the user and risks are confirmed: no internet access, do not send large segments of the original text externally, and do not repeat unnecessary personal/unit information in the output.
  • Only perform "text reading and review"; by default, do not execute any compilation/running (e.g., do not run LaTeX compilation, do not execute scripts).
  • If output needs to be shared: prioritize providing "issue summary + actionable modification suggestions"; when necessary to quote the original text, only quote the shortest necessary fragment.

输入

Input

用户至少提供其一:
  • proposal_path
    :标书目录(推荐,包含多份
    .tex
  • proposal_file
    :单个
    .tex
    主文件(如用户只有一个文件)
  • proposal_zip
    :压缩包(若用户提供,先解压到临时目录再评审,并在报告中记录解压位置)
    • 解压安全:禁止路径穿越(如
      ../
      );避免覆盖用户已有文件;必要时先让用户确认解压位置。
可选补充(用户未给时不要强行假设):
  • focus
    :优先关注某一维度(如“创新性/可行性/研究基础”)
  • output_path
    :输出文件路径(默认见“输出”)
  • style
    :口吻偏好(如“严格/温和/非常具体”)
  • panel_count
    :评审组数量(每组固定 5 位专家)
    • 默认值见
      config.yaml:parallel_review.default_panel_count
    • 上限见
      config.yaml:parallel_review.max_panel_count
Users must provide at least one of the following:
  • proposal_path
    : Proposal directory (recommended, containing multiple
    .tex
    files)
  • proposal_file
    : Single main
    .tex
    file (if the user only has one file)
  • proposal_zip
    : Compressed package (if provided, first extract to a temporary directory for review, and record the extraction location in the report)
    • Extraction security: Prohibit path traversal (e.g.,
      ../
      ); avoid overwriting existing user files; if necessary, ask the user to confirm the extraction location first.
Optional supplementary inputs (do not assume if not provided by the user):
  • focus
    : Prioritize a specific dimension (e.g., "innovation/feasibility/research foundation")
  • output_path
    : Output file path (default see "Output")
  • style
    : Tone preference (e.g., "strict/moderate/very specific")
  • panel_count
    : Number of review panels (each panel has 5 fixed experts)
    • Default value see
      config.yaml:parallel_review.default_panel_count
    • Upper limit see
      config.yaml:parallel_review.max_panel_count

输出

Output

  • 默认输出文件名见
    config.yaml:output_settings.default_filename
    ,默认写入标书目录下:
    ./{default_filename}
  • 若用户指定
    output_path
    ,以用户为准;但当路径不可写/目录不存在时应 fail-fast 并提示用户更换路径。
  • 并行模式下输出“专家共识 + 独立观点 + 汇总建议”;可按配置附带每位专家原始意见。
  • 并行模式下建议将各组原始评审整理为最终交付文件:
    ./{panel_dir}/G{组号}.md
    panel_dir
    config.yaml:output_settings.panel_dir
    )。
  • 中间过程文件默认隐藏到
    config.yaml:output_settings.intermediate_dir
    (默认
    .nsfc-reviewers/
    ),避免根目录出现大量计划/日志/并行运行环境。
  • Default output filename see
    config.yaml:output_settings.default_filename
    , which is written to the proposal directory by default:
    ./{default_filename}
    .
  • If the user specifies
    output_path
    , follow the user's setting; but if the path is unwritable or the directory does not exist, fail fast and prompt the user to change the path.
  • In parallel mode, output "expert consensus + independent opinions + aggregated suggestions"; original opinions of each expert can be attached as per configuration.
  • In parallel mode, it is recommended to organize the original reviews of each panel into final deliverable files:
    ./{panel_dir}/G{panel_number}.md
    (
    panel_dir
    see
    config.yaml:output_settings.panel_dir
    ).
  • Intermediate files are hidden in
    config.yaml:output_settings.intermediate_dir
    by default (default
    .nsfc-reviewers/
    ) to avoid cluttering the root directory with plans, logs, and parallel runtime environments.

工作流(执行规范)

Workflow (Execution Specifications)

读取配置(强制)

Read Configuration (Mandatory)

开始前先读取本技能目录下的
config.yaml
,并将以下配置作为执行时的单一真相来源:
  • review_dimensions
    :评审维度、权重、要点与常见问题(作为检查清单)
  • severity_levels
    :P0/P1/P2 分级口径(用于分级)
  • review_grades
    :等级与建议(仅在用户需要时输出)
  • proposal_files.patterns/exclude
    :标书文件识别规则
  • output_settings
    :输出文件名、面板目录、中间过程隐藏策略与章节开关
  • parallel_review
    :并行评审开关、专家画像、聚合策略
Before starting, read the
config.yaml
in the skill directory, and use the following configurations as the single source of truth during execution:
  • review_dimensions
    : Review dimensions, weights, key points, and common issues (as a checklist)
  • severity_levels
    : P0/P1/P2 grading criteria (for classification)
  • review_grades
    : Grades and suggestions (only output if requested by the user)
  • proposal_files.patterns/exclude
    : Proposal file identification rules
  • output_settings
    : Output filename, panel directory, intermediate process hiding strategy, and chapter switches
  • parallel_review
    : Parallel review switch, expert personas, aggregation strategy

阶段一:前置检查(Fail Fast)

Phase 1: Pre-Check (Fail Fast)

  1. 校验输入路径存在且可读;若是目录,先按
    proposal_files
    规则筛选出待读文件列表。
  2. .tex
    文件数量为 0:直接报错并请求用户提供正确路径/文件。
  3. 若文件数量异常多/目录明显包含大量无关文件:先请用户确认评审范围(避免读错目录/读太多)。
推荐的确定性做法(避免“漏扫子目录 / 误扫中间目录 / 扫到交付产物”):
bash
undefined
  1. Verify that the input path exists and is readable; if it is a directory, first filter the list of files to be read according to the
    proposal_files
    rules.
  2. If the number of
    .tex
    files is 0: directly report an error and request the user to provide the correct path/file.
  3. If the number of files is abnormally large or the directory obviously contains a large number of irrelevant files: first ask the user to confirm the review scope (to avoid reading the wrong directory or too many files).
Recommended deterministic approach (avoid "missing subdirectories / mis-scanning intermediate directories / scanning deliverables"):
bash
undefined

列出将被纳入评审的 .tex 文件(递归扫描,并自动跳过 panels/、.nsfc-reviewers/、.parallel_vibe/)

List .tex files to be included in the review (recursive scan, automatically skipping panels/, .nsfc-reviewers/, .parallel_vibe/)

python3 <nsfc_reviewers_path>/scripts/list_proposal_files.py --proposal-path <proposal_root>
python3 <nsfc_reviewers_path>/scripts/list_proposal_files.py --proposal-path <proposal_root>

可选:限制最大文件数(超限退出码=3)

Optional: Limit maximum number of files (exit code=3 if exceeded)

python3 <nsfc_reviewers_path>/scripts/list_proposal_files.py --proposal-path <proposal_root> --max-files 200
undefined
python3 <nsfc_reviewers_path>/scripts/list_proposal_files.py --proposal-path <proposal_root> --max-files 200
undefined

阶段二:通读与结构化理解

Phase 2: Read-Through and Structured Understanding

  1. 按章节顺序快速通读,提取“项目主题/科学问题/假说/目标/技术路线/创新点/研究基础/团队与条件/预期成果”。
  2. 生成“标书结构索引”(只需到章节级别),作为后续引用的定位锚点。
  1. Quickly read through the proposal in chapter order, extracting "project topic/scientific hypothesis/objectives/technical route/innovation points/research foundation/team and conditions/expected outcomes".
  2. Generate a "proposal structure index" (only to chapter level) as a positioning anchor for subsequent references.

阶段三:并行多组评审(优先)或单组模式(退化)

Phase 3: Parallel Multi-Group Review (Priority) or Single-Group Mode (Degradation)

前置判断

Pre-Judgment

  1. 计算
    effective_panel_count
    :优先用户输入
    panel_count
    ,否则使用
    parallel_review.default_panel_count
  2. effective_panel_count
    限制在
    [1, parallel_review.max_panel_count]
  3. 若任一条件成立,直接走单组模式:
    • parallel_review.enabled == false
    • effective_panel_count == 1
    • 找不到
      parallel-vibe
      脚本
  1. Calculate
    effective_panel_count
    : prioritize user input
    panel_count
    , otherwise use
    parallel_review.default_panel_count
    .
  2. Limit
    effective_panel_count
    to
    [1, parallel_review.max_panel_count]
    .
  3. Directly use single-group mode if any of the following conditions are met:
    • parallel_review.enabled == false
    • effective_panel_count == 1
    • Cannot find the
      parallel-vibe
      script

parallel-vibe 脚本路径发现顺序

parallel-vibe Script Path Discovery Order

按顺序查找以下路径,命中即使用:
  1. ~/.claude/skills/parallel-vibe/scripts/parallel_vibe.py
  2. ~/.codex/skills/parallel-vibe/scripts/parallel_vibe.py
  3. <当前仓库>/parallel-vibe/scripts/parallel_vibe.py
若全部不存在:记录警告并退化为串行模式,不中断整体评审。
Search the following paths in order, use the first one found:
  1. ~/.claude/skills/parallel-vibe/scripts/parallel_vibe.py
  2. ~/.codex/skills/parallel-vibe/scripts/parallel_vibe.py
  3. <current_repository>/parallel-vibe/scripts/parallel_vibe.py
If none are found: record a warning and degrade to serial mode without interrupting the overall review.

并行模式步骤

Parallel Mode Steps

  1. 准备中间目录结构(强烈建议)
bash
mkdir -p <proposal_root>/<intermediate_dir>/{logs/plans,snapshot}
  • 其中
    <intermediate_dir>
    对应
    config.yaml:output_settings.intermediate_dir
    (默认
    .nsfc-reviewers
    )。
  1. 构造 Master Prompt(由宿主 AI 完成):
    • references/expert_*.md
      读取 5 位专家画像(对应
      config.yaml:parallel_review.reviewer_personas[*].prompt_file
    • references/master_prompt_template.md
      读取 master prompt 模板
    • 注入上下文:阶段二产出的“标书结构索引 + 关键信息摘要”
    • 注入统一质量门槛:问题分级、证据锚点、输出格式
    • 注入独立性约束:每位专家只做独立判断,不假设其他专家意见
    • 注入输出约束:将评审组输出写入当前 thread 的
      workspace/
      根目录下的
      config.yaml:parallel_review.panel_output_filename
    • 替换模板占位符:将
      {panel_output_filename}
      替换为
      config.yaml:parallel_review.panel_output_filename
    • 将 master prompt 落盘到一个临时文件(推荐放在
      <proposal_root>/<intermediate_dir>/logs/
      下,便于追溯且不污染根目录),记为
      <master_prompt_path>
  2. 生成 parallel-vibe 计划文件(强制)
    • 原因:避免在 CLI 里转义超长 prompt;并避免
      parallel-vibe --prompt
      的自动拆分逻辑(本技能需要“同一 master prompt 在 N 个独立工作区重复执行”)。
    • 优先使用本技能自带脚本生成计划文件:
bash
python3 <nsfc_reviewers_path>/scripts/build_parallel_vibe_plan.py \
  --panel-count <effective_panel_count> \
  --master-prompt-file <master_prompt_path> \
  --out <plan_json_path>
  • 若无法使用脚本,则手工生成
    plan.json
    (最小结构):
json
{
  "plan_version": 1,
  "prompt": "nsfc-reviewers parallel panels",
  "threads": [
    {
      "thread_id": "001",
      "title": "Panel G001",
      "runner": { "type": "<config:parallel_review.runner>", "profile": "<config:parallel_review.runner_profile>", "model": "", "args": [] },
      "prompt": "<master_prompt>"
    }
  ],
  "synthesis": { "enabled": false }
}
  1. 调用 parallel-vibe(基于 plan-file)
  • 推荐先在
    <proposal_root>/<intermediate_dir>/snapshot/
    下准备一份标书快照(如
    proposal_snapshot/
    ),并将其作为
    --src-dir
    ,以避免把
    .nsfc-reviewers/
    panels/
    等中间/交付目录再次复制进各 thread 的
    workspace/
  • 最小做法:将“待评审标书目录”复制到
    snapshot/
    下,并排除中间/交付目录(具体命令依平台工具而定;原则是:快照目录应只包含标书源文件)。
bash
python3 <parallel_vibe_path> \
  --plan-file <plan_json_path> \
  --src-dir <proposal_snapshot_root_or_proposal_root> \
  --out-dir <proposal_root>/<intermediate_dir> \
  --timeout-seconds <config:parallel_review.timeout_seconds> \
  --no-synthesize
  1. 收集并校验各组输出
    • 从每个 thread 的
      workspace/
      中读取
      panel_output_filename
    • 典型路径(运行结束但尚未整理输出时):
      <proposal_root>/<intermediate_dir>/.parallel_vibe/<project_id>/<thread_id>/workspace/<panel_output_filename>
    • 若你已执行“阶段五:输出整理”,则 parallel-vibe 环境通常位于:
      <proposal_root>/<intermediate_dir>/parallel-vibe/<project_id>/...
    • parallel-vibe
      会在 stdout 打印本次
      project_root
      路径;优先以该路径为准
    • 若个别 thread 缺失输出,记录缺失并继续聚合已完成结果(fail-soft)
    • 建议将每组最终评审报告复制/整理为最终交付文件:
      <proposal_root>/{panel_dir}/G{thread_id}.md
  1. Prepare Intermediate Directory Structure (Highly Recommended):
bash
mkdir -p <proposal_root>/<intermediate_dir>/{logs/plans,snapshot}
  • <intermediate_dir>
    corresponds to
    config.yaml:output_settings.intermediate_dir
    (default
    .nsfc-reviewers
    ).
  1. Construct Master Prompt (completed by the host AI):
    • Read 5 expert personas from
      references/expert_*.md
      (corresponding to
      config.yaml:parallel_review.reviewer_personas[*].prompt_file
      )
    • Read the master prompt template from
      references/master_prompt_template.md
    • Inject context: "proposal structure index + key information summary" produced in Phase 2
    • Inject unified quality threshold: issue classification, evidence anchors, output format
    • Inject independence constraints: each expert makes independent judgments without assuming other experts' opinions
    • Inject output constraints: write the panel's output to
      config.yaml:parallel_review.panel_output_filename
      in the root directory of the current thread's
      workspace/
    • Replace template placeholders: replace
      {panel_output_filename}
      with
      config.yaml:parallel_review.panel_output_filename
    • Save the master prompt to a temporary file (recommended to be placed in
      <proposal_root>/<intermediate_dir>/logs/
      for easy tracing without polluting the root directory), recorded as
      <master_prompt_path>
  2. Generate parallel-vibe Plan File (Mandatory):
    • Reason: Avoid escaping ultra-long prompts in the CLI; and avoid the automatic splitting logic of
      parallel-vibe --prompt
      (this skill requires "the same master prompt to be executed repeatedly in N independent workspaces")
    • Prioritize using the built-in script of this skill to generate the plan file:
bash
python3 <nsfc_reviewers_path>/scripts/build_parallel_vibe_plan.py \
  --panel-count <effective_panel_count> \
  --master-prompt-file <master_prompt_path> \
  --out <plan_json_path>
  • If the script cannot be used, manually generate
    plan.json
    (minimum structure):
json
{
  "plan_version": 1,
  "prompt": "nsfc-reviewers parallel panels",
  "threads": [
    {
      "thread_id": "001",
      "title": "Panel G001",
      "runner": { "type": "<config:parallel_review.runner>", "profile": "<config:parallel_review.runner_profile>", "model": "", "args": [] },
      "prompt": "<master_prompt>"
    }
  ],
  "synthesis": { "enabled": false }
}
  1. Call parallel-vibe (Based on Plan File):
  • It is recommended to prepare a proposal snapshot (e.g.,
    proposal_snapshot/
    ) in
    <proposal_root>/<intermediate_dir>/snapshot/
    first, and use it as
    --src-dir
    to avoid copying
    .nsfc-reviewers/
    ,
    panels/
    and other intermediate/deliverable directories into the
    workspace/
    of each thread again.
  • Minimum approach: Copy the "proposal directory to be reviewed" to
    snapshot/
    and exclude intermediate/deliverable directories (specific commands depend on platform tools; principle: the snapshot directory should only contain proposal source files).
bash
python3 <parallel_vibe_path> \
  --plan-file <plan_json_path> \
  --src-dir <proposal_snapshot_root_or_proposal_root> \
  --out-dir <proposal_root>/<intermediate_dir> \
  --timeout-seconds <config:parallel_review.timeout_seconds> \
  --no-synthesize
  1. Collect and Verify Panel Outputs:
    • Read
      panel_output_filename
      from the
      workspace/
      of each thread
    • Typical path (after running but before organizing output):
      <proposal_root>/<intermediate_dir>/.parallel_vibe/<project_id>/<thread_id>/workspace/<panel_output_filename>
    • If you have executed "Phase 5: Output Organization", the parallel-vibe environment is usually located at:
      <proposal_root>/<intermediate_dir>/parallel-vibe/<project_id>/...
    • parallel-vibe
      will print the current
      project_root
      path in stdout; prioritize using this path
    • If the output of individual threads is missing, record the missing and continue aggregating completed results (fail-soft)
    • It is recommended to copy/organize the final review report of each panel into final deliverable files:
      <proposal_root>/{panel_dir}/G{thread_id}.md

单组模式步骤(退化)

Single-Group Mode Steps (Degradation)

  1. 读取
    references/expert_*.md
    获取 5 位专家画像(创新/方法/基础/严格/建设性)
  2. 模拟并行流程:让 5 位专家依次完成“独立评审”(不得相互参考)
  3. 执行组内聚合(共识识别/严重度升级/去重合并)
  4. 输出单组评审组报告到
    panel_output_filename
  1. Read
    references/expert_*.md
    to get 5 expert personas (innovation/methodology/foundation/strict/constructive)
  2. Simulate parallel process: let 5 experts complete "independent reviews" in sequence (without referencing each other)
  3. Perform intra-panel aggregation (consensus identification/severity escalation/deduplication and merging)
  4. Output the single-panel review report to
    panel_output_filename

阶段四:聚合、排序与可选结论

Phase 4: Aggregation, Sorting and Optional Conclusion

跨组聚合(并行多组模式)

Cross-Panel Aggregation (Parallel Multi-Group Mode)

  1. references/aggregation_rules.md
    读取跨组聚合规则。
  2. 交叉比对 N 组
    panel_review.md
    ,识别同一问题的不同表述。
  3. 跨组共识门槛:至少
    ceil(N * consensus_threshold)
    组指出 → 跨组共识(阈值见
    config.yaml:parallel_review.aggregation.consensus_threshold
    )。
  4. 严重度二次升级:跨组共识问题 P2→P1→P0(P0 不再升级)。
  5. 合并重复问题,保留最完整的证据锚点与可执行建议。
  6. 独立观点保留并标注来源组(如“来自组 G001”)。
  7. 结果按 P0→P1→P2 输出,并给出最小可行修改序列。
  8. keep_individual_reviews == true
    ,附录保留各组原始评审报告。
  1. Read cross-panel aggregation rules from
    references/aggregation_rules.md
    .
  2. Cross-compare N groups of
    panel_review.md
    to identify different expressions of the same issue.
  3. Cross-panel consensus threshold: pointed out by at least
    ceil(N * consensus_threshold)
    panels → cross-panel consensus (threshold see
    config.yaml:parallel_review.aggregation.consensus_threshold
    ).
  4. Secondary severity escalation: cross-panel consensus issues P2→P1→P0 (P0 no longer escalated).
  5. Merge duplicate issues, retaining the most complete evidence anchors and actionable suggestions.
  6. Retain independent opinions and label their source panel (e.g., "from Panel G001").
  7. Output results in order of P0→P1→P2, and provide a minimal viable modification sequence.
  8. If
    keep_individual_reviews == true
    , append original review reports of each panel in the appendix.

单组汇总

Single-Panel Summary

输出“修改建议汇总”,按 P0→P1→P2 排序,并给出最小可行修改序列。
Output "summary of modification suggestions", sorted by P0→P1→P2, and provide a minimal viable modification sequence.

可选综合结论

Optional Comprehensive Conclusion

仅当用户明确要求时,输出“综合评分/资助建议”(并重申其为改进参考)。
Only output "comprehensive score/funding recommendation" when explicitly requested by the user (and reaffirm that it is for improvement reference).

阶段五:输出整理(强制执行)

Phase 5: Output Organization (Mandatory Execution)

重要性:本阶段是确保输出可追溯的关键步骤,不可跳过。当
config.yaml:output_settings.enforce_output_finalization == true
时,你不得在未完成本阶段的情况下结束评审。
目标:最终交付清晰可见;中间过程统一托管到
config.yaml:output_settings.intermediate_dir
(默认
.nsfc-reviewers/
),避免根目录出现计划/日志/并行环境等杂项。
Importance: This phase is key to ensuring output traceability and cannot be skipped. When
config.yaml:output_settings.enforce_output_finalization == true
, you must not end the review without completing this phase.
Goal: Final deliverables are clearly visible; intermediate processes are uniformly managed in
config.yaml:output_settings.intermediate_dir
(default
.nsfc-reviewers/
) to avoid clutter in the root directory from plans, logs, parallel environments, etc.

前置检查(按顺序执行)

Pre-Check (Execute in Order)

  1. 计算并确认
    effective_panel_count
    (见阶段三)。
  2. 判断本次评审模式:
    • effective_panel_count > 1
      且你实际调用了
      parallel-vibe
      (或发现
      .parallel_vibe/
      运行环境)→ 视为“并行模式”
    • 否则 → “串行模式”(仍必须创建最小中间目录与日志)
  1. Calculate and confirm
    effective_panel_count
    (see Phase 3).
  2. Determine the review mode for this time:
    • If
      effective_panel_count > 1
      and you actually called
      parallel-vibe
      (or found the
      .parallel_vibe/
      runtime environment) → regarded as "parallel mode"
    • Otherwise → "serial mode" (still must create minimal intermediate directories and logs)

推荐做法:使用脚本自动化输出整理(确定性,强烈推荐)

Recommended Approach: Use Script to Automate Output Organization (Deterministic, Highly Recommended)

bash
python3 <nsfc_reviewers_path>/scripts/finalize_output.py \
  --review-path <proposal_root> \
  --panel-count <effective_panel_count> \
  --intermediate-dir <config:output_settings.intermediate_dir> \
  --apply
不加
--apply
为 DRY-RUN:只打印将执行的动作,不会改动文件。
bash
python3 <nsfc_reviewers_path>/scripts/finalize_output.py \
  --review-path <proposal_root> \
  --panel-count <effective_panel_count> \
  --intermediate-dir <config:output_settings.intermediate_dir> \
  --apply
Without
--apply
, it is a DRY-RUN: only print actions to be executed without modifying files.

手动整理(脚本不可用时的 fallback)

Manual Organization (Fallback When Script Is Unavailable)

并行/串行都必须至少创建最小目录结构:
bash
mkdir -p <proposal_root>/<intermediate_dir>/{parallel-vibe,logs/plans,snapshot}
并行模式:将
.parallel_vibe/
项目目录迁移到
<intermediate_dir>/parallel-vibe/
(兼容两种来源位置):
bash
undefined
Both parallel and serial modes must create at least the minimal directory structure:
bash
mkdir -p <proposal_root>/<intermediate_dir>/{parallel-vibe,logs/plans,snapshot}
Parallel mode: Migrate the project directory of
.parallel_vibe/
to
<intermediate_dir>/parallel-vibe/
(compatible with two source locations):
bash
undefined

1) 优先从 <proposal_root>/<intermediate_dir>/.parallel_vibe/ 迁移(parallel-vibe --out-dir 指向 intermediate_dir 时常见)

1) Prioritize migration from <proposal_root>/<intermediate_dir>/.parallel_vibe/ (common when parallel-vibe --out-dir points to intermediate_dir)

if [ -d "<proposal_root>/<intermediate_dir>/.parallel_vibe" ]; then mv "<proposal_root>/<intermediate_dir>/.parallel_vibe/"* "<proposal_root>/<intermediate_dir>/parallel-vibe/" 2>/dev/null || true rmdir "<proposal_root>/<intermediate_dir>/.parallel_vibe" 2>/dev/null || true fi
if [ -d "<proposal_root>/<intermediate_dir>/.parallel_vibe" ]; then mv "<proposal_root>/<intermediate_dir>/.parallel_vibe/"* "<proposal_root>/<intermediate_dir>/parallel-vibe/" 2>/dev/null || true rmdir "<proposal_root>/<intermediate_dir>/.parallel_vibe" 2>/dev/null || true fi

2) 兼容旧实例:从根目录 .parallel_vibe/ 迁移

2) Compatible with old instances: migrate from root directory .parallel_vibe/

if [ -d "<proposal_root>/.parallel_vibe" ]; then mv "<proposal_root>/.parallel_vibe/"* "<proposal_root>/<intermediate_dir>/parallel-vibe/" 2>/dev/null || true rmdir "<proposal_root>/.parallel_vibe" 2>/dev/null || true fi

迁移日志与计划文件(仅在存在时执行):

```bash
mv "<proposal_root>/master_prompt.txt" "<proposal_root>/<intermediate_dir>/logs/" 2>/dev/null || true
mv "<proposal_root>"/plan*.json "<proposal_root>/<intermediate_dir>/logs/plans/" 2>/dev/null || true
mv "<proposal_root>/proposal_snapshot" "<proposal_root>/<intermediate_dir>/snapshot/" 2>/dev/null || true
if [ -d "<proposal_root>/.parallel_vibe" ]; then mv "<proposal_root>/.parallel_vibe/"* "<proposal_root>/<intermediate_dir>/parallel-vibe/" 2>/dev/null || true rmdir "<proposal_root>/.parallel_vibe" 2>/dev/null || true fi

Migrate logs and plan files (execute only if they exist):

```bash
mv "<proposal_root>/master_prompt.txt" "<proposal_root>/<intermediate_dir>/logs/" 2>/dev/null || true
mv "<proposal_root>"/plan*.json "<proposal_root>/<intermediate_dir>/logs/plans/" 2>/dev/null || true
mv "<proposal_root>/proposal_snapshot" "<proposal_root>/<intermediate_dir>/snapshot/" 2>/dev/null || true

验证清单(执行后自检,未通过不得结束)

Verification Checklist (Self-Check After Execution, Cannot End If Not Passed)

  • <proposal_root>/<intermediate_dir>/
    已创建,且至少包含
    logs/
    logs/plans/
  • 若为并行模式:
    <proposal_root>/<intermediate_dir>/parallel-vibe/
    下可看到
    <project_id>/...
    运行环境
  • master_prompt.txt
    (或其副本)可在
    <proposal_root>/<intermediate_dir>/logs/
    中找到
  • 最终交付仍位于根目录:
    {default_filename}
    {panel_dir}/G*.md
    (无关中间文件不应散落在根目录)
  • <proposal_root>/<intermediate_dir>/
    has been created, and contains at least
    logs/
    and
    logs/plans/
  • If in parallel mode:
    <proposal_root>/<intermediate_dir>/parallel-vibe/
    contains the
    <project_id>/...
    runtime environment
  • master_prompt.txt
    (or its copy) can be found in
    <proposal_root>/<intermediate_dir>/logs/
  • Final deliverables are still in the root directory:
    {default_filename}
    and
    {panel_dir}/G*.md
    (unrelated intermediate files should not be scattered in the root directory)

报告格式(硬门槛)

Report Format (Hard Threshold)

对每条 P0/P1 问题,必须包含至少一个“证据锚点”:
  • 证据锚点
    :文件名 + 章节标题/关键句(可选行号)
  • 现象
    :为什么这是问题(不要空泛)
  • 影响
    :会如何影响评审判断/可行性/说服力
  • 建议
    :可执行的修改方案(优先给“怎么改”和“改到什么程度算够”)
  • 验证
    :改完如何自检(例如“补一张路线图”“补一段对照坐标系”“补一条预实验证据链”)
并行模式建议结构:
markdown
undefined
For each P0/P1 issue, it must include at least one "evidence anchor":
  • Evidence Anchor
    : Filename + chapter title/key sentence (line number optional)
  • Observation
    : Why this is an issue (no vague descriptions)
  • Impact
    : How it will affect review judgment/feasibility/persuasiveness
  • Suggestion
    : Actionable modification plan (prioritize providing "how to modify" and "what level of modification is sufficient")
  • Validation
    : How to self-check after modification (e.g., "add a roadmap", "add a paragraph of coordinate system comparison", "add a chain of pre-experiment evidence")
Recommended structure for parallel mode:
markdown
undefined

国自然标书评审意见(N 组独立专家)

NSFC Proposal Review Opinions (N Groups of Independent Experts)

评审配置

Review Configuration

  • 评审组数:N 组
  • 每组专家:5 位
  • 总专家人次:N×5 人次
  • Number of review panels: N groups
  • Experts per panel: 5
  • Total expert person-times: N×5

跨组共识(多组一致指出)

Cross-Panel Consensus (Pointed Out by Multiple Groups)

P0 级

P0 Level

独立观点(单一组提出)

Independent Opinions (Proposed by Single Group)

来自 组 G001

From Panel G001

修改建议汇总

Summary of Modification Suggestions

附录:各组原始评审报告(可选)

Appendix: Original Review Reports of Each Panel (Optional)

undefined
undefined

使用示例

Usage Example

用户输入:
text
请评审 /path/to/nsfc_proposal 这个国自然标书,并把意见保存到 /path/to/output.md
User input:
text
Please review the NSFC proposal at /path/to/nsfc_proposal and save the opinions to /path/to/output.md

配置参数

Configuration Parameters

详见
config.yaml
  • review_dimensions
    :评审维度配置(权重/要点/常见问题)
  • severity_levels
    :问题严重程度定义
  • review_grades
    :评审等级与建议(可选输出)
  • proposal_files
    :标书文件识别规则
  • output_settings
    :输出设置(默认文件名/面板目录/中间目录/章节开关;以及输出整理校验:
    enforce_output_finalization
    /
    warn_missing_intermediate
    /
    validation_level
  • parallel_review
    :并行多组评审配置(开关/组数/专家画像引用/跨组聚合策略)
See
config.yaml
for details:
  • review_dimensions
    : Review dimension configuration (weights/key points/common issues)
  • severity_levels
    : Definition of issue severity levels
  • review_grades
    : Review grades and suggestions (optional output)
  • proposal_files
    : Proposal file identification rules
  • output_settings
    : Output settings (default filename/panel directory/intermediate directory/chapter switches; and output organization verification:
    enforce_output_finalization
    /
    warn_missing_intermediate
    /
    validation_level
    )
  • parallel_review
    : Parallel multi-group review configuration (switch/number of panels/expert persona references/cross-panel aggregation strategy)