Use when the user says "处理期刊", "journal scan", or wants to scan, download, and analyze a journal issue end-to-end.
3e:Tcca,
抓取 → 评分 → 下载 → 分析 → 综合。扁平 agent 调度。
/quasi:process-journal {journal-name} [--threshold 7.0]
主进程 (dispatcher)
├─ Step 1: scan-agent (opus, 前台) → scan.md
├─ Step 2: download-agent (sonnet, 前台) → PDFs
├─ Step 3: 主进程读 scan.md → 匹配 PDF → 待分析列表
├─ Step 4: analyze-agent ×N (opus, 后台) → Glob 轮询
└─ Step 5: synthesis-agent (opus, 前台) → synthesis.md
journal_name = parse_args()
threshold = 7.0
# 1. SCAN
if not exists(f"vault/journals/{journal_name}-scan.md"):
Agent("quasi:scan-agent", foreground=True,
prompt=f"journal_name: {journal_name}, journal_full_name: ..., "
f"output_path: vault/journals/{journal_name}-scan.md")
# 2. ACQUIRE
Agent("quasi:download-agent", foreground=True,
prompt=f"scan_path: vault/journals/{journal_name}-scan.md, "
f"threshold: {threshold}, output_dir: /tmp/{journal_name}-pdfs/, "
f"analysis_dir: vault/journals/{journal_name}/")
# 3. 确定待分析列表
scan = Read(f"vault/journals/{journal_name}-scan.md")
pdfs = Glob(f"/tmp/{journal_name}-pdfs/*.pdf")
existing = Glob(f"vault/journals/{journal_name}/*.md")
to_analyze = match_and_filter(scan, pdfs, existing, threshold)
# 4. ANALYZE
for paper in to_analyze:
Agent("quasi:analyze-agent", background=True,
prompt=f"type: B, title: {paper.title}, doi: {paper.doi}, "
f"input: /tmp/{journal_name}-pdfs/{paper.slug}.pdf, "
f"output: vault/journals/{journal_name}/{paper.slug}.md, topic: ...")
while not all_done:
sleep(30)
# 5. SYNTHESIZE
if not exists(f"vault/journals/{journal_name}-synthesis.md"):
Agent("quasi:synthesis-agent", foreground=True,
prompt=f"source_name: ..., analysis_dir: vault/journals/{journal_name}/, "
f"output_path: vault/journals/{journal_name}-synthesis.md, "
f"reading_list_path: vault/journals/{journal_name}-reading-list.md, topic: ...")
| 阶段 | 检查 | 跳过条件 |
|---|---|---|
| Step 1 | {name}-scan.md | 存在则跳过 |
| Step 4 | {name}/{doi}.md | 存在则跳过 |
| Step 5 | {name}-synthesis.md | 存在则跳过 |
vault/journals/{journal-name}-scan.md
vault/journals/{journal-name}-synthesis.md
vault/journals/{journal-name}-reading-list.md
vault/journals/{journal-name}/
└── {slug}.md
/tmp/{journal-name}-pdfs/
└── *.pdf