superlab 0.1.28 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/lib/auto_contracts.cjs +1 -3
  2. package/lib/auto_runner.cjs +0 -1
  3. package/lib/context.cjs +22 -30
  4. package/lib/i18n.cjs +152 -44
  5. package/lib/lab_idea_contract.json +8 -0
  6. package/package-assets/claude/commands/lab-idea.md +1 -1
  7. package/package-assets/claude/commands/lab.md +2 -4
  8. package/package-assets/codex/prompts/lab-idea.md +1 -1
  9. package/package-assets/codex/prompts/lab.md +2 -4
  10. package/package-assets/shared/lab/.managed/scripts/validate_idea_artifact.py +208 -1
  11. package/package-assets/shared/lab/.managed/templates/idea-source-log.md +37 -0
  12. package/package-assets/shared/lab/.managed/templates/idea.md +37 -1
  13. package/package-assets/shared/lab/context/auto-mode.md +2 -2
  14. package/package-assets/shared/lab/context/session-brief.md +3 -14
  15. package/package-assets/shared/lab/context/state.md +2 -0
  16. package/package-assets/shared/lab/system/core.md +4 -3
  17. package/package-assets/shared/skills/lab/SKILL.md +19 -11
  18. package/package-assets/shared/skills/lab/references/workflow.md +14 -0
  19. package/package-assets/shared/skills/lab/stages/auto.md +6 -3
  20. package/package-assets/shared/skills/lab/stages/data.md +1 -1
  21. package/package-assets/shared/skills/lab/stages/framing.md +1 -1
  22. package/package-assets/shared/skills/lab/stages/idea.md +40 -14
  23. package/package-assets/shared/skills/lab/stages/iterate.md +3 -1
  24. package/package-assets/shared/skills/lab/stages/report.md +2 -1
  25. package/package-assets/shared/skills/lab/stages/review.md +3 -1
  26. package/package-assets/shared/skills/lab/stages/run.md +4 -1
  27. package/package-assets/shared/skills/lab/stages/spec.md +2 -1
  28. package/package-assets/shared/skills/lab/stages/write.md +1 -1
  29. package/package.json +1 -1
@@ -33,7 +33,6 @@ const FROZEN_CORE_ALIASES = {
33
33
  };
