nsfc-reviewers
npx skills add https://github.com/huangwb8/chineseresearchlatex --skill nsfc-reviewers
Agent 安装分布
Skill 文档
NSFC æ 书ä¸å®¶è¯å®¡æ¨¡æå¨
éè¦å£°æï¼é宿¹ï¼
- æ¬æè½è¾åºä» ç¨äºå使¹è¿ä¸èªæ¥ï¼ä¸ä»£è¡¨ä»»ä½å®æ¹è¯å®¡å£å¾ï¼ä¹ä¸ææèµå©ç»è®ºææ¿è¯ºã
- âè¯å®¡ç级/èµå©å»ºè®®âä» ä½ä¸ºä¼å çº§ä¸æ¹è¿æ¹åçåèï¼ç¨æ·å¦æªæç¡®è¦æ±ï¼å¯ä¸è¾åºè¯¥é¨åã
æè½ä¾èµ
- å¹¶è¡å¤ç»è¯å®¡æ¨¡å¼ä¾èµ
parallel-vibeæè½ã - è¥
parallel-vibeä¸å¯ç¨ã被ç¦ç¨ï¼æpanel_count == 1ï¼èªå¨éå为åç»æ¨¡å¼ï¼ä»å å« 5 ä½ä¸å®¶ï¼ã - ä¸å®¶ prompt 模æ¿ä½äº
references/expert_*.mdï¼èåè§åä½äºreferences/aggregation_rules.mdã
å®å ¨ä¸éç§ï¼ç¡¬è§åï¼
- é»è®¤å°æ 书å 容è§ä¸ºææä¿¡æ¯ï¼ä» å¤çç¨æ·æç¡®æä¾çæä»¶/ç®å½ï¼ä¸æ èªæ©å±æ«æèå´ã
- é¤éç¨æ·æç¡®è¦æ±ä¸ç¡®è®¤é£é©ï¼ä¸èç½ã䏿åæå¤§æ®µå¤åãä¸å¨è¾åºä¸å¤è¿°ä¸å¿ è¦ç个人信æ¯/åä½ä¿¡æ¯ã
- åªåâææ¬è¯»åä¸è¯å®¡âï¼é»è®¤ä¸æ§è¡ä»»ä½ç¼è¯/è¿è¡ï¼ä¾å¦ä¸è¿è¡ LaTeX ç¼è¯ï¼ä¸æ§è¡èæ¬ï¼ã
- è¾åºè¥éå享ï¼ä¼å æä¾âé®é¢æè¦ + 坿§è¡ä¿®æ¹å»ºè®®âï¼å¿ è¦å¼ç¨åææ¶åªå¼ç¨æçå¿ è¦ç段ã
è¾å ¥
ç¨æ·è³å°æä¾å ¶ä¸ï¼
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
- é»è®¤å¼è§
è¾åº
- é»è®¤è¾åºæä»¶åè§
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/ï¼ï¼é¿å æ ¹ç®å½åºç°å¤§é计å/æ¥å¿/å¹¶è¡è¿è¡ç¯å¢ã
工使µï¼æ§è¡è§èï¼
读åé ç½®ï¼å¼ºå¶ï¼
å¼å§åå
è¯»åæ¬æè½ç®å½ä¸ç config.yamlï¼å¹¶å°ä»¥ä¸é
ç½®ä½ä¸ºæ§è¡æ¶çåä¸çç¸æ¥æºï¼
review_dimensionsï¼è¯å®¡ç»´åº¦ãæéãè¦ç¹ä¸å¸¸è§é®é¢ï¼ä½ä¸ºæ£æ¥æ¸ åï¼severity_levelsï¼P0/P1/P2 å级å£å¾ï¼ç¨äºå级ï¼review_gradesï¼ç级ä¸å»ºè®®ï¼ä» å¨ç¨æ·éè¦æ¶è¾åºï¼proposal_files.patterns/excludeï¼æ 书æä»¶è¯å«è§åoutput_settingsï¼è¾åºæä»¶åã颿¿ç®å½ãä¸é´è¿ç¨éèçç¥ä¸ç« èå¼å ³parallel_reviewï¼å¹¶è¡è¯å®¡å¼å ³ãä¸å®¶ç»åãèåçç¥
é¶æ®µä¸ï¼åç½®æ£æ¥ï¼Fail Fastï¼
- æ ¡éªè¾å
¥è·¯å¾åå¨ä¸å¯è¯»ï¼è¥æ¯ç®å½ï¼å
æ
proposal_filesè§åçéåºå¾ 读æä»¶å表ã - è¥
.texæä»¶æ°é为 0ï¼ç´æ¥æ¥é并请æ±ç¨æ·æä¾æ£ç¡®è·¯å¾/æä»¶ã - è¥æä»¶æ°éå¼å¸¸å¤/ç®å½ææ¾å å«å¤§éæ å ³æä»¶ï¼å è¯·ç¨æ·ç¡®è®¤è¯å®¡èå´ï¼é¿å 读éç®å½/读太å¤ï¼ã
æ¨èçç¡®å®æ§åæ³ï¼é¿å âæ¼æ«åç®å½ / 误æ«ä¸é´ç®å½ / æ«å°äº¤ä»äº§ç©âï¼ï¼
# ååºå°è¢«çº³å
¥è¯å®¡ç .tex æä»¶ï¼é彿«æï¼å¹¶èªå¨è·³è¿ panels/ã.nsfc-reviewers/ã.parallel_vibe/ï¼
python3 <nsfc_reviewers_path>/scripts/list_proposal_files.py --proposal-path <proposal_root>
# å¯éï¼é嶿大æä»¶æ°ï¼è¶
ééåºç =3ï¼
python3 <nsfc_reviewers_path>/scripts/list_proposal_files.py --proposal-path <proposal_root> --max-files 200
é¶æ®µäºï¼é读ä¸ç»æåçè§£
- æç« è顺åºå¿«ééè¯»ï¼æåâ项ç®ä¸»é¢/ç§å¦é®é¢/å说/ç®æ /ææ¯è·¯çº¿/åæ°ç¹/ç ç©¶åºç¡/å¢é䏿¡ä»¶/颿ææâã
- çæâæ ä¹¦ç»æç´¢å¼âï¼åªéå°ç« è级å«ï¼ï¼ä½ä¸ºåç»å¼ç¨çå®ä½éç¹ã
é¶æ®µä¸ï¼å¹¶è¡å¤ç»è¯å®¡ï¼ä¼å ï¼æåç»æ¨¡å¼ï¼éåï¼
åç½®å¤æ
- 计ç®
effective_panel_countï¼ä¼å ç¨æ·è¾å ¥panel_countï¼å¦å使ç¨parallel_review.default_panel_countã - å°
effective_panel_countéå¶å¨[1, parallel_review.max_panel_count]ã - è¥ä»»ä¸æ¡ä»¶æç«ï¼ç´æ¥èµ°åç»æ¨¡å¼ï¼
parallel_review.enabled == falseeffective_panel_count == 1- æ¾ä¸å°
parallel-vibeèæ¬
parallel-vibe èæ¬è·¯å¾åç°é¡ºåº
æé¡ºåºæ¥æ¾ä»¥ä¸è·¯å¾ï¼å½ä¸å³ä½¿ç¨ï¼
~/.claude/skills/parallel-vibe/scripts/parallel_vibe.py~/.codex/skills/parallel-vibe/scripts/parallel_vibe.py<å½åä»åº>/parallel-vibe/scripts/parallel_vibe.py
è¥å ¨é¨ä¸åå¨ï¼è®°å½è¦åå¹¶éåä¸ºä¸²è¡æ¨¡å¼ï¼ä¸ä¸ææ´ä½è¯å®¡ã
å¹¶è¡æ¨¡å¼æ¥éª¤
- åå¤ä¸é´ç®å½ç»æï¼å¼ºç建议ï¼ï¼
mkdir -p <proposal_root>/<intermediate_dir>/{logs/plans,snapshot}
- å
¶ä¸
<intermediate_dir>对åºconfig.yaml:output_settings.intermediate_dirï¼é»è®¤.nsfc-reviewersï¼ã
- æé 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>
- ä»
- çæ parallel-vibe 计åæä»¶ï¼å¼ºå¶ï¼ï¼
- åå ï¼é¿å
å¨ CLI é转ä¹è¶
é¿ promptï¼å¹¶é¿å
parallel-vibe --promptçèªå¨æåé»è¾ï¼æ¬æè½éè¦âåä¸ master prompt å¨ N 个ç¬ç«å·¥ä½åºé夿§è¡âï¼ã - ä¼å ä½¿ç¨æ¬æè½èªå¸¦èæ¬çæè®¡åæä»¶ï¼
- åå ï¼é¿å
å¨ CLI é转ä¹è¶
é¿ promptï¼å¹¶é¿å
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ï¼æå°ç»æï¼ï¼
{
"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 }
}
- è°ç¨ parallel-vibeï¼åºäº plan-fileï¼ï¼
- æ¨èå
å¨
<proposal_root>/<intermediate_dir>/snapshot/ä¸åå¤ä¸ä»½æ ä¹¦å¿«ç §ï¼å¦proposal_snapshot/ï¼ï¼å¹¶å°å ¶ä½ä¸º--src-dirï¼ä»¥é¿å æ.nsfc-reviewers/ãpanels/çä¸é´/交ä»ç®å½å次å¤å¶è¿å thread çworkspace/ã - æå°åæ³ï¼å°âå¾
è¯å®¡æ 书ç®å½âå¤å¶å°
snapshot/ä¸ï¼å¹¶æé¤ä¸é´/交ä»ç®å½ï¼å ·ä½å½ä»¤ä¾å¹³å°å·¥å ·èå®ï¼å忝ï¼å¿«ç §ç®å½åºåªå 嫿 ä¹¦æºæä»¶ï¼ã
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
- æ¶éå¹¶æ ¡éªåç»è¾åºï¼
- 仿¯ä¸ª 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
- 仿¯ä¸ª thread ç
åç»æ¨¡å¼æ¥éª¤ï¼éåï¼
- 读å
references/expert_*.mdè·å 5 ä½ä¸å®¶ç»åï¼åæ°/æ¹æ³/åºç¡/ä¸¥æ ¼/建设æ§ï¼ - 模æå¹¶è¡æµç¨ï¼è®© 5 ä½ä¸å®¶ä¾æ¬¡å®æâç¬ç«è¯å®¡âï¼ä¸å¾ç¸äºåèï¼
- æ§è¡ç»å èåï¼å ±è¯è¯å«/严é度å级/å»éåå¹¶ï¼
- è¾åºåç»è¯å®¡ç»æ¥åå°
panel_output_filename
é¶æ®µåï¼èåãæåºä¸å¯éç»è®º
è·¨ç»èåï¼å¹¶è¡å¤ç»æ¨¡å¼ï¼
- ä»
references/aggregation_rules.md读åè·¨ç»èåè§åã - äº¤åæ¯å¯¹ N ç»
panel_review.mdï¼è¯å«åä¸é®é¢çä¸å表述ã - è·¨ç»å
±è¯é¨æ§ï¼è³å°
ceil(N * consensus_threshold)ç»æåº â è·¨ç»å ±è¯ï¼éå¼è§config.yaml:parallel_review.aggregation.consensus_thresholdï¼ã - 严éåº¦äºæ¬¡å级ï¼è·¨ç»å ±è¯é®é¢ P2âP1âP0ï¼P0 ä¸åå级ï¼ã
- åå¹¶éå¤é®é¢ï¼ä¿çæå®æ´çè¯æ®éç¹ä¸å¯æ§è¡å»ºè®®ã
- ç¬ç«è§ç¹ä¿çå¹¶æ æ³¨æ¥æºç»ï¼å¦âæ¥èªç» G001âï¼ã
- ç»ææ P0âP1âP2 è¾åºï¼å¹¶ç»åºæå°å¯è¡ä¿®æ¹åºåã
- è¥
keep_individual_reviews == trueï¼éå½ä¿çåç»åå§è¯å®¡æ¥åã
åç»æ±æ»
è¾åºâä¿®æ¹å»ºè®®æ±æ»âï¼æ P0âP1âP2 æåºï¼å¹¶ç»åºæå°å¯è¡ä¿®æ¹åºåã
å¯é综åç»è®º
ä» å½ç¨æ·æç¡®è¦æ±æ¶ï¼è¾åºâ综åè¯å/èµå©å»ºè®®âï¼å¹¶éç³å ¶ä¸ºæ¹è¿åèï¼ã
é¶æ®µäºï¼è¾åºæ´çï¼å¼ºå¶æ§è¡ï¼
éè¦æ§ï¼æ¬é¶æ®µæ¯ç¡®ä¿è¾åºå¯è¿½æº¯çå
³é®æ¥éª¤ï¼ä¸å¯è·³è¿ãå½ config.yaml:output_settings.enforce_output_finalization == true æ¶ï¼ä½ ä¸å¾å¨æªå®ææ¬é¶æ®µçæ
åµä¸ç»æè¯å®¡ã
ç®æ ï¼æç»äº¤ä»æ¸
æ°å¯è§ï¼ä¸é´è¿ç¨ç»ä¸æç®¡å° config.yaml:output_settings.intermediate_dirï¼é»è®¤ .nsfc-reviewers/ï¼ï¼é¿å
æ ¹ç®å½åºç°è®¡å/æ¥å¿/å¹¶è¡ç¯å¢çæé¡¹ã
åç½®æ£æ¥ï¼æé¡ºåºæ§è¡ï¼
- 计ç®å¹¶ç¡®è®¤
effective_panel_countï¼è§é¶æ®µä¸ï¼ã - å¤ææ¬æ¬¡è¯å®¡æ¨¡å¼ï¼
- è¥
effective_panel_count > 1ä¸ä½ å®é è°ç¨äºparallel-vibeï¼æåç°.parallel_vibe/è¿è¡ç¯å¢ï¼â è§ä¸ºâå¹¶è¡æ¨¡å¼â - å¦å â âä¸²è¡æ¨¡å¼âï¼ä»å¿ é¡»å建æå°ä¸é´ç®å½ä¸æ¥å¿ï¼
- è¥
æ¨èåæ³ï¼ä½¿ç¨èæ¬èªå¨åè¾åºæ´çï¼ç¡®å®æ§ï¼å¼ºçæ¨èï¼
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ï¼åªæå°å°æ§è¡çå¨ä½ï¼ä¸ä¼æ¹å¨æä»¶ã
æå¨æ´çï¼èæ¬ä¸å¯ç¨æ¶ç fallbackï¼
å¹¶è¡/串è¡é½å¿ é¡»è³å°å建æå°ç®å½ç»æï¼
mkdir -p <proposal_root>/<intermediate_dir>/{parallel-vibe,logs/plans,snapshot}
å¹¶è¡æ¨¡å¼ï¼å° .parallel_vibe/ ç 项ç®ç®å½è¿ç§»å° <intermediate_dir>/parallel-vibe/ï¼å
¼å®¹ä¸¤ç§æ¥æºä½ç½®ï¼ï¼
# 1) ä¼å
ä» <proposal_root>/<intermediate_dir>/.parallel_vibe/ è¿ç§»ï¼parallel-vibe --out-dir æå 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
# 2) å
¼å®¹æ§å®ä¾ï¼ä»æ ¹ç®å½ .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
è¿ç§»æ¥å¿ä¸è®¡åæä»¶ï¼ä» å¨å卿¶æ§è¡ï¼ï¼
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
éªè¯æ¸ åï¼æ§è¡åèªæ£ï¼æªéè¿ä¸å¾ç»æï¼
-
<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ï¼æ å ³ä¸é´æä»¶ä¸åºæ£è½å¨æ ¹ç®å½ï¼
æ¥åæ ¼å¼ï¼ç¡¬é¨æ§ï¼
å¯¹æ¯æ¡ P0/P1 é®é¢ï¼å¿ é¡»å å«è³å°ä¸ä¸ªâè¯æ®éç¹âï¼
è¯æ®éç¹ï¼æä»¶å + ç« èæ é¢/å ³é®å¥ï¼å¯éè¡å·ï¼ç°è±¡ï¼ä¸ºä»ä¹è¿æ¯é®é¢ï¼ä¸è¦ç©ºæ³ï¼å½±åï¼ä¼å¦ä½å½±åè¯å®¡å¤æ/å¯è¡æ§/说æå建议ï¼å¯æ§è¡çä¿®æ¹æ¹æ¡ï¼ä¼å ç»âæä¹æ¹âåâæ¹å°ä»ä¹ç¨åº¦ç®å¤âï¼éªè¯ï¼æ¹å®å¦ä½èªæ£ï¼ä¾å¦âè¡¥ä¸å¼ 路线å¾ââè¡¥ä¸æ®µå¯¹ç §åæ ç³»ââè¡¥ä¸æ¡é¢å®éªè¯æ®é¾âï¼
å¹¶è¡æ¨¡å¼å»ºè®®ç»æï¼
# å½èªç¶æ 书è¯å®¡æè§ï¼N ç»ç¬ç«ä¸å®¶ï¼
## è¯å®¡é
ç½®
- è¯å®¡ç»æ°ï¼N ç»
- æ¯ç»ä¸å®¶ï¼5 ä½
- æ»ä¸å®¶äººæ¬¡ï¼NÃ5 人次
## è·¨ç»å
±è¯ï¼å¤ç»ä¸è´æåºï¼
### P0 级
## ç¬ç«è§ç¹ï¼åä¸ç»æåºï¼
### æ¥èª ç» G001
## ä¿®æ¹å»ºè®®æ±æ»
## éå½ï¼åç»åå§è¯å®¡æ¥åï¼å¯éï¼
使ç¨ç¤ºä¾
ç¨æ·è¾å ¥ï¼
请è¯å®¡ /path/to/nsfc_proposal è¿ä¸ªå½èªç¶æ 书ï¼å¹¶ææè§ä¿åå° /path/to/output.md
é ç½®åæ°
è¯¦è§ config.yamlï¼
review_dimensionsï¼è¯å®¡ç»´åº¦é ç½®ï¼æé/è¦ç¹/常è§é®é¢ï¼severity_levelsï¼é®é¢ä¸¥éç¨åº¦å®ä¹review_gradesï¼è¯å®¡ç级ä¸å»ºè®®ï¼å¯éè¾åºï¼proposal_filesï¼æ 书æä»¶è¯å«è§åoutput_settingsï¼è¾åºè®¾ç½®ï¼é»è®¤æä»¶å/颿¿ç®å½/ä¸é´ç®å½/ç« èå¼å ³ï¼ä»¥åè¾åºæ´çæ ¡éªï¼enforce_output_finalization/warn_missing_intermediate/validation_levelï¼parallel_reviewï¼å¹¶è¡å¤ç»è¯å®¡é ç½®ï¼å¼å ³/ç»æ°/ä¸å®¶ç»åå¼ç¨/è·¨ç»èåçç¥ï¼