superlab 0.1.7 → 0.1.9
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.
- package/README.md +65 -17
- package/README.zh-CN.md +64 -15
- package/bin/superlab.cjs +232 -1
- package/lib/context.cjs +337 -0
- package/lib/i18n.cjs +693 -41
- package/lib/install.cjs +253 -53
- package/package-assets/claude/commands/lab/framing.md +11 -0
- package/package-assets/claude/commands/lab/idea.md +2 -1
- package/package-assets/claude/commands/lab/iterate.md +2 -1
- package/package-assets/claude/commands/lab/report.md +2 -1
- package/package-assets/claude/commands/lab/review.md +2 -1
- package/package-assets/claude/commands/lab/run.md +2 -1
- package/package-assets/claude/commands/lab/spec.md +2 -1
- package/package-assets/claude/commands/lab/write.md +2 -1
- package/package-assets/claude/commands/lab.md +48 -0
- package/package-assets/codex/prompts/lab-framing.md +9 -0
- package/package-assets/codex/prompts/lab-idea.md +2 -1
- package/package-assets/codex/prompts/lab-iterate.md +2 -1
- package/package-assets/codex/prompts/lab-report.md +2 -1
- package/package-assets/codex/prompts/lab-review.md +2 -1
- package/package-assets/codex/prompts/lab-run.md +2 -1
- package/package-assets/codex/prompts/lab-spec.md +2 -1
- package/package-assets/codex/prompts/lab-write.md +2 -1
- package/package-assets/codex/prompts/lab.md +46 -0
- package/package-assets/shared/{templates → lab/.managed/templates}/design.md +3 -3
- package/package-assets/shared/lab/.managed/templates/framing.md +68 -0
- package/package-assets/shared/{templates → lab/.managed/templates}/paper-plan.md +1 -0
- package/package-assets/shared/{templates → lab/.managed/templates}/proposal.md +1 -1
- package/package-assets/shared/{templates → lab/.managed/templates}/spec.md +2 -2
- package/package-assets/shared/{templates → lab/.managed/templates}/tasks.md +2 -2
- package/package-assets/shared/{templates → lab/.managed/templates}/write-iteration.md +1 -0
- package/package-assets/shared/lab/changes/README.md +10 -0
- package/package-assets/shared/lab/config/workflow.json +6 -0
- package/package-assets/shared/lab/context/next-action.md +19 -0
- package/package-assets/shared/lab/context/session-brief.md +30 -0
- package/package-assets/shared/lab/context/summary.md +21 -0
- package/package-assets/shared/lab/context/terminology-lock.md +28 -0
- package/package-assets/shared/lab/system/core.md +41 -0
- package/package-assets/shared/skills/lab/SKILL.md +54 -37
- package/package-assets/shared/skills/lab/references/paper-writing/abstract.md +2 -17
- package/package-assets/shared/skills/lab/references/paper-writing/introduction.md +3 -63
- package/package-assets/shared/skills/lab/references/paper-writing/method.md +4 -34
- package/package-assets/shared/skills/lab/references/workflow.md +4 -4
- package/package-assets/shared/skills/lab/stages/framing.md +72 -0
- package/package-assets/shared/skills/lab/stages/idea.md +5 -5
- package/package-assets/shared/skills/lab/stages/iterate.md +8 -8
- package/package-assets/shared/skills/lab/stages/report.md +7 -6
- package/package-assets/shared/skills/lab/stages/review.md +6 -5
- package/package-assets/shared/skills/lab/stages/run.md +4 -4
- package/package-assets/shared/skills/lab/stages/spec.md +11 -11
- package/package-assets/shared/skills/lab/stages/write.md +14 -10
- package/package.json +1 -1
- package/package-assets/shared/changes/README.md +0 -10
- package/package-assets/shared/config/workflow.json +0 -5
- package/package-assets/shared/examples/minimal-uplift-workflow.md +0 -73
- /package/package-assets/shared/{scripts → lab/.managed/scripts}/eval_report.py +0 -0
- /package/package-assets/shared/{scripts → lab/.managed/scripts}/register_run.py +0 -0
- /package/package-assets/shared/{scripts → lab/.managed/scripts}/summarize_iterations.py +0 -0
- /package/package-assets/shared/{scripts → lab/.managed/scripts}/validate_results.py +0 -0
- /package/package-assets/shared/{templates → lab/.managed/templates}/final-report.md +0 -0
- /package/package-assets/shared/{templates → lab/.managed/templates}/idea.md +0 -0
- /package/package-assets/shared/{templates → lab/.managed/templates}/iteration-report.md +0 -0
- /package/package-assets/shared/{templates → lab/.managed/templates}/paper-section.md +0 -0
- /package/package-assets/shared/{templates → lab/.managed/templates}/paper-section.tex +0 -0
- /package/package-assets/shared/{templates → lab/.managed/templates}/paper.tex +0 -0
- /package/package-assets/shared/{templates → lab/.managed/templates}/review-checklist.md +0 -0
- /package/package-assets/shared/{context → lab/context}/decisions.md +0 -0
- /package/package-assets/shared/{context → lab/context}/evidence-index.md +0 -0
- /package/package-assets/shared/{context → lab/context}/mission.md +0 -0
- /package/package-assets/shared/{context → lab/context}/open-questions.md +0 -0
- /package/package-assets/shared/{context → lab/context}/state.md +0 -0
package/lib/i18n.cjs
CHANGED
|
@@ -23,82 +23,104 @@ ${body}
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
const ZH_CONTENT = {
|
|
26
|
+
[path.join(".codex", "prompts", "lab.md")]: codexPrompt(
|
|
27
|
+
"查看 /lab 研究工作流总览并选择合适阶段",
|
|
28
|
+
"workflow question 或 stage choice",
|
|
29
|
+
"# `/lab` for Codex\n\n`/lab` 是严格的研究工作流命令族。每次都使用同一套仓库工件和阶段边界。\n\n## 子命令\n\n- `/lab:idea`\n 调研 idea,定义问题与 failure case,归类 contribution 与 breakthrough level,对比现有方法,收束三个一眼就有意义的点,并在实现前保留 approval gate。\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:write` 前必须已有经批准的 `/lab:framing` 工件。\n"
|
|
30
|
+
),
|
|
26
31
|
[path.join(".codex", "prompts", "lab-idea.md")]: codexPrompt(
|
|
27
32
|
"在进入规格前调研并打磨论文或实验想法",
|
|
28
33
|
"idea 或 research problem",
|
|
29
|
-
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:idea` 阶段。它必须先用清晰简洁的话定义问题与失败场景,说明现有方法哪里不够、我们的想法为何更好,再做 idea classification、contribution category、breakthrough level 的归类,并收束出至少三个一眼就有意义的点,最后保留进入 `/lab:spec` 前的 approval gate。"
|
|
34
|
+
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:idea`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:idea` 阶段。它必须先用清晰简洁的话定义问题与失败场景,说明现有方法哪里不够、我们的想法为何更好,再做 idea classification、contribution category、breakthrough level 的归类,并收束出至少三个一眼就有意义的点,最后保留进入 `/lab:spec` 前的 approval gate。"
|
|
35
|
+
),
|
|
36
|
+
[path.join(".codex", "prompts", "lab-framing.md")]: codexPrompt(
|
|
37
|
+
"在写作前收紧方法名、模块名、论文题目和 contribution framing",
|
|
38
|
+
"naming、title 或 contribution framing target",
|
|
39
|
+
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:framing`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:framing` 阶段。它必须围绕 paper-facing framing,收紧方法名、模块名、题目和 contribution bullets,审查当前领域与相邻领域的术语是否 canonical、对象是否明确,并在进入 `/lab:write` 前保留 approval gate。"
|
|
30
40
|
),
|
|
31
41
|
[path.join(".codex", "prompts", "lab-spec.md")]: codexPrompt(
|
|
32
42
|
"把已批准的 idea 转成统一的 lab change 目录",
|
|
33
43
|
"approved idea context",
|
|
34
|
-
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:spec` 阶段。它必须围绕一个 change id,在 `.
|
|
44
|
+
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:spec`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:spec` 阶段。它必须围绕一个 change id,在 `.lab/changes/<change-id>/` 下生成 proposal/design/spec/tasks,并让这个 change 成为后续 run 和 iterate 的统一入口。"
|
|
35
45
|
),
|
|
36
46
|
[path.join(".codex", "prompts", "lab-run.md")]: codexPrompt(
|
|
37
47
|
"执行最小可行实验并标准化输出",
|
|
38
48
|
"run context",
|
|
39
|
-
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:run` 阶段。它必须从最小实验开始,登记 run,生成标准化评估摘要,并验证结果格式。"
|
|
49
|
+
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:run`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:run` 阶段。它必须从最小实验开始,登记 run,生成标准化评估摘要,并验证结果格式。"
|
|
40
50
|
),
|
|
41
51
|
[path.join(".codex", "prompts", "lab-iterate.md")]: codexPrompt(
|
|
42
52
|
"在固定成功标准下执行有边界的实验迭代",
|
|
43
53
|
"iteration mission",
|
|
44
|
-
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:iterate` 阶段。它必须冻结 mission、声明 completion_promise、只做小步改动、每轮生成评估和 iteration report;若风险连续两轮升高则切 diagnostic mode,并在失败结束时记录 blockers 与 next actions。"
|
|
54
|
+
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:iterate`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:iterate` 阶段。它必须冻结 mission、声明 completion_promise、只做小步改动、每轮生成评估和 iteration report;若风险连续两轮升高则切 diagnostic mode,并在失败结束时记录 blockers 与 next actions。"
|
|
45
55
|
),
|
|
46
56
|
[path.join(".codex", "prompts", "lab-review.md")]: codexPrompt(
|
|
47
57
|
"以审稿人模式审查研究方案或结果",
|
|
48
58
|
"artifact or result to review",
|
|
49
|
-
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:review` 阶段。它必须先给简洁摘要,再按 findings -> fatal flaws -> fix priority -> residual risks 的顺序输出,优先检查方法学漏洞、对照公平性、数据泄漏、统计不足和 unsupported claims。"
|
|
59
|
+
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:review`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:review` 阶段。它必须先给简洁摘要,再按 findings -> fatal flaws -> fix priority -> residual risks 的顺序输出,优先检查方法学漏洞、对照公平性、数据泄漏、统计不足和 unsupported claims。"
|
|
50
60
|
),
|
|
51
61
|
[path.join(".codex", "prompts", "lab-report.md")]: codexPrompt(
|
|
52
62
|
"基于验证后的迭代工件生成最终报告",
|
|
53
63
|
"report context",
|
|
54
|
-
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:report` 阶段。它必须汇总标准化摘要、保留失败尝试和局限,并生成最终实验报告。"
|
|
64
|
+
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:report`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:report` 阶段。它必须汇总标准化摘要、保留失败尝试和局限,并生成最终实验报告。"
|
|
55
65
|
),
|
|
56
66
|
[path.join(".codex", "prompts", "lab-write.md")]: codexPrompt(
|
|
57
67
|
"把验证过的研究工件转成论文 section,并按小步方式修订",
|
|
58
68
|
"section or writing target",
|
|
59
|
-
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:write`
|
|
69
|
+
"使用已安装的 `lab` 技能:`.codex/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:write`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:write` 阶段。它必须先有来自 `/lab:framing` 的已批准 framing artifact,再读取 `.codex/skills/lab/references/paper-writing/` 下与当前 section 对应的参考文件,并结合 `paper-review.md` 与 `does-my-writing-flow-source.md`,先写 mini-outline,再只修改一个 section。"
|
|
60
70
|
),
|
|
61
71
|
[path.join(".claude", "commands", "lab", "idea.md")]: claudeCommand(
|
|
62
72
|
"LAB: Idea",
|
|
63
73
|
"在进入规格前调研并打磨论文或实验想法",
|
|
64
74
|
"workflow, research, idea",
|
|
65
|
-
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:idea` 阶段。它必须先用清晰简洁的话定义问题与失败场景,说明现有方法哪里不够、我们的想法为何更好,再做 idea classification、contribution category、breakthrough level 的归类,并收束出至少三个一眼就有意义的点,最后保留进入 `/lab:spec` 前的 approval gate。"
|
|
75
|
+
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:idea`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:idea` 阶段。它必须先用清晰简洁的话定义问题与失败场景,说明现有方法哪里不够、我们的想法为何更好,再做 idea classification、contribution category、breakthrough level 的归类,并收束出至少三个一眼就有意义的点,最后保留进入 `/lab:spec` 前的 approval gate。"
|
|
76
|
+
),
|
|
77
|
+
[path.join(".claude", "commands", "lab.md")]: claudeCommand(
|
|
78
|
+
"LAB",
|
|
79
|
+
"查看 /lab 研究工作流总览并选择合适阶段",
|
|
80
|
+
"workflow, research, overview",
|
|
81
|
+
"# `/lab` for Claude\n\n`/lab` 是严格的研究工作流命令族。每次都使用同一套仓库工件和阶段边界。\n\n## 子命令\n\n- `/lab:idea`\n 调研 idea,定义问题与 failure case,归类 contribution 与 breakthrough level,对比现有方法,收束三个一眼就有意义的点,并在实现前保留 approval gate。\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:write` 前必须已有经批准的 `/lab:framing` 工件。\n"
|
|
82
|
+
),
|
|
83
|
+
[path.join(".claude", "commands", "lab", "framing.md")]: claudeCommand(
|
|
84
|
+
"LAB: Framing",
|
|
85
|
+
"在写作前收紧方法名、模块名、论文题目和 contribution framing",
|
|
86
|
+
"workflow, research, framing",
|
|
87
|
+
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:framing`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:framing` 阶段。它必须围绕 paper-facing framing,收紧方法名、模块名、题目和 contribution bullets,审查当前领域与相邻领域的术语是否 canonical、对象是否明确,并在进入 `/lab:write` 前保留 approval gate。"
|
|
66
88
|
),
|
|
67
89
|
[path.join(".claude", "commands", "lab", "spec.md")]: claudeCommand(
|
|
68
90
|
"LAB: Spec",
|
|
69
91
|
"把已批准的 idea 转成统一的 lab change 目录",
|
|
70
92
|
"workflow, research, spec",
|
|
71
|
-
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:spec` 阶段。它必须围绕一个 change id,在 `.
|
|
93
|
+
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:spec`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:spec` 阶段。它必须围绕一个 change id,在 `.lab/changes/<change-id>/` 下生成 proposal/design/spec/tasks,并让这个 change 成为后续 run 和 iterate 的统一入口。"
|
|
72
94
|
),
|
|
73
95
|
[path.join(".claude", "commands", "lab", "run.md")]: claudeCommand(
|
|
74
96
|
"LAB: Run",
|
|
75
97
|
"执行最小可行实验并标准化输出",
|
|
76
98
|
"workflow, research, run",
|
|
77
|
-
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:run` 阶段。它必须从最小实验开始,登记 run,生成标准化评估摘要,并验证结果格式。"
|
|
99
|
+
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:run`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:run` 阶段。它必须从最小实验开始,登记 run,生成标准化评估摘要,并验证结果格式。"
|
|
78
100
|
),
|
|
79
101
|
[path.join(".claude", "commands", "lab", "iterate.md")]: claudeCommand(
|
|
80
102
|
"LAB: Iterate",
|
|
81
103
|
"在固定成功标准下执行有边界的实验迭代",
|
|
82
104
|
"workflow, research, iterate",
|
|
83
|
-
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:iterate` 阶段。它必须冻结 mission、声明 completion_promise、只做小步改动、每轮生成评估和 iteration report;若风险连续两轮升高则切 diagnostic mode,并在失败结束时记录 blockers 与 next actions。"
|
|
105
|
+
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:iterate`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:iterate` 阶段。它必须冻结 mission、声明 completion_promise、只做小步改动、每轮生成评估和 iteration report;若风险连续两轮升高则切 diagnostic mode,并在失败结束时记录 blockers 与 next actions。"
|
|
84
106
|
),
|
|
85
107
|
[path.join(".claude", "commands", "lab", "review.md")]: claudeCommand(
|
|
86
108
|
"LAB: Review",
|
|
87
109
|
"以审稿人模式审查研究方案或结果",
|
|
88
110
|
"workflow, research, review",
|
|
89
|
-
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:review` 阶段。它必须先给简洁摘要,再按 findings -> fatal flaws -> fix priority -> residual risks 的顺序输出,优先检查方法学漏洞、对照公平性、数据泄漏、统计不足和 unsupported claims。"
|
|
111
|
+
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:review`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:review` 阶段。它必须先给简洁摘要,再按 findings -> fatal flaws -> fix priority -> residual risks 的顺序输出,优先检查方法学漏洞、对照公平性、数据泄漏、统计不足和 unsupported claims。"
|
|
90
112
|
),
|
|
91
113
|
[path.join(".claude", "commands", "lab", "report.md")]: claudeCommand(
|
|
92
114
|
"LAB: Report",
|
|
93
115
|
"基于验证后的迭代工件生成最终报告",
|
|
94
116
|
"workflow, research, report",
|
|
95
|
-
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:report` 阶段。它必须汇总标准化摘要、保留失败尝试和局限,并生成最终实验报告。"
|
|
117
|
+
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:report`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:report` 阶段。它必须汇总标准化摘要、保留失败尝试和局限,并生成最终实验报告。"
|
|
96
118
|
),
|
|
97
119
|
[path.join(".claude", "commands", "lab", "write.md")]: claudeCommand(
|
|
98
120
|
"LAB: Write",
|
|
99
121
|
"把验证过的研究工件转成论文 section,并按小步方式修订",
|
|
100
122
|
"workflow, research, writing",
|
|
101
|
-
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n本命令运行 `/lab:write`
|
|
123
|
+
"使用已安装的 `lab` 技能:`.claude/skills/lab/SKILL.md`。\n\n立刻针对用户当前给出的参数执行 `/lab:write`,不要只推荐别的 `/lab` 阶段。只有在缺少阻塞性前提时,才明确指出缺什么,并且一次最多追问一个问题。\n\n本命令运行 `/lab:write` 阶段。它必须先有来自 `/lab:framing` 的已批准 framing artifact,再读取 `.claude/skills/lab/references/paper-writing/` 下与当前 section 对应的参考文件,并结合 `paper-review.md` 与 `does-my-writing-flow-source.md`,先写 mini-outline,再只修改一个 section。"
|
|
102
124
|
),
|
|
103
125
|
};
|
|
104
126
|
|
|
@@ -122,7 +144,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
122
144
|
- 如果缺少的前提会改变结论,一次只追问一个问题。
|
|
123
145
|
- 如果存在多条可行路径,先给 2-3 个方案、trade-offs 和推荐项,再收敛。
|
|
124
146
|
- 如果某个 stage 会决定后续方向,就要保留明确的 approval gate。
|
|
125
|
-
- 使用 \`.
|
|
147
|
+
- 使用 \`.lab/config/workflow.json\` 作为全局约束,统一管理 workflow language、paper language、paper format 和 deliverables_root。
|
|
126
148
|
- 工作流中间工件默认跟随安装语言。
|
|
127
149
|
- 最终论文默认输出为 LaTeX,论文语言与工作流语言分开决定。
|
|
128
150
|
- 区分“来源事实”和“模型假设”。
|
|
@@ -132,6 +154,249 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
132
154
|
- \`/lab:idea\` 还需要 problem/failure case、idea classification、contribution category、breakthrough level。
|
|
133
155
|
- \`/lab:idea\` 还需要 existing methods 对照、why ours is different、three meaningful points。
|
|
134
156
|
- \`/lab:iterate\` 需要 completion_promise 与失败退出记录。
|
|
157
|
+
`,
|
|
158
|
+
[path.join(".codex", "skills", "lab", "stages", "spec.md")]:
|
|
159
|
+
`# \`/lab:spec\` 阶段指南
|
|
160
|
+
|
|
161
|
+
## 必要输出
|
|
162
|
+
|
|
163
|
+
- 一个 lab change id
|
|
164
|
+
- \`.lab/changes/<change-id>/proposal.md\`
|
|
165
|
+
- \`.lab/changes/<change-id>/design.md\`
|
|
166
|
+
- \`.lab/changes/<change-id>/spec.md\`
|
|
167
|
+
- \`.lab/changes/<change-id>/tasks.md\`
|
|
168
|
+
|
|
169
|
+
## 配置读取
|
|
170
|
+
|
|
171
|
+
- \`.lab/config/workflow.json\`
|
|
172
|
+
|
|
173
|
+
## 上下文读取
|
|
174
|
+
|
|
175
|
+
- \`.lab/context/mission.md\`
|
|
176
|
+
- \`.lab/context/decisions.md\`
|
|
177
|
+
- \`.lab/context/state.md\`
|
|
178
|
+
|
|
179
|
+
## 上下文写回
|
|
180
|
+
|
|
181
|
+
- \`.lab/context/state.md\`
|
|
182
|
+
- \`.lab/context/decisions.md\`
|
|
183
|
+
|
|
184
|
+
## 必要 change 结构
|
|
185
|
+
|
|
186
|
+
1. 识别或创建一个 lab change id。
|
|
187
|
+
2. 创建 \`.lab/changes/<change-id>/\`。
|
|
188
|
+
3. 在该目录下写出 \`proposal.md\`、\`design.md\`、\`spec.md\`、\`tasks.md\`。
|
|
189
|
+
4. 保持该 change 自包含,便于后续 stage 只读一个目录加少量上下文。
|
|
190
|
+
|
|
191
|
+
## 转换规则
|
|
192
|
+
|
|
193
|
+
- 把已批准的 idea 转成显式要求。
|
|
194
|
+
- 保留 idea 阶段冻结下来的评估边界。
|
|
195
|
+
- 尽可能把风险翻译成具体任务。
|
|
196
|
+
- 任务粒度要足够小,便于 \`/lab:run\` 和 \`/lab:iterate\` 可预测执行。
|
|
197
|
+
- 一个被批准的 idea 只对应一个 lab-native change 目录,不要分散。
|
|
198
|
+
|
|
199
|
+
## 交互约束
|
|
200
|
+
|
|
201
|
+
- 开始前先简洁说明:已批准 idea、目标 change、主要 spec 风险。
|
|
202
|
+
- 如果 change 拆分或验证策略存在关键歧义,一次只问一个问题。
|
|
203
|
+
- 如果 change 结构存在多种可行方案,先给 2-3 个方案、trade-offs 和推荐项,再冻结结构。
|
|
204
|
+
- 在会驱动 \`/lab:run\` 和 \`/lab:iterate\` 的关键结构上保留 approval gate。
|
|
205
|
+
|
|
206
|
+
## 最小任务覆盖
|
|
207
|
+
|
|
208
|
+
- change setup
|
|
209
|
+
- artifact creation
|
|
210
|
+
- validation run
|
|
211
|
+
- evaluation normalization
|
|
212
|
+
- bounded iteration
|
|
213
|
+
- final report
|
|
214
|
+
`,
|
|
215
|
+
[path.join(".codex", "skills", "lab", "stages", "run.md")]:
|
|
216
|
+
`# \`/lab:run\` 阶段指南
|
|
217
|
+
|
|
218
|
+
## 必要输出
|
|
219
|
+
|
|
220
|
+
- smoke-scale 或 tiny-split 执行
|
|
221
|
+
- run registry entry
|
|
222
|
+
- 标准化评估摘要
|
|
223
|
+
- 标准化摘要的校验结果
|
|
224
|
+
|
|
225
|
+
## 上下文读取
|
|
226
|
+
|
|
227
|
+
- \`.lab/context/mission.md\`
|
|
228
|
+
- \`.lab/context/state.md\`
|
|
229
|
+
|
|
230
|
+
## 上下文写回
|
|
231
|
+
|
|
232
|
+
- \`.lab/context/state.md\`
|
|
233
|
+
- \`.lab/context/evidence-index.md\`
|
|
234
|
+
|
|
235
|
+
## 约束
|
|
236
|
+
|
|
237
|
+
- 优先选择能打通全链路的最小实验。
|
|
238
|
+
- 数据、环境或 metric 接线有问题时要尽快失败。
|
|
239
|
+
- 记录精确启动命令和输出位置。
|
|
240
|
+
|
|
241
|
+
## 最小流程
|
|
242
|
+
|
|
243
|
+
1. 校验环境假设
|
|
244
|
+
2. 登记 run
|
|
245
|
+
3. 执行最小有意义实验
|
|
246
|
+
4. 标准化原始指标
|
|
247
|
+
5. 校验标准化摘要
|
|
248
|
+
|
|
249
|
+
## 交互约束
|
|
250
|
+
|
|
251
|
+
- 开始前先简洁说明:run 目标、最小候选实验、主要执行风险。
|
|
252
|
+
- 如果下一轮运行依赖未决前提,一次只问一个问题。
|
|
253
|
+
- 如果存在多种 tiny-run 方案,先给 2-3 个方案、trade-offs 和推荐项,优先最省算力但信息量足够的方案。
|
|
254
|
+
- 只有当某条运行路径会明显增加时间或算力成本时,才请求人工批准。
|
|
255
|
+
`,
|
|
256
|
+
[path.join(".codex", "skills", "lab", "stages", "iterate.md")]:
|
|
257
|
+
`# \`/lab:iterate\` 阶段指南
|
|
258
|
+
|
|
259
|
+
## 冻结 mission
|
|
260
|
+
|
|
261
|
+
以下内容必须声明后保持固定:
|
|
262
|
+
|
|
263
|
+
- dataset 与 split policy
|
|
264
|
+
- baseline
|
|
265
|
+
- 主指标
|
|
266
|
+
- 成功阈值
|
|
267
|
+
- verification commands
|
|
268
|
+
- completion_promise
|
|
269
|
+
- 最大迭代轮次
|
|
270
|
+
|
|
271
|
+
## 上下文读取
|
|
272
|
+
|
|
273
|
+
- \`.lab/context/mission.md\`
|
|
274
|
+
- \`.lab/context/state.md\`
|
|
275
|
+
- \`.lab/context/decisions.md\`
|
|
276
|
+
- \`.lab/context/evidence-index.md\`
|
|
277
|
+
|
|
278
|
+
## 上下文写回
|
|
279
|
+
|
|
280
|
+
- \`.lab/context/state.md\`
|
|
281
|
+
- \`.lab/context/decisions.md\`
|
|
282
|
+
- \`.lab/context/evidence-index.md\`
|
|
283
|
+
- \`.lab/context/open-questions.md\`
|
|
284
|
+
|
|
285
|
+
## 每轮必要输出
|
|
286
|
+
|
|
287
|
+
- 本轮假设
|
|
288
|
+
- 具体代码或配置改动
|
|
289
|
+
- 标准化评估摘要
|
|
290
|
+
- 书面 iteration report
|
|
291
|
+
- continue 或 stop 决策
|
|
292
|
+
- 风险连续两轮升高时触发 diagnostic mode
|
|
293
|
+
|
|
294
|
+
## 停止条件
|
|
295
|
+
|
|
296
|
+
- 达到阈值
|
|
297
|
+
- 达到轮次上限
|
|
298
|
+
- 发现致命方法学问题
|
|
299
|
+
|
|
300
|
+
## 失败退出契约
|
|
301
|
+
|
|
302
|
+
如果循环在未达标时结束,必须记录:
|
|
303
|
+
|
|
304
|
+
- 哪些部分有效
|
|
305
|
+
- 哪些部分失败
|
|
306
|
+
- top 3 blockers
|
|
307
|
+
- next best actions
|
|
308
|
+
|
|
309
|
+
## 交互约束
|
|
310
|
+
|
|
311
|
+
- 每轮开始前先简洁说明:当前状态、主导假设、主要风险。
|
|
312
|
+
- 如果下一步依赖未决前提,一次只问一个问题。
|
|
313
|
+
- 如果下一个可测假设不止一个,先给 2-3 个方案、trade-offs 和推荐项,再推进下一个有边界实验。
|
|
314
|
+
- 如果拟议改动会改变冻结的 mission,而不是只改变实现假设,必须经过 approval gate。
|
|
315
|
+
`,
|
|
316
|
+
[path.join(".codex", "skills", "lab", "stages", "review.md")]:
|
|
317
|
+
`# \`/lab:review\` 阶段指南
|
|
318
|
+
|
|
319
|
+
## 必要流程
|
|
320
|
+
|
|
321
|
+
1. 先给简洁摘要,说明审查对象与最关键风险。
|
|
322
|
+
2. 进入 reviewer mode,而不是实现 mode。
|
|
323
|
+
3. 如果存在 fatal flaws,优先列出。
|
|
324
|
+
4. 明确 fix priority。
|
|
325
|
+
5. 最后给 residual risks 和下一步建议。
|
|
326
|
+
|
|
327
|
+
## 上下文读取
|
|
328
|
+
|
|
329
|
+
- \`.lab/context/mission.md\`
|
|
330
|
+
- \`.lab/context/decisions.md\`
|
|
331
|
+
- \`.lab/context/evidence-index.md\`
|
|
332
|
+
|
|
333
|
+
## 上下文写回
|
|
334
|
+
|
|
335
|
+
- \`.lab/context/state.md\`
|
|
336
|
+
- \`.lab/context/open-questions.md\`
|
|
337
|
+
|
|
338
|
+
## 审稿优先级
|
|
339
|
+
|
|
340
|
+
- baseline 是否弱或不公平
|
|
341
|
+
- 是否存在泄漏风险
|
|
342
|
+
- metric 是否错配
|
|
343
|
+
- 是否存在 unsupported causal 或 statistical claims
|
|
344
|
+
- 是否缺关键消融
|
|
345
|
+
- 报告是否不可复现
|
|
346
|
+
|
|
347
|
+
## 输出风格
|
|
348
|
+
|
|
349
|
+
- concise summary first
|
|
350
|
+
- findings first
|
|
351
|
+
- fatal flaws 必须显式标出
|
|
352
|
+
- fix priority 必须清楚排序
|
|
353
|
+
- critique 必须绑定证据
|
|
354
|
+
- residual risks 不能省略
|
|
355
|
+
|
|
356
|
+
## 交互约束
|
|
357
|
+
|
|
358
|
+
- 开始前先简洁说明:审查目标和主要 reviewer 问题。
|
|
359
|
+
- 只有当审查范围歧义会改变 findings 或严重性时,才一次问一个问题。
|
|
360
|
+
- 如果存在多种合理审查框架,先给 2-3 个方案、trade-offs 和推荐项,但一旦范围明确就保持 reviewer mode,不要弱化批评。
|
|
361
|
+
`,
|
|
362
|
+
[path.join(".codex", "skills", "lab", "stages", "report.md")]:
|
|
363
|
+
`# \`/lab:report\` 阶段指南
|
|
364
|
+
|
|
365
|
+
## 必要输出
|
|
366
|
+
|
|
367
|
+
- 方法概述
|
|
368
|
+
- 实验设置
|
|
369
|
+
- 已验证主结果
|
|
370
|
+
- 消融
|
|
371
|
+
- 失败尝试
|
|
372
|
+
- 局限性
|
|
373
|
+
- 下一步
|
|
374
|
+
|
|
375
|
+
## 上下文读取
|
|
376
|
+
|
|
377
|
+
- \`.lab/context/mission.md\`
|
|
378
|
+
- \`.lab/context/state.md\`
|
|
379
|
+
- \`.lab/context/decisions.md\`
|
|
380
|
+
- \`.lab/context/evidence-index.md\`
|
|
381
|
+
|
|
382
|
+
## 上下文写回
|
|
383
|
+
|
|
384
|
+
- \`.lab/context/state.md\`
|
|
385
|
+
- \`.lab/context/evidence-index.md\`
|
|
386
|
+
|
|
387
|
+
## 证据规则
|
|
388
|
+
|
|
389
|
+
- 不能隐藏失败迭代。
|
|
390
|
+
- 每个主要 claim 都要指向已记录的 summary 或 iteration artifact。
|
|
391
|
+
- 解释优先保守,不要写成营销文案。
|
|
392
|
+
- 要给 \`/lab:write\` 留下清晰 handoff,尤其是 section draft 可以直接引用的证据链接。
|
|
393
|
+
|
|
394
|
+
## 交互约束
|
|
395
|
+
|
|
396
|
+
- 开始前先简洁说明:campaign outcome、最强已支撑 claim、最大的报告风险。
|
|
397
|
+
- 如果某个未决前提会改变报告解释,一次只问一个问题。
|
|
398
|
+
- 如果存在多种报告 framing,先给 2-3 个方案、trade-offs 和推荐项,优先最忠于证据的 framing。
|
|
399
|
+
- 如果某种 framing 会实质影响后续论文 claim,要保留 approval gate。
|
|
135
400
|
`,
|
|
136
401
|
[path.join(".codex", "skills", "lab", "stages", "idea.md")]:
|
|
137
402
|
`# \`/lab:idea\` 阶段指南
|
|
@@ -188,6 +453,47 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
188
453
|
- fix priority 要排序
|
|
189
454
|
- critique 必须绑定证据
|
|
190
455
|
- residual risks 不能省略
|
|
456
|
+
`,
|
|
457
|
+
[path.join(".codex", "skills", "lab", "references", "workflow.md")]:
|
|
458
|
+
`# /lab 工作流参考
|
|
459
|
+
|
|
460
|
+
## 冻结 mission
|
|
461
|
+
|
|
462
|
+
在 \`/lab:iterate\` 中,campaign target 必须跨轮次保持固定。
|
|
463
|
+
|
|
464
|
+
需要保持固定:
|
|
465
|
+
|
|
466
|
+
- dataset 与 split
|
|
467
|
+
- 主指标
|
|
468
|
+
- 成功阈值
|
|
469
|
+
- baseline comparison
|
|
470
|
+
- verification commands
|
|
471
|
+
- maximum iteration count
|
|
472
|
+
|
|
473
|
+
循环内部允许调整:
|
|
474
|
+
|
|
475
|
+
- 实现细节
|
|
476
|
+
- 模型组件
|
|
477
|
+
- 训练设置
|
|
478
|
+
- 消融
|
|
479
|
+
|
|
480
|
+
如果当前 campaign 本身无效,应升级到更高层设计调整,而不是悄悄篡改 mission。
|
|
481
|
+
|
|
482
|
+
## 必要工件
|
|
483
|
+
|
|
484
|
+
- 一个基于 \`.lab/.managed/templates/idea.md\` 的已批准 idea 工件
|
|
485
|
+
- 一个位于 \`.lab/changes/<change-id>/\` 下的 lab change 目录
|
|
486
|
+
- 来自 \`scripts/eval_report.py\` 的标准化 JSON 摘要
|
|
487
|
+
- 位于 \`.lab/iterations/\` 的逐轮报告
|
|
488
|
+
- 位于 \`deliverables_root\` 下的最终报告
|
|
489
|
+
|
|
490
|
+
## 审稿优先级
|
|
491
|
+
|
|
492
|
+
- baseline 是否公平且足够新
|
|
493
|
+
- datasets 和 splits 是否可信
|
|
494
|
+
- 主指标是否符合顶会惯例
|
|
495
|
+
- claims 是否有记录在案的证据支撑
|
|
496
|
+
- failures 和 limitations 是否被保留
|
|
191
497
|
`,
|
|
192
498
|
[path.join(".codex", "skills", "lab", "stages", "write.md")]:
|
|
193
499
|
`# \`/lab:write\` 阶段指南
|
|
@@ -227,7 +533,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
227
533
|
- 若 claim 没有结果支撑,必须削弱或删除。
|
|
228
534
|
- 每轮结束前都要补五维自评并处理未解决问题。
|
|
229
535
|
`,
|
|
230
|
-
[path.join(".
|
|
536
|
+
[path.join(".lab", ".managed", "templates", "idea.md")]:
|
|
231
537
|
`# Idea 工件
|
|
232
538
|
|
|
233
539
|
## 一句话问题定义
|
|
@@ -332,13 +638,13 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
332
638
|
- 用户批准的方向:
|
|
333
639
|
- 进入 \`/lab:spec\` 前还有哪些开放问题:
|
|
334
640
|
`,
|
|
335
|
-
[path.join(".
|
|
641
|
+
[path.join(".lab", ".managed", "templates", "proposal.md")]:
|
|
336
642
|
`# Proposal
|
|
337
643
|
|
|
338
644
|
## Lab Change
|
|
339
645
|
|
|
340
646
|
- Change id:
|
|
341
|
-
- Target path: \`.
|
|
647
|
+
- Target path: \`.lab/changes/<change-id>/proposal.md\`
|
|
342
648
|
|
|
343
649
|
## 范围
|
|
344
650
|
|
|
@@ -365,13 +671,13 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
365
671
|
- 是否完成 change 目录初始化:
|
|
366
672
|
- 是否检查 proposal/design/spec/tasks 一致性:
|
|
367
673
|
`,
|
|
368
|
-
[path.join(".
|
|
674
|
+
[path.join(".lab", ".managed", "templates", "design.md")]:
|
|
369
675
|
`# Design
|
|
370
676
|
|
|
371
677
|
## Lab Change
|
|
372
678
|
|
|
373
679
|
- Change id:
|
|
374
|
-
- Target path: \`.
|
|
680
|
+
- Target path: \`.lab/changes/<change-id>/design.md\`
|
|
375
681
|
|
|
376
682
|
## 研究方案
|
|
377
683
|
|
|
@@ -397,16 +703,16 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
397
703
|
|
|
398
704
|
## Change Links
|
|
399
705
|
|
|
400
|
-
- Spec path: \`.
|
|
401
|
-
- Tasks path: \`.
|
|
706
|
+
- Spec path: \`.lab/changes/<change-id>/spec.md\`
|
|
707
|
+
- Tasks path: \`.lab/changes/<change-id>/tasks.md\`
|
|
402
708
|
`,
|
|
403
|
-
[path.join(".
|
|
709
|
+
[path.join(".lab", ".managed", "templates", "spec.md")]:
|
|
404
710
|
`# Spec
|
|
405
711
|
|
|
406
712
|
## Lab Change
|
|
407
713
|
|
|
408
714
|
- Change id:
|
|
409
|
-
- Target path: \`.
|
|
715
|
+
- Target path: \`.lab/changes/<change-id>/spec.md\`
|
|
410
716
|
|
|
411
717
|
## 要求
|
|
412
718
|
|
|
@@ -418,24 +724,24 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
418
724
|
## 验收
|
|
419
725
|
|
|
420
726
|
- Idea 工件已写
|
|
421
|
-
- 已在 \`.
|
|
727
|
+
- 已在 \`.lab/changes/<change-id>/\` 下写出 change 工件
|
|
422
728
|
- Validation run 已执行
|
|
423
729
|
- Iteration reports 已生成
|
|
424
730
|
- Final report 已生成
|
|
425
731
|
`,
|
|
426
|
-
[path.join(".
|
|
732
|
+
[path.join(".lab", ".managed", "templates", "tasks.md")]:
|
|
427
733
|
`# Tasks
|
|
428
734
|
|
|
429
735
|
- [ ] 确认批准后的 lab change id。
|
|
430
|
-
- [ ] 创建 \`.
|
|
736
|
+
- [ ] 创建 \`.lab/changes/<change-id>/\`。
|
|
431
737
|
- [ ] 写 idea 工件。
|
|
432
|
-
- [ ] 把 idea 转成 \`.
|
|
738
|
+
- [ ] 把 idea 转成 \`.lab/changes/<change-id>/proposal.md\`、\`.lab/changes/<change-id>/design.md\`、\`.lab/changes/<change-id>/spec.md\`、\`.lab/changes/<change-id>/tasks.md\`。
|
|
433
739
|
- [ ] 跑第一轮 validation experiment。
|
|
434
740
|
- [ ] 标准化并验证评估摘要。
|
|
435
741
|
- [ ] 执行有边界的 iteration rounds。
|
|
436
742
|
- [ ] 产出 final report。
|
|
437
743
|
`,
|
|
438
|
-
[path.join(".
|
|
744
|
+
[path.join(".lab", ".managed", "templates", "iteration-report.md")]:
|
|
439
745
|
`# Iteration Report
|
|
440
746
|
|
|
441
747
|
## 轮次
|
|
@@ -476,7 +782,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
476
782
|
- Top blockers:
|
|
477
783
|
- Next best actions:
|
|
478
784
|
`,
|
|
479
|
-
[path.join(".
|
|
785
|
+
[path.join(".lab", ".managed", "templates", "review-checklist.md")]:
|
|
480
786
|
`# Review Checklist
|
|
481
787
|
|
|
482
788
|
## 简洁摘要
|
|
@@ -509,7 +815,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
509
815
|
- 消融是否足够?
|
|
510
816
|
- 方差和显著性问题是否交代清楚?
|
|
511
817
|
`,
|
|
512
|
-
[path.join(".
|
|
818
|
+
[path.join(".lab", ".managed", "templates", "final-report.md")]:
|
|
513
819
|
`# Final Report
|
|
514
820
|
|
|
515
821
|
## 目标
|
|
@@ -532,7 +838,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
532
838
|
- Claim:
|
|
533
839
|
- Missing support:
|
|
534
840
|
`,
|
|
535
|
-
[path.join(".
|
|
841
|
+
[path.join(".lab", ".managed", "templates", "paper-plan.md")]:
|
|
536
842
|
`# 论文计划
|
|
537
843
|
|
|
538
844
|
## 目标
|
|
@@ -572,7 +878,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
572
878
|
- Evaluation completeness:
|
|
573
879
|
- Method design soundness:
|
|
574
880
|
`,
|
|
575
|
-
[path.join(".
|
|
881
|
+
[path.join(".lab", ".managed", "templates", "paper-section.md")]:
|
|
576
882
|
`# 论文 Section 草稿
|
|
577
883
|
|
|
578
884
|
## Section
|
|
@@ -617,7 +923,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
617
923
|
- 五维自评总结:
|
|
618
924
|
- Next revision target:
|
|
619
925
|
`,
|
|
620
|
-
[path.join(".
|
|
926
|
+
[path.join(".lab", ".managed", "templates", "write-iteration.md")]:
|
|
621
927
|
`# 写作迭代
|
|
622
928
|
|
|
623
929
|
## 轮次
|
|
@@ -652,13 +958,14 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
652
958
|
- Next writing target:
|
|
653
959
|
- 是否需要回退到 \`review\` 或 \`iterate\`:
|
|
654
960
|
`,
|
|
655
|
-
[path.join(".
|
|
961
|
+
[path.join(".lab", "config", "workflow.json")]:
|
|
656
962
|
`{
|
|
657
963
|
"workflow_language": "zh",
|
|
658
964
|
"paper_language": "en",
|
|
659
|
-
"paper_format": "latex"
|
|
965
|
+
"paper_format": "latex",
|
|
966
|
+
"deliverables_root": "docs/research"
|
|
660
967
|
}`,
|
|
661
|
-
[path.join(".
|
|
968
|
+
[path.join(".lab", "context", "mission.md")]:
|
|
662
969
|
`# 研究主线
|
|
663
970
|
|
|
664
971
|
## 核心问题
|
|
@@ -687,7 +994,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
687
994
|
- 当前 owner 或会话:
|
|
688
995
|
- 最近更新该 mission 的 stage:
|
|
689
996
|
`,
|
|
690
|
-
[path.join(".
|
|
997
|
+
[path.join(".lab", "context", "state.md")]:
|
|
691
998
|
`# 工作流状态
|
|
692
999
|
|
|
693
1000
|
## 当前阶段
|
|
@@ -708,7 +1015,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
708
1015
|
- 当前阻塞:
|
|
709
1016
|
- 是否需要人工决策:
|
|
710
1017
|
`,
|
|
711
|
-
[path.join(".
|
|
1018
|
+
[path.join(".lab", "context", "decisions.md")]:
|
|
712
1019
|
`# 决策记录
|
|
713
1020
|
|
|
714
1021
|
记录后续阶段不应悄悄推翻的稳定决策。
|
|
@@ -721,7 +1028,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
721
1028
|
证据:
|
|
722
1029
|
何时允许重开:
|
|
723
1030
|
`,
|
|
724
|
-
[path.join(".
|
|
1031
|
+
[path.join(".lab", "context", "evidence-index.md")]:
|
|
725
1032
|
`# 证据索引
|
|
726
1033
|
|
|
727
1034
|
把重要 claim 映射到具体工件。
|
|
@@ -739,7 +1046,7 @@ description: 严格研究工作流,覆盖 idea、spec、run、iterate、review
|
|
|
739
1046
|
为什么被削弱或删除:
|
|
740
1047
|
对应失败工件:
|
|
741
1048
|
`,
|
|
742
|
-
[path.join(".
|
|
1049
|
+
[path.join(".lab", "context", "open-questions.md")]:
|
|
743
1050
|
`# 未决问题
|
|
744
1051
|
|
|
745
1052
|
追踪尚未解决的问题,避免工作流静默脑补。
|
|
@@ -759,6 +1066,351 @@ for (const [relativePath, content] of Object.entries(ZH_SKILL_FILES)) {
|
|
|
759
1066
|
ZH_CONTENT[relativePath.replace(".codex", ".claude")] = content;
|
|
760
1067
|
}
|
|
761
1068
|
|
|
1069
|
+
ZH_CONTENT[path.join(".lab", "system", "core.md")] = `# Lab 系统核心
|
|
1070
|
+
|
|
1071
|
+
本项目使用 \`.lab/\` 作为持久研究工作流根目录。
|
|
1072
|
+
|
|
1073
|
+
## 默认读取顺序
|
|
1074
|
+
|
|
1075
|
+
新 AI 会话按以下顺序读取:
|
|
1076
|
+
|
|
1077
|
+
1. \`.lab/context/session-brief.md\`
|
|
1078
|
+
2. \`.lab/context/mission.md\`
|
|
1079
|
+
3. \`.lab/context/state.md\`
|
|
1080
|
+
4. \`.lab/context/evidence-index.md\`
|
|
1081
|
+
|
|
1082
|
+
只有当简报明确要求时才继续扩展读取。
|
|
1083
|
+
|
|
1084
|
+
## 工作流边界
|
|
1085
|
+
|
|
1086
|
+
- \`.lab/context/\` 保存持久研究状态。
|
|
1087
|
+
- \`.lab/changes/\`、\`.lab/iterations/\`、\`.lab/writing/\` 保存工作流控制工件。
|
|
1088
|
+
- \`.lab/.managed/\` 保存工具托管模板和脚本。
|
|
1089
|
+
- 最终交付物应写到 \`deliverables_root\`,不要写进 \`.lab/context/\`。
|
|
1090
|
+
|
|
1091
|
+
## 路由规则
|
|
1092
|
+
|
|
1093
|
+
只有 research、experiment、report、paper-writing 任务才进入 \`/lab:*\`。
|
|
1094
|
+
普通工程任务不要强行走 \`/lab:*\`。
|
|
1095
|
+
|
|
1096
|
+
## 状态纪律
|
|
1097
|
+
|
|
1098
|
+
- 把 \`.lab/context/*\` 当作持久项目状态。
|
|
1099
|
+
- 不要静默覆盖上下文文件。
|
|
1100
|
+
- 让来源证据与生成假设保持分离。
|
|
1101
|
+
`;
|
|
1102
|
+
|
|
1103
|
+
ZH_CONTENT[path.join(".lab", "context", "summary.md")] = `# 研究摘要
|
|
1104
|
+
|
|
1105
|
+
## 当前方向
|
|
1106
|
+
|
|
1107
|
+
用 5-10 行总结当前批准方向。
|
|
1108
|
+
|
|
1109
|
+
## 最强证据
|
|
1110
|
+
|
|
1111
|
+
- Claim:
|
|
1112
|
+
- Supporting artifact:
|
|
1113
|
+
- Caveat:
|
|
1114
|
+
|
|
1115
|
+
## 最大风险
|
|
1116
|
+
|
|
1117
|
+
- 风险:
|
|
1118
|
+
- 为什么重要:
|
|
1119
|
+
|
|
1120
|
+
## 当前缺口
|
|
1121
|
+
|
|
1122
|
+
- 缺失证据:
|
|
1123
|
+
- 缺失工件:
|
|
1124
|
+
`;
|
|
1125
|
+
|
|
1126
|
+
ZH_CONTENT[path.join(".lab", "context", "next-action.md")] = `# 下一步动作
|
|
1127
|
+
|
|
1128
|
+
## 当前动作
|
|
1129
|
+
|
|
1130
|
+
- Action:
|
|
1131
|
+
- Success signal:
|
|
1132
|
+
|
|
1133
|
+
## 如果成功
|
|
1134
|
+
|
|
1135
|
+
- Next action:
|
|
1136
|
+
|
|
1137
|
+
## 如果失败
|
|
1138
|
+
|
|
1139
|
+
- Fallback action:
|
|
1140
|
+
|
|
1141
|
+
## 是否需要人工决策
|
|
1142
|
+
|
|
1143
|
+
- Question:
|
|
1144
|
+
- 为什么会阻塞:
|
|
1145
|
+
`;
|
|
1146
|
+
|
|
1147
|
+
ZH_CONTENT[path.join(".lab", "context", "session-brief.md")] = `# 会话简报
|
|
1148
|
+
|
|
1149
|
+
## 当前阶段
|
|
1150
|
+
|
|
1151
|
+
- Stage:
|
|
1152
|
+
|
|
1153
|
+
## 主线任务
|
|
1154
|
+
|
|
1155
|
+
一句话描述当前研究主线。
|
|
1156
|
+
|
|
1157
|
+
## 当前最优路径
|
|
1158
|
+
|
|
1159
|
+
- 已批准方向:
|
|
1160
|
+
- 为什么它是当前主路径:
|
|
1161
|
+
|
|
1162
|
+
## 主要风险
|
|
1163
|
+
|
|
1164
|
+
- Risk:
|
|
1165
|
+
- Evidence gap:
|
|
1166
|
+
|
|
1167
|
+
## 先读这些文件
|
|
1168
|
+
|
|
1169
|
+
1. \`.lab/context/mission.md\`
|
|
1170
|
+
2. \`.lab/context/state.md\`
|
|
1171
|
+
3. \`.lab/context/evidence-index.md\`
|
|
1172
|
+
|
|
1173
|
+
## 不要静默修改
|
|
1174
|
+
|
|
1175
|
+
- Frozen boundary:
|
|
1176
|
+
- Approval gate:
|
|
1177
|
+
`;
|
|
1178
|
+
|
|
1179
|
+
ZH_CONTENT[path.join(".lab", "context", "terminology-lock.md")] = `# 已批准术语
|
|
1180
|
+
|
|
1181
|
+
记录后续 stage 必须复用的 paper-facing 命名和 wording。
|
|
1182
|
+
|
|
1183
|
+
## Approved Terms
|
|
1184
|
+
|
|
1185
|
+
- 论文题目:
|
|
1186
|
+
- 方法名:
|
|
1187
|
+
- 简称或 acronym:
|
|
1188
|
+
- 模块名:
|
|
1189
|
+
- Contribution bullets:
|
|
1190
|
+
|
|
1191
|
+
## Allowed Variants
|
|
1192
|
+
|
|
1193
|
+
- 可接受短写:
|
|
1194
|
+
- 可接受小节别名:
|
|
1195
|
+
|
|
1196
|
+
## Forbidden Terms
|
|
1197
|
+
|
|
1198
|
+
- 应避免术语:
|
|
1199
|
+
- 不该 claim 的内容:
|
|
1200
|
+
|
|
1201
|
+
## Source Audit
|
|
1202
|
+
|
|
1203
|
+
- 查阅过的当前领域来源:
|
|
1204
|
+
- 查阅过的相邻领域来源:
|
|
1205
|
+
- 查阅过的 primary sources:
|
|
1206
|
+
- 为什么当前 wording 可以接受:
|
|
1207
|
+
`;
|
|
1208
|
+
|
|
1209
|
+
ZH_CONTENT[path.join(".codex", "skills", "lab", "SKILL.md")] = `---
|
|
1210
|
+
name: lab
|
|
1211
|
+
description: 严格研究工作流,覆盖 idea、framing、spec、run、iterate、review、report 和 paper-writing。
|
|
1212
|
+
---
|
|
1213
|
+
|
|
1214
|
+
# /lab Skill
|
|
1215
|
+
|
|
1216
|
+
当用户调用 \`/lab:*\` 或要求结构化研究工作流时使用本技能。
|
|
1217
|
+
|
|
1218
|
+
## 全局规则
|
|
1219
|
+
|
|
1220
|
+
- 把 idea、framing、spec、execution、review、report、write 分成明确阶段。
|
|
1221
|
+
- 论文写作阶段要与实验执行阶段分离。
|
|
1222
|
+
- 用户显式调用某个 \`/lab:stage\` 时,要直接执行该 stage,而不是只推荐别的 stage。
|
|
1223
|
+
- 关键决策必须落盘,不能只留在聊天里。
|
|
1224
|
+
- 每个 stage 都要先给用户一个简洁简介,再决定是否落盘;如果落盘,最后必须回报路径和下一步。
|
|
1225
|
+
- 如果缺少的前提会改变结论,一次只追问一个问题。
|
|
1226
|
+
- 如果存在多条可行路径,先给 2-3 个方案、trade-offs 和推荐项,再收敛。
|
|
1227
|
+
- 如果某个 stage 会决定后续方向,就要保留明确的 approval gate。
|
|
1228
|
+
- 使用 \`.lab/config/workflow.json\` 作为全局约束,统一管理 workflow language、paper language、paper format 和 deliverables_root。
|
|
1229
|
+
- 工作流中间工件默认跟随安装语言。
|
|
1230
|
+
- 最终论文默认输出为 LaTeX,论文语言与工作流语言分开决定。
|
|
1231
|
+
- 区分“来源事实”和“模型假设”。
|
|
1232
|
+
- 保留失败实验、失败想法和局限性。
|
|
1233
|
+
- \`/lab:framing\` 负责方法名、模块名、题目和 contribution wording 的 paper-facing 收束。
|
|
1234
|
+
- \`/lab:write\` 使用内置 vendored paper-writing references,不依赖外部写作 skill 路径。
|
|
1235
|
+
- \`/lab:write\` 前必须已有经批准的 framing artifact。
|
|
1236
|
+
`;
|
|
1237
|
+
|
|
1238
|
+
ZH_CONTENT[path.join(".claude", "skills", "lab", "SKILL.md")] =
|
|
1239
|
+
ZH_CONTENT[path.join(".codex", "skills", "lab", "SKILL.md")];
|
|
1240
|
+
|
|
1241
|
+
ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "framing.md")] = `# \`/lab:framing\` 阶段指南
|
|
1242
|
+
|
|
1243
|
+
## 必要输出
|
|
1244
|
+
|
|
1245
|
+
- 方法名
|
|
1246
|
+
- 可选简称或 acronym
|
|
1247
|
+
- 模块名
|
|
1248
|
+
- 论文题目
|
|
1249
|
+
- contribution bullets
|
|
1250
|
+
- 不该 claim 的术语与表述
|
|
1251
|
+
- 进入 \`/lab:write\` 前的 approval gate
|
|
1252
|
+
|
|
1253
|
+
## 配置读取
|
|
1254
|
+
|
|
1255
|
+
- \`.lab/config/workflow.json\`
|
|
1256
|
+
|
|
1257
|
+
## 上下文读取
|
|
1258
|
+
|
|
1259
|
+
- \`.lab/context/mission.md\`
|
|
1260
|
+
- \`.lab/context/decisions.md\`
|
|
1261
|
+
- \`.lab/context/evidence-index.md\`
|
|
1262
|
+
- \`.lab/context/terminology-lock.md\`
|
|
1263
|
+
|
|
1264
|
+
## 上下文写回
|
|
1265
|
+
|
|
1266
|
+
- \`.lab/context/state.md\`
|
|
1267
|
+
- \`.lab/context/decisions.md\`
|
|
1268
|
+
- \`.lab/context/terminology-lock.md\`
|
|
1269
|
+
|
|
1270
|
+
## 必要工件
|
|
1271
|
+
|
|
1272
|
+
- \`.lab/writing/framing.md\`
|
|
1273
|
+
- \`.lab/context/terminology-lock.md\`
|
|
1274
|
+
|
|
1275
|
+
## 命名审计规则
|
|
1276
|
+
|
|
1277
|
+
- 锁定不熟悉术语前,先查当前领域近期论文和其他 primary sources。
|
|
1278
|
+
- 如果当前领域没有稳定 canonical term,或相邻领域有可平移的表达,再查相邻领域。
|
|
1279
|
+
- 记录术语来源日志,说明看过哪些当前领域来源、哪些相邻领域来源,以及为何接受最终 wording。
|
|
1280
|
+
- 术语要说明是 canonical、adapted 还是 newly coined。
|
|
1281
|
+
- 尽量把对象说清楚:到底在 calibrate、rank、estimate 什么。
|
|
1282
|
+
- 不要用 acronym-first 命名。
|
|
1283
|
+
- 不要写成 AI 包装词、营销词或实现补丁名。
|
|
1284
|
+
- contribution bullets 必须和现有证据边界一致。
|
|
1285
|
+
|
|
1286
|
+
## 交互约束
|
|
1287
|
+
|
|
1288
|
+
- 开始前先简洁说明:当前 framing 问题、最强已支撑 claim、最大命名风险。
|
|
1289
|
+
- 如果某个缺失前提会改变命名边界或 wording,一次只问一个问题。
|
|
1290
|
+
- 先给 2-3 套 framing packs、trade-offs 和推荐项,再收敛。
|
|
1291
|
+
- 在进入 \`/lab:write\` 前保留 approval gate。
|
|
1292
|
+
`;
|
|
1293
|
+
|
|
1294
|
+
ZH_CONTENT[path.join(".claude", "skills", "lab", "stages", "framing.md")] =
|
|
1295
|
+
ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "framing.md")];
|
|
1296
|
+
|
|
1297
|
+
ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "write.md")] = `# \`/lab:write\` 阶段指南
|
|
1298
|
+
|
|
1299
|
+
## 必要输入
|
|
1300
|
+
|
|
1301
|
+
- 稳定的 \`report\` 工件
|
|
1302
|
+
- 已批准的 framing artifact:\`.lab/writing/framing.md\`
|
|
1303
|
+
- iteration reports
|
|
1304
|
+
- normalized summaries
|
|
1305
|
+
- reviewer notes(如果有)
|
|
1306
|
+
- \`skills/lab/references/paper-writing/\` 下的 vendored 参考
|
|
1307
|
+
|
|
1308
|
+
## 配置读取
|
|
1309
|
+
|
|
1310
|
+
- \`.lab/config/workflow.json\`
|
|
1311
|
+
|
|
1312
|
+
## 上下文读取
|
|
1313
|
+
|
|
1314
|
+
- \`.lab/context/mission.md\`
|
|
1315
|
+
- \`.lab/context/decisions.md\`
|
|
1316
|
+
- \`.lab/context/evidence-index.md\`
|
|
1317
|
+
|
|
1318
|
+
## 上下文写回
|
|
1319
|
+
|
|
1320
|
+
- \`.lab/context/state.md\`
|
|
1321
|
+
- \`.lab/context/evidence-index.md\`
|
|
1322
|
+
|
|
1323
|
+
## 小步写作规则
|
|
1324
|
+
|
|
1325
|
+
- 每轮只改一个 section 或一个明确子问题。
|
|
1326
|
+
- 最终稿必须是 LaTeX。
|
|
1327
|
+
- 只加载当前 section guide,不要一次加载全部章节参考。
|
|
1328
|
+
- 先写 mini-outline 再写 prose。
|
|
1329
|
+
- 如果缺少 framing artifact,不要继续写作,直接回到 \`/lab:framing\`。
|
|
1330
|
+
- 如果某个 claim 没有证据支撑,就削弱或删除。
|
|
1331
|
+
|
|
1332
|
+
## 必要工件
|
|
1333
|
+
|
|
1334
|
+
- \`.lab/writing/framing.md\`
|
|
1335
|
+
- \`.lab/writing/plan.md\`
|
|
1336
|
+
- \`.lab/writing/iterations/<n>.md\`
|
|
1337
|
+
- \`<deliverables_root>/paper/main.tex\`
|
|
1338
|
+
- \`<deliverables_root>/paper/sections/<section>.tex\`
|
|
1339
|
+
`;
|
|
1340
|
+
|
|
1341
|
+
ZH_CONTENT[path.join(".claude", "skills", "lab", "stages", "write.md")] =
|
|
1342
|
+
ZH_CONTENT[path.join(".codex", "skills", "lab", "stages", "write.md")];
|
|
1343
|
+
|
|
1344
|
+
ZH_CONTENT[path.join(".lab", ".managed", "templates", "framing.md")] = `# 论文 Framing
|
|
1345
|
+
|
|
1346
|
+
## 目标
|
|
1347
|
+
|
|
1348
|
+
- 范围:
|
|
1349
|
+
- 当前 paper-facing 问题:
|
|
1350
|
+
- 证据边界:
|
|
1351
|
+
|
|
1352
|
+
## Canonical Terminology Audit
|
|
1353
|
+
|
|
1354
|
+
- 当前领域应优先复用的术语:
|
|
1355
|
+
- 相邻领域可借用的术语:
|
|
1356
|
+
- 可接受的改写术语:
|
|
1357
|
+
- 需要谨慎的新造术语:
|
|
1358
|
+
- 必须说清楚的对象:
|
|
1359
|
+
- 应避免的术语:
|
|
1360
|
+
- 术语来源日志:
|
|
1361
|
+
|
|
1362
|
+
## Candidate Framing Packs
|
|
1363
|
+
|
|
1364
|
+
### 方案 1
|
|
1365
|
+
|
|
1366
|
+
- 论文题目:
|
|
1367
|
+
- 方法名:
|
|
1368
|
+
- 简称或 acronym:
|
|
1369
|
+
- 模块名:
|
|
1370
|
+
- Contribution bullets:
|
|
1371
|
+
- 优点:
|
|
1372
|
+
- 风险:
|
|
1373
|
+
|
|
1374
|
+
### 方案 2
|
|
1375
|
+
|
|
1376
|
+
- 论文题目:
|
|
1377
|
+
- 方法名:
|
|
1378
|
+
- 简称或 acronym:
|
|
1379
|
+
- 模块名:
|
|
1380
|
+
- Contribution bullets:
|
|
1381
|
+
- 优点:
|
|
1382
|
+
- 风险:
|
|
1383
|
+
|
|
1384
|
+
### 方案 3
|
|
1385
|
+
|
|
1386
|
+
- 论文题目:
|
|
1387
|
+
- 方法名:
|
|
1388
|
+
- 简称或 acronym:
|
|
1389
|
+
- 模块名:
|
|
1390
|
+
- Contribution bullets:
|
|
1391
|
+
- 优点:
|
|
1392
|
+
- 风险:
|
|
1393
|
+
|
|
1394
|
+
## 推荐方案
|
|
1395
|
+
|
|
1396
|
+
- 论文题目:
|
|
1397
|
+
- 方法名:
|
|
1398
|
+
- 简称或 acronym:
|
|
1399
|
+
- 模块名:
|
|
1400
|
+
- Contribution bullets:
|
|
1401
|
+
|
|
1402
|
+
## Forbidden Claims And Terms
|
|
1403
|
+
|
|
1404
|
+
- 不该 claim 的内容:
|
|
1405
|
+
- 不该使用的术语:
|
|
1406
|
+
- 原因:
|
|
1407
|
+
|
|
1408
|
+
## Approval Gate
|
|
1409
|
+
|
|
1410
|
+
- 已批准 framing:
|
|
1411
|
+
- 进入 \`/lab:write\` 前剩余问题:
|
|
1412
|
+
`;
|
|
1413
|
+
|
|
762
1414
|
function getLocalizedContent(relativePath, lang) {
|
|
763
1415
|
if (lang !== "zh") {
|
|
764
1416
|
return null;
|