34
34
  const REVIEW_CONTEXT_FILES = [
35
35
  path.join(".lab", "context", "decisions.md"),
36
- path.join(".lab", "context", "state.md"),
37
36
  path.join(".lab", "context", "workflow-state.md"),
38
37
  path.join(".lab", "context", "open-questions.md"),
39
38
  path.join(".lab", "context", "evidence-index.md"),
@@ -41,7 +40,6 @@ const REVIEW_CONTEXT_FILES = [
41
40
  const PROMOTION_CANONICAL_FILES = [
42
41
  path.join(".lab", "context", "data-decisions.md"),
43
42
  path.join(".lab", "context", "decisions.md"),
44
- path.join(".lab", "context", "state.md"),
45
43
  path.join(".lab", "context", "workflow-state.md"),
46
44
  ];
47
45
 
@@ -320,7 +318,7 @@ function verifyStageContract({ stage, snapshot }) {
320
318
  if (stage === "review") {
321
319
  if (changedPaths.length === 0) {
322
320
  throw new Error(
323
- "review stage did not update canonical review context (.lab/context/decisions.md, state.md, workflow-state.md, open-questions.md, or evidence-index.md)"
321
+ "review stage did not update canonical review context (.lab/context/decisions.md, workflow-state.md, open-questions.md, or evidence-index.md)"
324
322
  );
325
323
  }
326
324
  return;
@@ -432,7 +432,6 @@ async function startAutoMode({ targetDir, now = new Date() }) {
432
432
  const promotionSnapshot = snapshotPaths(targetDir, [
433
433
  ".lab/context/data-decisions.md",
434
434
  ".lab/context/decisions.md",
435
- ".lab/context/state.md",
436
435
  ".lab/context/workflow-state.md",
437
436
  ]);
438
437
  await runCommandWithPolling({
package/lib/context.cjs CHANGED
@@ -969,6 +969,8 @@ function renderResearchState(lang, data) {
969
969
  if (lang === "zh") {
970
970
  return `# 研究状态
971
971
 
972
+ > 本文件是派生的长期快照。请更新 \`mission.md\`、\`decisions.md\`、\`data-decisions.md\`、\`evidence-index.md\`、\`eval-protocol.md\` 和 \`open-questions.md\` 这些 canonical context 文件,然后再刷新派生上下文,而不是直接手改本文件。
973
+
972
974
  ## 已批准方向
973
975
 
974
976
  - One-sentence problem: ${data.problem || "待补充"}
@@ -997,6 +999,8 @@ function renderResearchState(lang, data) {
997
999
 
998
1000
  return `# Research State
999
1001
 
1002
+ > This file is a derived durable snapshot. Update canonical context files such as \`mission.md\`, \`decisions.md\`, \`data-decisions.md\`, \`evidence-index.md\`, \`eval-protocol.md\`, and \`open-questions.md\`, then refresh derived context instead of editing this file directly.
1003
+
1000
1004
  ## Approved Direction
1001
1005
 
1002
1006
  - One-sentence problem: ${data.problem || "TBD"}
@@ -1153,6 +1157,11 @@ function renderSummary(lang, data) {
1153
1157
 
1154
1158
  function renderNextAction(lang, data) {
1155
1159
  if (lang === "zh") {
1160
+ const followup = data.nextArtifact
1161
+ ? `产出 ${data.nextArtifact}`
1162
+ : data.workflowObjective
1163
+ ? `继续推进:${data.workflowObjective}`
1164
+ : "继续推进当前阶段";
1156
1165
  return `# 下一步动作
1157
1166
 
1158
1167
  ## 当前动作
@@ -1162,7 +1171,7 @@ function renderNextAction(lang, data) {
1162
1171
 
1163
1172
  ## 完成后
1164
1173
 
1165
- - Next action: ${data.successFollowup || "继续推进当前阶段"}
1174
+ - Next action: ${followup}
1166
1175
 
1167
1176
  ## 如果卡住
1168
1177
 
@@ -1175,6 +1184,11 @@ function renderNextAction(lang, data) {
1175
1184
  `;
1176
1185
  }
1177
1186
 
1187
+ const followup = data.nextArtifact
1188
+ ? `Produce ${data.nextArtifact}`
1189
+ : data.workflowObjective
1190
+ ? `Continue: ${data.workflowObjective}`
1191
+ : "Continue the active stage";
1178
1192
  return `# Next Action
1179
1193
 
1180
1194
  ## Immediate Step
@@ -1184,7 +1198,7 @@ function renderNextAction(lang, data) {
1184
1198
 
1185
1199
  ## After Completion
1186
1200
 
1187
- - Next action: ${data.successFollowup || "Continue the active stage"}
1201
+ - Next action: ${followup}
1188
1202
 
1189
1203
  ## If Blocked
1190
1204
 
@@ -1201,28 +1215,17 @@ function renderSessionBrief(lang, data) {
1201
1215
  if (lang === "zh") {
1202
1216
  return `# 会话简报
1203
1217
 
1204
- ## 当前阶段
1218
+ ## 当前焦点
1205
1219
 
1206
1220
  - Stage: ${data.stage || "待补充"}
1207
1221
  - Current objective: ${data.workflowObjective || "待补充"}
1208
1222
  - Immediate next action: ${data.immediateAction || "待补充"}
1209
1223
 
1210
- ## 主线任务
1211
-
1212
- ${data.problem || "待补充"}
1213
-
1214
- ## 当前最优路径
1224
+ ## 任务快照
1215
1225
 
1226
+ - Mission: ${data.problem || "待补充"}
1216
1227
  - Approved direction: ${data.direction || "待补充"}
1217
1228
  - Strongest supported claim: ${data.claim || "待补充"}
1218
- - Auto mode: ${data.autoStatus || "未启用"}
1219
- - Auto objective: ${data.autoObjective || "待补充"}
1220
- - Auto decision: ${data.autoDecision || "待补充"}
1221
- - Collaborator report mode: ${data.reportMode || "待补充"}
1222
- - Canonical context readiness: ${data.reportReadiness || "待补充"}
1223
- - Method name: ${data.methodName || "待补充"}
1224
- - Primary metrics: ${data.evalPrimaryMetrics || "待补充"}
1225
- - Secondary metrics: ${data.evalSecondaryMetrics || "待补充"}
1226
1229
 
1227
1230
  ## 主要风险
1228
1231
 
@@ -1244,28 +1247,17 @@ ${data.problem || "待补充"}
1244
1247
 
1245
1248
  return `# Session Brief
1246
1249
 
1247
- ## Active Stage
1250
+ ## Immediate Focus
1248
1251
 
1249
1252
  - Stage: ${data.stage || "TBD"}
1250
1253
  - Current objective: ${data.workflowObjective || "TBD"}
1251
1254
  - Immediate next action: ${data.immediateAction || "TBD"}
1252
1255
 
1253
- ## Mission
1254
-
1255
- ${data.problem || "TBD"}
1256
-
1257
- ## Best Current Path
1256
+ ## Mission Snapshot
1258
1257
 
1258
+ - Mission: ${data.problem || "TBD"}
1259
1259
  - Approved direction: ${data.direction || "TBD"}
1260
1260
  - Strongest supported claim: ${data.claim || "TBD"}
1261
- - Auto mode: ${data.autoStatus || "inactive"}
1262
- - Auto objective: ${data.autoObjective || "TBD"}
1263
- - Auto decision: ${data.autoDecision || "TBD"}
1264
- - Collaborator report mode: ${data.reportMode || "TBD"}
1265
- - Canonical context readiness: ${data.reportReadiness || "TBD"}
1266
- - Method name: ${data.methodName || "TBD"}
1267
- - Primary metrics: ${data.evalPrimaryMetrics || "TBD"}
1268
- - Secondary metrics: ${data.evalSecondaryMetrics || "TBD"}
1269
1261
 
1270
1262
  ## Main Risk
1271
1263
 
package/lib/i18n.cjs CHANGED
@@ -1,5 +1,6 @@
1
1
  const path = require("node:path");
2
2
  const writeContract = require("./lab_write_contract.json");
3
+ const ideaContract = require("./lab_idea_contract.json");
3
4
 
4
5
  function codexPrompt(description, argumentHint, body) {
5
6
  return `---
@@ -26,7 +27,7 @@ const ZH_CONTENT = {
26
27
  [path.join(".codex", "prompts", "lab-idea.md")]: codexPrompt(
27
28
  "在进入规格前调研并打磨论文或实验想法",
28
29
  "idea 或 research problem",
29
- "使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:idea`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:idea` 阶段。它必须先用白话说明场景、真实问题和为什么重要,再系统梳理现有方法、最接近前作、近期相关论文和评测惯例,默认形成一个约 20 篇来源的文献范围包;如果领域太窄达不到这个数量,必须把理由写清楚。之后再说明当前方法为什么不够、我们的方向大致怎么做、为什么可能更好,并收束出至少三个有意义的点、一个最小实验和进入 `/lab:spec` 前的 approval gate。"
30
+ `使用已安装的 \`lab\` 技能:\`.codex/skills/lab/SKILL.md\`。\n\n立刻针对用户当前给出的参数执行 \`/lab:idea\`,不要只推荐别的 \`/lab\` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n${ideaContract.stage_prompt.codex_zh}`
30
31
  ),
31
32
  [path.join(".codex", "prompts", "lab-framing.md")]: codexPrompt(
32
33
  "在写作前收紧方法名、模块名、论文题目和 contribution framing",
@@ -67,7 +68,7 @@ const ZH_CONTENT = {
67
68
  "lab-idea",
68
69
  "在进入规格前调研并打磨论文或实验想法",
69
70
  "idea 或 research problem",
70
- "使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `idea` 阶段,不要只推荐别的 lab 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 lab workflow 的 `idea` 阶段。它必须先用白话说明场景、真实问题和为什么重要,再系统梳理现有方法、最接近前作、近期相关论文和评测惯例,默认形成一个约 20 篇来源的文献范围包;如果领域太窄达不到这个数量,必须把理由写清楚。之后再说明当前方法为什么不够、我们的方向大致怎么做、为什么可能更好,并收束出至少三个有意义的点、一个最小实验和进入 `spec` 前的 approval gate。"
71
+ `使用已安装的 \`lab\` 技能:\`.claude/skills/lab/SKILL.md\`。\n\n立刻针对用户当前给出的参数执行 \`idea\` 阶段,不要只推荐别的 lab 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n${ideaContract.stage_prompt.claude_zh}`
71
72
  ),
72
73
  [path.join(".claude", "commands", "lab-framing.md")]: claudeCommand(
73
74
  "lab-framing",
@@ -134,7 +135,8 @@ const ZH_SKILL_FILES = {
134
135
 
135
136
  ## 上下文写回
136
137
 
137
- - \`.lab/context/state.md\`
138
+ - \`.lab/context/workflow-state.md\`
139
+ - \`.lab/context/decisions.md\`
138
140
  - \`.lab/context/evidence-index.md\`
139
141
 
140
142
  ## 约束
@@ -142,6 +144,7 @@ const ZH_SKILL_FILES = {
142
144
  - 优先选择能打通全链路的最小实验。
143
145
  - 数据、环境或 metric 接线有问题时要尽快失败。
144
146
  - run 目标必须对齐已批准的评估协议,而不是只跟随聊天里的临时目标。
147
+ - durable 研究结论应写回 \`.lab/context/decisions.md\`、\`.lab/context/evidence-index.md\` 和 \`.lab/context/eval-protocol.md\` 等 canonical context,再刷新派生的 \`state.md\` 快照。
145
148
  - 记录精确启动命令和输出位置。
146
149
  - 持久 run 输出、日志和 checkpoint 写到 \`results_root\`。
147
150
  - 图表和可视化写到 \`figures_root\`。
@@ -194,7 +197,7 @@ const ZH_SKILL_FILES = {
194
197
 
195
198
  ## 上下文写回
196
199
 
197
- - \`.lab/context/state.md\`
200
+ - \`.lab/context/workflow-state.md\`
198
201
  - \`.lab/context/decisions.md\`
199
202
  - \`.lab/context/evidence-index.md\`
200
203
  - \`.lab/context/open-questions.md\`
@@ -231,6 +234,7 @@ const ZH_SKILL_FILES = {
231
234
  - 不要把长期结果堆在 \`.lab/changes/<change-id>/runs\` 里。
232
235
  - 不要修改指标定义、baseline 语义或对比方法实现,除非评估协议已经记录了来源和与原始实现的偏差。
233
236
  - 如果要调整 ladder、样本量或升格 gate,必须继续锚定到带来源的评估协议,而不是靠聊天临时判断。
237
+ - durable findings 和证据边界变化应写回 canonical context,再刷新派生的 \`state.md\` 快照;当前执行进度只写 \`workflow-state.md\`。
234
238
 
235
239
  ## 交互约束
236
240
 
@@ -258,8 +262,10 @@ const ZH_SKILL_FILES = {
258
262
 
259
263
  ## 上下文写回
260
264
 
261
- - \`.lab/context/state.md\`
265
+ - \`.lab/context/workflow-state.md\`
266
+ - \`.lab/context/decisions.md\`
262
267
  - \`.lab/context/open-questions.md\`
268
+ - \`.lab/context/evidence-index.md\`
263
269
 
264
270
  ## 审稿优先级
265
271
 
@@ -322,8 +328,8 @@ const ZH_SKILL_FILES = {
322
328
 
323
329
  - \`.lab/context/mission.md\`
324
330
  - \`.lab/context/eval-protocol.md\`
325
- - \`.lab/context/state.md\`
326
331
  - \`.lab/context/workflow-state.md\`
332
+ - \`.lab/context/decisions.md\`
327
333
  - \`.lab/context/evidence-index.md\`
328
334
 
329
335
  ## 证据规则
@@ -349,6 +355,7 @@ const ZH_SKILL_FILES = {
349
355
  - 报告起草或 rerun 完成后,必须运行 \`.lab/.managed/scripts/validate_collaborator_report.py --report <deliverables_root>/report.md --main-tables <deliverables_root>/main-tables.md\`。如果校验失败,就继续补正文,不能停在“只新增审计痕迹”的状态。
350
356
  - 如果报告依赖了对原始指标或原始实现的偏差,必须明确写出这个偏差。
351
357
  - workflow 工件状态、rerun id 或 LaTeX 骨架状态不能混进“已验证主结果”;这些内容必须单列到 \`<deliverables_root>/artifact-status.md\`。
358
+ - durable report-level conclusions 应写回 \`mission.md\`、\`eval-protocol.md\`、\`decisions.md\` 和 \`evidence-index.md\` 等 canonical context,再刷新派生的 \`state.md\` 快照。
352
359
  - 如果 workflow language 是中文,\`report.md\` 和 \`<deliverables_root>/main-tables.md\` 也应使用中文,除非文件路径、代码标识符或字面指标名必须保持原样。
353
360
  - 解释优先保守,不要写成营销文案。
354
361
  - 要给 \`/lab:write\` 留下清晰 handoff,尤其是 section draft 可以直接引用的证据链接。
@@ -380,7 +387,12 @@ const ZH_SKILL_FILES = {
380
387
  - 为什么我们的想法优于现有方法
381
388
  - 用白话解释我们准备怎么做
382
389
  - 三个一眼就有意义的点
390
+ - 第一轮脑暴:先列 2-4 个候选方向
391
+ - 第一轮文献检索:每个方向补 3-5 篇最接近前作
392
+ - 第二轮脑暴:收敛到 1-2 个幸存方向
393
+ - 第二轮文献检索:把幸存方向扩展成完整文献范围包
383
394
  - 文献范围包,默认目标约 20 篇来源;如果领域太窄不足 20 篇,必须明确解释
395
+ - idea 来源清单:记录两轮检索实际用到的查询、来源分桶和最终来源数
384
396
  - 进入 \`/lab:spec\` 前的 approval gate
385
397
  - 最小实验
386
398
  - 批准后把核心问题、重要性、failure case 和方向写回 canonical mission context
@@ -389,6 +401,11 @@ const ZH_SKILL_FILES = {
389
401
 
390
402
  - 明确区分来源事实与生成假设。
391
403
  - 在谈 novelty 前先做文献范围梳理。默认目标是约 20 篇来源,覆盖最接近前作、近期强相关论文、benchmark 或评测论文、survey 或 taxonomy,以及必要的相邻领域工作。
404
+ - 必须维护单独的 idea 来源清单,把两轮检索真正使用过的查询、来源分桶和最终来源数记下来。
405
+ - 第一轮脑暴只负责打开空间,不负责直接下 novelty 结论。
406
+ - 第一轮文献检索负责快速淘汰撞题或没有缺口的方向。
407
+ - 第二轮脑暴必须明确哪些方向被保留、哪些被否掉、为什么。
408
+ - 第二轮文献检索完成前,不要把方向写成最终 paper fit 或 final recommendation。
392
409
  - 如果真实领域过窄,达不到默认数量,也必须把原因写清楚,而不是静默跳过。
393
410
  - \`idea\` 工件必须跟随仓库的 \`workflow_language\`,不能自己换成别的语言。
394
411
  - 如果关键前提不清楚,一次只追问一个问题。
@@ -414,28 +431,38 @@ const ZH_SKILL_FILES = {
414
431
  4. 现有方法的失败模式
415
432
  5. idea classification、contribution category 和 breakthrough level
416
433
  6. 现有方法与共同假设
417
- 7. 文献范围包
418
- 8. 最接近前作对照
419
- 9. 白话方法草图
420
- 10. 为什么这个方向可能更好
421
- 11. 三个有意义的点
422
- 12. 候选路线与推荐
423
- 13. 数据集、baseline 和指标候选
424
- 14. 可证伪假设
425
- 15. 专家式 critique
426
- 16. 修订后的 proposal
427
- 17. approval gate
428
- 18. 最小实验
434
+ 7. 第一轮脑暴
435
+ 8. 第一轮文献检索
436
+ 9. 文献范围包
437
+ 10. 最接近前作对照
438
+ 11. 第二轮脑暴
439
+ 12. 第二轮文献检索
440
+ 13. 白话方法草图
441
+ 14. 为什么这个方向可能更好
442
+ 15. 三个有意义的点
443
+ 16. 候选路线与推荐
444
+ 17. 数据集、baseline 和指标候选
445
+ 18. 可证伪假设
446
+ 19. 专家式 critique
447
+ 20. 最终推荐
448
+ 21. approval gate
449
+ 22. 最小实验
450
+ 23. 与两轮检索一致的 idea 来源清单
429
451
 
430
452
  ## Writing Standard
431
453
 
432
454
  - 定义要清晰、简洁、明了。
433
455
  - 先解释场景、对象和问题价值,再讨论 novelty。
456
+ - 第一轮脑暴先开方向,不要急着写成最终答案。
457
+ - 第一轮文献检索后再收敛方向,不要跳过中间筛选。
458
+ - 第二轮文献检索前,不要把方向说成已经有 paper fit。
434
459
  - 现有方法对照必须显式写出,不能只说“更创新”。
435
460
  - 不要只说“比现有方法更好”;要说清楚现有方法在做什么、为什么不够、我们的方向大致怎么做。
436
461
  - 不要在没有文献范围包和最接近前作对照的情况下直接下 novelty 判断。
462
+ - 不要在只做了一轮脑暴或一轮文献检索的情况下直接下 final recommendation。
463
+ - 不要把 idea 工件本身当成唯一证据记录;两轮文献检索的查询、来源分桶和最终来源数必须同步记到 \`.lab/writing/idea-source-log.md\`。
437
464
  - 三个 meaningful points 每个都控制在一句直接的话里。
438
- - 在批准前,必须运行 \`.lab/.managed/scripts/validate_idea_artifact.py --idea <idea-artifact> --workflow-config .lab/config/workflow.json\`。
465
+ - 在批准前,必须运行 \`.lab/.managed/scripts/validate_idea_artifact.py --idea <idea-artifact> --source-log .lab/writing/idea-source-log.md --workflow-config .lab/config/workflow.json\`。
439
466
  `,
440
467
  [path.join(".codex", "skills", "lab", "references", "workflow.md")]:
441
468
  `# /lab 工作流参考
@@ -465,6 +492,7 @@ const ZH_SKILL_FILES = {
465
492
  ## 必要工件
466
493
 
467
494
  - 一个基于 \`.lab/.managed/templates/idea.md\` 的已批准 idea 工件
495
+ - 一个位于 \`.lab/writing/idea-source-log.md\`、基于 \`.lab/.managed/templates/idea-source-log.md\` 的来源清单
468
496
  - 一个位于 \`.lab/changes/<change-id>/\` 下的 lab change 目录
469
497
  - 来自 \`scripts/eval_report.py\` 的标准化 JSON 摘要
470
498
  - 位于 \`.lab/iterations/\` 的逐轮报告
@@ -539,6 +567,22 @@ const ZH_SKILL_FILES = {
539
567
  - Shared assumption:
540
568
  - 为什么该假设在这里失效:
541
569
 
570
+ ## 第一轮脑暴
571
+
572
+ - Candidate direction 1:
573
+ - Candidate direction 2:
574
+ - Candidate direction 3:
575
+ - Candidate direction 4:
576
+ - 为什么这些方向值得检查:
577
+
578
+ ## 第一轮文献检索
579
+
580
+ - Direction 1 seed references:
581
+ - Direction 2 seed references:
582
+ - Direction 3 seed references:
583
+ - Direction 4 seed references:
584
+ - 第一轮检索后的初步结论:
585
+
542
586
  ## 文献范围包
543
587
 
544
588
  - 默认目标来源数:
@@ -565,6 +609,21 @@ const ZH_SKILL_FILES = {
565
609
  - 对当前问题的局限:
566
610
  - 和我们方向的差异:
567
611
 
612
+ ## 第二轮脑暴
613
+
614
+ - 幸存方向 1:
615
+ - 幸存方向 2:
616
+ - 被淘汰的方向和原因:
617
+ - 推荐收敛方向:
618
+
619
+ ## 第二轮文献检索
620
+
621
+ - 近期强相关论文:
622
+ - benchmark 或 evaluation 论文:
623
+ - survey 或 taxonomy:
624
+ - 相邻领域论文:
625
+ - 第二轮检索后的最终收敛:
626
+
568
627
  ## 我们哪里不同
569
628
 
570
629
  - Existing methods rely on:
@@ -621,10 +680,54 @@ const ZH_SKILL_FILES = {
621
680
  - 落地前必须先验证什么:
622
681
  - Kill criteria:
623
682
 
683
+ ## 最终推荐
684
+
685
+ - 两轮检索后保留的方向:
686
+ - 为什么它仍值得做论文:
687
+
624
688
  ## Approval Gate
625
689
 
626
690
  - 用户批准的方向:
627
691
  - 进入 \`/lab:spec\` 前还有哪些开放问题:
692
+ `,
693
+ [path.join(".lab", ".managed", "templates", "idea-source-log.md")]:
694
+ `# Idea 来源清单
695
+
696
+ ## 检索意图
697
+
698
+ - 问题 framing:
699
+ - 检索约束:
700
+ - 检索窗口:
701
+
702
+ ## 第一轮检索记录
703
+
704
+ - 候选方向 1 查询:
705
+ - 已找到来源:
706
+ - 候选方向 2 查询:
707
+ - 已找到来源:
708
+ - 候选方向 3 查询:
709
+ - 已找到来源:
710
+ - 候选方向 4 查询:
711
+ - 已找到来源:
712
+ - 第一轮筛除结论:
713
+
714
+ ## 第二轮检索记录
715
+
716
+ - 幸存方向:
717
+ - Final source bundle:
718
+ - Closest prior:
719
+ - Recent strong papers:
720
+ - Benchmark or evaluation papers:
721
+ - Survey or taxonomy papers:
722
+ - Adjacent-field papers:
723
+ - 实际来源数:
724
+
725
+ ## 来源完整性说明
726
+
727
+ - 去重方式:
728
+ - 未直接依赖的弱来源:
729
+ - 为什么最终来源包低于默认目标:
730
+ - 备注:
628
731
  `,
629
732
  [path.join(".lab", ".managed", "templates", "proposal.md")]:
630
733
  `# Proposal
@@ -1257,6 +1360,8 @@ const ZH_SKILL_FILES = {
1257
1360
  [path.join(".lab", "context", "state.md")]:
1258
1361
  `# 研究状态
1259
1362
 
1363
+ > 这是一个派生的持久研究快照。请更新 \`mission.md\`、\`decisions.md\`、\`data-decisions.md\`、\`evidence-index.md\`、\`eval-protocol.md\`、\`open-questions.md\` 等 canonical context,再刷新派生上下文,而不是直接编辑本文件。
1364
+
1260
1365
  ## 已批准方向
1261
1366
 
1262
1367
  - One-sentence problem:
@@ -1398,7 +1503,7 @@ const ZH_SKILL_FILES = {
1398
1503
 
1399
1504
  - Run stage contract: write persistent outputs under \`results_root\`.
1400
1505
  - Iterate stage contract: update persistent outputs under \`results_root\`.
1401
- - Review stage contract: update canonical review context such as \`.lab/context/decisions.md\`、\`state.md\`、\`workflow-state.md\`、\`open-questions.md\` or \`evidence-index.md\`.
1506
+ - Review stage contract: update canonical review context such as \`.lab/context/decisions.md\`、\`workflow-state.md\`、\`open-questions.md\` \`evidence-index.md\`,然后刷新派生视图。
1402
1507
  - Report stage contract: write \`<deliverables_root>/report.md\`、\`<deliverables_root>/main-tables.md\` and \`<deliverables_root>/artifact-status.md\`.
1403
1508
  - Write stage contract: write LaTeX output under \`<deliverables_root>/paper/\`.
1404
1509
 
@@ -1415,7 +1520,7 @@ const ZH_SKILL_FILES = {
1415
1520
 
1416
1521
  - Stop conditions:
1417
1522
  - Escalation conditions:
1418
- - Canonical promotion writeback: update \`.lab/context/data-decisions.md\`、\`.lab/context/decisions.md\`、\`.lab/context/state.md\` and \`.lab/context/workflow-state.md\`.
1523
+ - Canonical promotion writeback: update \`.lab/context/data-decisions.md\`、\`.lab/context/decisions.md\` \`.lab/context/workflow-state.md\`,然后刷新 \`state.md\` 等派生视图。
1419
1524
  `,
1420
1525
  [path.join(".lab", "context", "auto-outcome.md")]:
1421
1526
  `# 自动结果
@@ -1526,13 +1631,24 @@ ZH_CONTENT[path.join(".lab", "system", "core.md")] = `# Lab 系统核心
1526
1631
  - 图表和可视化应写到 \`figures_root\`,不要写进 \`.lab/changes/\`。
1527
1632
  - 最终交付物应写到 \`deliverables_root\`,不要写进 \`.lab/context/\`。
1528
1633
  - change-local 的 \`data/\` 目录只应用来放轻量 manifest 或 batch spec,不要当正式数据集入口。
1529
- - \`.lab/context/state.md\` 保存持久研究状态;\`.lab/context/workflow-state.md\` 保存当前工作流状态。
1634
+ - \`.lab/context/state.md\` 是派生的持久研究快照;\`.lab/context/workflow-state.md\` 保存当前工作流状态。
1530
1635
  - \`.lab/context/summary.md\` 是长期项目摘要;\`.lab/context/session-brief.md\` 是下一次会话启动简报。
1531
1636
  - \`.lab/context/auto-mode.md\` 定义自动模式边界,\`.lab/context/auto-status.md\` 记录自动运行状态,二者都属于项目状态。
1532
1637
  - 如果用户提供了 LaTeX 模板目录,先校验并通过 \`paper_template_root\` 接入,再开始写作。
1533
1638
  - 已接入的模板目录视为用户资产,默认不要改模板文件,除非用户明确要求。
1534
1639
  - 如果没有配置模板,就使用交付目录下的默认 LaTeX scaffold。
1535
1640
 
1641
+ ## 工件职责
1642
+
1643
+ - \`.lab/context/mission.md\` = 规范化问题陈述和已批准方向
1644
+ - \`.lab/context/state.md\` = 派生的持久研究快照与证据边界视图
1645
+ - \`.lab/context/workflow-state.md\` = 当前工作流状态
1646
+ - \`.lab/context/summary.md\` = 派生的长期项目摘要
1647
+ - \`.lab/context/session-brief.md\` = 下一次会话启动简报
1648
+ - \`.lab/context/next-action.md\` = 轻量动作卡片
1649
+ - \`<deliverables_root>/report.md\` = 给协作者或外部评审的研究 memo
1650
+ - \`<deliverables_root>/artifact-status.md\` = 内部工件与流程状态
1651
+
1536
1652
  ## 路由规则
1537
1653
 
1538
1654
  只有 research、experiment、report、paper-writing 任务才进入 \`/lab:*\`。
@@ -1540,7 +1656,8 @@ ZH_CONTENT[path.join(".lab", "system", "core.md")] = `# Lab 系统核心
1540
1656
 
1541
1657
  ## 状态纪律
1542
1658
 
1543
- - 把 \`.lab/context/*\` 当作持久项目状态。
1659
+ - 把 \`mission.md\`、\`decisions.md\`、\`data-decisions.md\`、\`evidence-index.md\`、\`eval-protocol.md\` 和 \`open-questions.md\` 当作 canonical durable context
1660
+ - 把 \`.lab/context/state.md\`、\`summary.md\`、\`session-brief.md\` 和 \`next-action.md\` 当作派生视图。
1544
1661
  - 不要静默覆盖上下文文件。
1545
1662
  - 让来源证据与生成假设保持分离。
1546
1663
  `;
@@ -1607,28 +1724,17 @@ ZH_CONTENT[path.join(".lab", "context", "next-action.md")] = `# 下一步动作
1607
1724
 
1608
1725
  ZH_CONTENT[path.join(".lab", "context", "session-brief.md")] = `# 会话简报
1609
1726
 
1610
- ## 当前阶段
1727
+ ## 当前焦点
1611
1728
 
1612
1729
  - Stage:
1613
1730
  - Current objective:
1614
1731
  - Immediate next action:
1615
1732
 
1616
- ## 主线任务
1617
-
1618
- 一句话描述当前研究主线。
1619
-
1620
- ## 当前最优路径
1733
+ ## 任务快照
1621
1734
 
1735
+ - Mission:
1622
1736
  - 已批准方向:
1623
1737
  - Strongest supported claim:
1624
- - Auto mode:
1625
- - Auto objective:
1626
- - Auto decision:
1627
- - Collaborator report mode:
1628
- - Canonical context readiness:
1629
- - Method name:
1630
- - Primary metrics:
1631
- - Secondary metrics:
1632
1738
 
1633
1739
  ## 主要风险
1634
1740
 
@@ -1702,7 +1808,7 @@ ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "framing.md")] = `# \`
1702
1808
 
1703
1809
  ## 上下文写回
1704
1810
 
1705
- - \`.lab/context/state.md\`
1811
+ - \`.lab/context/workflow-state.md\`
1706
1812
  - \`.lab/context/decisions.md\`
1707
1813
  - \`.lab/context/terminology-lock.md\`
1708
1814
 
@@ -1756,7 +1862,7 @@ ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "write.md")] = `# \`/l
1756
1862
 
1757
1863
  ## 上下文写回
1758
1864
 
1759
- - \`.lab/context/state.md\`
1865
+ - \`.lab/context/workflow-state.md\`
1760
1866
  - \`.lab/context/evidence-index.md\`
1761
1867
 
1762
1868
  ## 小步写作规则
@@ -1897,7 +2003,7 @@ ZH_CONTENT[path.join(".lab", ".managed", "templates", "framing.md")] = `# 论文
1897
2003
  ZH_CONTENT[path.join(".codex", "prompts", "lab.md")] = codexPrompt(
1898
2004
  "查看 /lab 研究工作流总览并选择合适阶段",
1899
2005
  "workflow question 或 stage choice",
1900
- "# `/lab` for Codex\n\n`/lab` 是严格的研究工作流命令族。每次都使用同一套仓库工件和阶段边界。\n\n## 子命令\n\n- `/lab:idea`\n 调研 idea,定义问题与 failure case,归类 contribution breakthrough level,对比现有方法,收束三个一眼就有意义的点,并在实现前保留 approval gate。\n\n- `/lab:data`\n 把已批准的 idea 转成数据集与 benchmark 方案,记录数据集年份、使用过该数据集的论文、下载来源、许可或访问限制,以及 classic-public、recent-strong-public、claim-specific 三类 benchmark 的纳入理由,和 canonical baselines、strong historical baselines、recent strong public methods、closest prior work 四类对比方法的纳入理由。\n\n- `/lab:auto`\n 在不改变 mission、framing 和核心 claims 的前提下,读取 eval-protocol 与 auto-mode 契约并自动编排 `run`、`iterate`、`review`、`report`,必要时扩展数据集、benchmark 和 comparison methods,并在满足升格策略时自动升级 primary package。启动前必须选定 autonomy level、声明 terminal goal,并显式批准契约。\n\n- `/lab:framing`\n 通过审计当前领域与相邻领域的术语,锁定 paper-facing 的方法名、模块名、论文题目和 contribution bullets,并在 section 起草前保留 approval gate。\n\n- `/lab:spec`\n 把已批准的 idea 转成 `.lab/changes/<change-id>/` 下的一个 lab change 目录,并在其中写出 `proposal`、`design`、`spec`、`tasks`。\n\n- `/lab:run`\n 执行最小有意义验证运行,登记 run,并生成第一版标准化评估摘要。\n\n- `/lab:iterate`\n 在冻结 mission、阈值、verification commands 与 `completion_promise` 的前提下执行有边界的实验迭代。\n\n- `/lab:review`\n 以 reviewer mode 审查文档或结果,先给短摘要,再输出 findings、fatal flaws、fix priority 和 residual risks。\n\n- `/lab:report`\n 从 runs 和 iterations 工件生成最终研究报告。\n\n- `/lab:write`\n 使用已安装 `lab` skill 下 vendored 的 paper-writing references,把稳定 report 工件转成论文 section。\n\n## 调度规则\n\n- 始终使用 `skills/lab/SKILL.md` 作为工作流合同。\n- 用户显式调用 `/lab:<stage>` 时,要立刻执行该 stage,而不是只推荐别的 `/lab` stage。\n- 先给简洁摘要,再决定是否写工件,最后回报输出路径和下一步。\n- 如果歧义会影响结论,一次只问一个问题;如果有多条可行路径,先给 2-3 个方案再收敛。\n- `/lab:spec` 前应已有经批准的数据集与 benchmark 方案。\n- `/lab:run`、`/lab:iterate`、`/lab:auto`、`/lab:report` 都应遵循 `.lab/context/eval-protocol.md`。\n- `.lab/context/eval-protocol.md` 不只定义主指标和主表,也应定义指标释义、实验阶梯,以及指标和对比实现的来源。\n- `/lab:auto` 只编排已批准边界内的执行阶段,不替代手动的 idea/data/framing/spec 决策。\n- `/lab:write` 前必须已有经批准的 `/lab:framing` 工件。\n\n## 如何输入 `/lab:auto`\n\n## `/lab:auto` 层级指南\n\n- `L1`:适合安全验证、一轮 bounded 真实运行,或简单 report 刷新。\n- `L2`:默认推荐级别,适合冻结核心边界内的常规实验迭代。\n- `L3`:激进 campaign 级别,只在你明确想做更大范围探索和可选写作时使用。\n- 如果不确定,默认推荐 `L2`。\n- 如果用户输入没写级别,或者把级别和 `paper layer`、`phase`、`table` 混用了,就应先停下来,要求用户明确选 `L1/L2/L3`。\n\n- 把 `Autonomy level L1/L2/L3` 视为执行权限级别,不要和论文里的 layer、phase、table 编号混用。\n- 把 `paper layer`、`phase`、`table` 视为实验目标。例如 `paper layer 3` 或 `Phase 1` 不是 `Autonomy level L3`。\n- 一条好的 `/lab:auto` 输入应至少说清:objective、自治级别、terminal goal、scope、allowed modifications。\n- 如果 workflow language 是中文,摘要、清单条目、任务标签和进度更新都应使用中文,除非文件路径、代码标识符或字面指标名必须保持原样。\n- 示例:`/lab:auto 自治级别 L2。目标:推进 paper layer 3。终止条件:完成 bounded protocol、测试、最小实现和一轮小规模结果。允许修改:配置、数据接入、评估脚本。`\n"
2006
+ "# `/lab` for Codex\n\n`/lab` 是严格的研究工作流命令族。每次都使用同一套仓库工件和阶段边界。\n\n## 子命令\n\n- `/lab:idea`\n 先做两轮脑暴和两轮文献检索,再定义问题与 failure case、对比最接近前作,并输出带 approval gate source-backed recommendation。\n\n- `/lab:data`\n 把已批准的 idea 转成数据集与 benchmark 方案,记录数据集年份、使用过该数据集的论文、下载来源、许可或访问限制,以及 classic-public、recent-strong-public、claim-specific 三类 benchmark 的纳入理由,和 canonical baselines、strong historical baselines、recent strong public methods、closest prior work 四类对比方法的纳入理由。\n\n- `/lab:auto`\n 在不改变 mission、framing 和核心 claims 的前提下,读取 eval-protocol 与 auto-mode 契约并自动编排 `run`、`iterate`、`review`、`report`,必要时扩展数据集、benchmark 和 comparison methods,并在满足升格策略时自动升级 primary package。启动前必须选定 autonomy level、声明 terminal goal,并显式批准契约。\n\n- `/lab:framing`\n 通过审计当前领域与相邻领域的术语,锁定 paper-facing 的方法名、模块名、论文题目和 contribution bullets,并在 section 起草前保留 approval gate。\n\n- `/lab:spec`\n 把已批准的 idea 转成 `.lab/changes/<change-id>/` 下的一个 lab change 目录,并在其中写出 `proposal`、`design`、`spec`、`tasks`。\n\n- `/lab:run`\n 执行最小有意义验证运行,登记 run,并生成第一版标准化评估摘要。\n\n- `/lab:iterate`\n 在冻结 mission、阈值、verification commands 与 `completion_promise` 的前提下执行有边界的实验迭代。\n\n- `/lab:review`\n 以 reviewer mode 审查文档或结果,先给短摘要,再输出 findings、fatal flaws、fix priority 和 residual risks。\n\n- `/lab:report`\n 从 runs 和 iterations 工件生成最终研究报告。\n\n- `/lab:write`\n 使用已安装 `lab` skill 下 vendored 的 paper-writing references,把稳定 report 工件转成论文 section。\n\n## 调度规则\n\n- 始终使用 `skills/lab/SKILL.md` 作为工作流合同。\n- 用户显式调用 `/lab:<stage>` 时,要立刻执行该 stage,而不是只推荐别的 `/lab` stage。\n- 先给简洁摘要,再决定是否写工件,最后回报输出路径和下一步。\n- 如果歧义会影响结论,一次只问一个问题;如果有多条可行路径,先给 2-3 个方案再收敛。\n- `/lab:spec` 前应已有经批准的数据集与 benchmark 方案。\n- `/lab:run`、`/lab:iterate`、`/lab:auto`、`/lab:report` 都应遵循 `.lab/context/eval-protocol.md`。\n- `.lab/context/eval-protocol.md` 不只定义主指标和主表,也应定义指标释义、实验阶梯,以及指标和对比实现的来源。\n- `/lab:auto` 只编排已批准边界内的执行阶段,不替代手动的 idea/data/framing/spec 决策。\n- `/lab:write` 前必须已有经批准的 `/lab:framing` 工件。\n\n## 如何输入 `/lab:auto`\n\n## `/lab:auto` 层级指南\n\n- `L1`:适合安全验证、一轮 bounded 真实运行,或简单 report 刷新。\n- `L2`:默认推荐级别,适合冻结核心边界内的常规实验迭代。\n- `L3`:激进 campaign 级别,只在你明确想做更大范围探索和可选写作时使用。\n- 如果不确定,默认推荐 `L2`。\n- 如果用户输入没写级别,或者把级别和 `paper layer`、`phase`、`table` 混用了,就应先停下来,要求用户明确选 `L1/L2/L3`。\n\n- 把 `Autonomy level L1/L2/L3` 视为执行权限级别,不要和论文里的 layer、phase、table 编号混用。\n- 把 `paper layer`、`phase`、`table` 视为实验目标。例如 `paper layer 3` 或 `Phase 1` 不是 `Autonomy level L3`。\n- 一条好的 `/lab:auto` 输入应至少说清:objective、自治级别、terminal goal、scope、allowed modifications。\n- 如果 workflow language 是中文,摘要、清单条目、任务标签和进度更新都应使用中文,除非文件路径、代码标识符或字面指标名必须保持原样。\n- 示例:`/lab:auto 自治级别 L2。目标:推进 paper layer 3。终止条件:完成 bounded protocol、测试、最小实现和一轮小规模结果。允许修改:配置、数据接入、评估脚本。`\n"
1901
2007
  );
1902
2008
 
1903
2009
  ZH_CONTENT[path.join(".codex", "prompts", "lab-data.md")] = codexPrompt(
@@ -1994,7 +2100,7 @@ ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "data.md")] = `# \`/la
1994
2100
 
1995
2101
  ## 上下文写回
1996
2102
 
1997
- - \`.lab/context/state.md\`
2103
+ - \`.lab/context/workflow-state.md\`
1998
2104
  - \`.lab/context/decisions.md\`
1999
2105
  - \`.lab/context/data-decisions.md\`
2000
2106
 
@@ -2050,11 +2156,12 @@ ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "spec.md")] = `# \`/la
2050
2156
  - \`.lab/context/mission.md\`
2051
2157
  - \`.lab/context/decisions.md\`
2052
2158
  - \`.lab/context/state.md\`
2159
+ - \`.lab/context/workflow-state.md\`
2053
2160
  - \`.lab/context/data-decisions.md\`
2054
2161
 
2055
2162
  ## 上下文写回
2056
2163
 
2057
- - \`.lab/context/state.md\`
2164
+ - \`.lab/context/workflow-state.md\`
2058
2165
  - \`.lab/context/decisions.md\`
2059
2166
 
2060
2167
  ## 必要 change 结构
@@ -2414,6 +2521,7 @@ ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "auto.md")] = `# \`/la
2414
2521
  - \`.lab/config/workflow.json\`
2415
2522
  - \`.lab/context/mission.md\`
2416
2523
  - \`.lab/context/state.md\`
2524
+ - \`.lab/context/workflow-state.md\`
2417
2525
  - \`.lab/context/decisions.md\`
2418
2526
  - \`.lab/context/data-decisions.md\`
2419
2527
  - \`.lab/context/evidence-index.md\`
@@ -2426,9 +2534,9 @@ ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "auto.md")] = `# \`/la
2426
2534
  ## 上下文写回
2427
2535
 
2428
2536
  - \`.lab/context/mission.md\`
2429
- - \`.lab/context/state.md\`
2430
2537
  - \`.lab/context/decisions.md\`
2431
2538
  - \`.lab/context/data-decisions.md\`
2539
+ - \`.lab/context/workflow-state.md\`
2432
2540
  - \`.lab/context/evidence-index.md\`
2433
2541
  - \`.lab/context/eval-protocol.md\`
2434
2542
  - \`.lab/context/summary.md\`
@@ -2461,7 +2569,7 @@ ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "auto.md")] = `# \`/la
2461
2569
  - \`write\` 写出 \`<deliverables_root>/paper/\` 下的 LaTeX 产物
2462
2570
  - 如果即将进入 \`report\`,而 \`.lab/context/mission.md\` 或 \`.lab/context/eval-protocol.md\` 仍是模板空壳,就先根据冻结工件和已批准上下文回填最小可信版本。
2463
2571
  - 如果回填后仍缺少协作者可读所需的关键字段,就必须强制生成 \`artifact-anchored interim report\`,不能冒充最终协作者报告。
2464
- - promotion 成功后,必须写回 \`data-decisions.md\`、\`decisions.md\`、\`state.md\` 和 \`workflow-state.md\`。
2572
+ - promotion 成功后,必须写回 \`data-decisions.md\`、\`decisions.md\` 和 \`workflow-state.md\`,然后刷新 \`state.md\` 等派生视图。
2465
2573
  - 如果某个指标或对比 claim 在评估协议里没有带来源的定义,就不能拿它做 stop 或 promotion 判断。
2466
2574
 
2467
2575
  ## 最小流程
@@ -0,0 +1,8 @@
1
+ {
2
+ "stage_prompt": {
3
+ "codex_en": "This command runs the `/lab:idea` stage. Use `.codex/skills/lab/stages/idea.md` as the single source of truth for the two brainstorm passes, two literature sweeps, closest-prior comparison, source-backed proposal memo, minimum viable experiment, and approval gate. Start with brainstorm pass 1 over 2-4 candidate directions, run literature sweep 1 with real closest-prior references for each direction, narrow the field with brainstorm pass 2, then run literature sweep 2 to build the final source bundle before producing a collaborator-readable recommendation. Keep `.lab/writing/idea-source-log.md` synchronized with the actual search queries, bucketed sources, and final source count used in both sweeps. The literature bundle should default to about 20 sources unless the field is genuinely narrow and that smaller bundle is explicitly justified.",
4
+ "claude_en": "This command runs the `idea` stage of the lab workflow. Use `.claude/skills/lab/stages/idea.md` as the single source of truth for the two brainstorm passes, two literature sweeps, closest-prior comparison, source-backed proposal memo, minimum viable experiment, and approval gate. Start with brainstorm pass 1 over 2-4 candidate directions, run literature sweep 1 with real closest-prior references for each direction, narrow the field with brainstorm pass 2, then run literature sweep 2 to build the final source bundle before producing a collaborator-readable recommendation. Keep `.lab/writing/idea-source-log.md` synchronized with the actual search queries, bucketed sources, and final source count used in both sweeps. The literature bundle should default to about 20 sources unless the field is genuinely narrow and that smaller bundle is explicitly justified.",
5
+ "codex_zh": "本命令运行 `/lab:idea` 阶段。把 `.codex/skills/lab/stages/idea.md` 当成两轮脑暴、两轮文献检索、最接近前作对照、source-backed proposal memo、最小可行实验和 approval gate 的单一来源。先做第一轮脑暴,产出 2-4 个候选方向;再做第一轮文献检索,为每个方向补最接近前作;然后用第二轮脑暴淘汰或收敛方向;最后做第二轮文献检索,补齐最终来源包,再输出协作者可读的推荐结论。`.lab/writing/idea-source-log.md` 必须和两轮检索实际用到的查询、来源分桶和最终来源数保持一致。文献来源包默认目标约 20 篇;如果领域确实很窄,必须显式解释为什么合理地低于这个目标。",
6
+ "claude_zh": "本命令运行 lab workflow 的 `idea` 阶段。把 `.claude/skills/lab/stages/idea.md` 当成两轮脑暴、两轮文献检索、最接近前作对照、source-backed proposal memo、最小可行实验和 approval gate 的单一来源。先做第一轮脑暴,产出 2-4 个候选方向;再做第一轮文献检索,为每个方向补最接近前作;然后用第二轮脑暴淘汰或收敛方向;最后做第二轮文献检索,补齐最终来源包,再输出协作者可读的推荐结论。`.lab/writing/idea-source-log.md` 必须和两轮检索实际用到的查询、来源分桶和最终来源数保持一致。文献来源包默认目标约 20 篇;如果领域确实很窄,必须显式解释为什么合理地低于这个目标。"
7
+ }
8
+ }
@@ -7,4 +7,4 @@ argument-hint: idea or research problem
7
7
  Use the installed `lab` skill at `.claude/skills/lab/SKILL.md`.
8
8
 
9
9
  Execute the requested `/lab-idea` command against the user's argument now. Do not only recommend another lab stage. If a blocking prerequisite is missing, say exactly what is missing and ask at most one clarifying question.
10
- This command runs the `idea` stage of the lab workflow. It must produce a collaborator-readable proposal memo with a plain-language scenario, problem, why-it-matters explanation, explicit current-method landscape, closest-prior-work comparison, a literature scoping bundle that defaults to roughly 20 relevant sources unless the field is too narrow, a rough approach description, and a minimum viable experiment before the approval gate.
10
+ This command runs the `idea` stage of the lab workflow. Use `.claude/skills/lab/stages/idea.md` as the single source of truth for the two brainstorm passes, two literature sweeps, closest-prior comparison, source-backed proposal memo, minimum viable experiment, and approval gate. Start with brainstorm pass 1 over 2-4 candidate directions, run literature sweep 1 with real closest-prior references for each direction, narrow the field with brainstorm pass 2, then run literature sweep 2 to build the final source bundle before producing a collaborator-readable recommendation. Keep `.lab/writing/idea-source-log.md` synchronized with the actual search queries, bucketed sources, and final source count used in both sweeps. The literature bundle should default to about 20 sources unless the field is genuinely narrow and that smaller bundle is explicitly justified.