feat: 诊断(任务书 18 第一块):诊断数学、四种提交、一次运行跑多个实验、账本与材料、flow 诊断各步
消融默认关,关掉时解释阶段一并跳过;选诊断实验用信息价值减成本。 eval/diagnosis/research.json 为第三块配置。vocab 字段说明的出口文字随提示词一起改,见下一次提交的 prompts/ 与同文件改动(本次含在内)。 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -28,7 +28,7 @@ function assertReasons(list: StepList): void {
|
||||
}
|
||||
|
||||
test("步骤清单:完整流程全开", () => {
|
||||
const list = stepList(fullConfig());
|
||||
const list = listOf((f) => (f.diagnosis = { enabled: true, perResearcher: 2, maxExperiments: 4 }));
|
||||
assert.equal(list.preset, "full");
|
||||
assert.deepEqual(rows(list.study), [
|
||||
["freezeConfig", E, null],
|
||||
@@ -44,6 +44,13 @@ test("步骤清单:完整流程全开", () => {
|
||||
assert.deepEqual(rows(list.round), [
|
||||
["openRound", E, null],
|
||||
["carryOverPool", E, null],
|
||||
["diagnosisProposal", E, null],
|
||||
["diagnosisDedupe", E, null],
|
||||
["diagnosisPrediction", E, null],
|
||||
["selectDiagnosis", E, { name: "valueMinusCost", version: 1 }],
|
||||
["diagnosisImplementation", E, null],
|
||||
["diagnosisRun", E, null],
|
||||
["diagnosisSettle", E, null],
|
||||
["proposal", E, null],
|
||||
["dedupe", E, null],
|
||||
["firstPrediction", E, null],
|
||||
@@ -95,6 +102,13 @@ test("步骤清单:只关第一次预测", () => {
|
||||
assert.deepEqual(rows(list.round), [
|
||||
["openRound", E, null],
|
||||
["carryOverPool", E, null],
|
||||
["diagnosisProposal", S, null],
|
||||
["diagnosisDedupe", S, null],
|
||||
["diagnosisPrediction", S, null],
|
||||
["selectDiagnosis", S, null],
|
||||
["diagnosisImplementation", S, null],
|
||||
["diagnosisRun", S, null],
|
||||
["diagnosisSettle", S, null],
|
||||
["proposal", E, null],
|
||||
["dedupe", E, null],
|
||||
["firstPrediction", S, null],
|
||||
@@ -128,6 +142,13 @@ test("步骤清单:只关挑刺与回应,协议照样冻结", () => {
|
||||
assert.deepEqual(rows(list.round), [
|
||||
["openRound", E, null],
|
||||
["carryOverPool", E, null],
|
||||
["diagnosisProposal", S, null],
|
||||
["diagnosisDedupe", S, null],
|
||||
["diagnosisPrediction", S, null],
|
||||
["selectDiagnosis", S, null],
|
||||
["diagnosisImplementation", S, null],
|
||||
["diagnosisRun", S, null],
|
||||
["diagnosisSettle", S, null],
|
||||
["proposal", E, null],
|
||||
["dedupe", E, null],
|
||||
["firstPrediction", E, null],
|
||||
@@ -154,13 +175,20 @@ test("步骤清单:只关挑刺与回应,协议照样冻结", () => {
|
||||
]);
|
||||
});
|
||||
|
||||
test("步骤清单:只关消融,解释照样写,选格没有规则", () => {
|
||||
test("步骤清单:只关消融,解释也跳过,选格没有规则", () => {
|
||||
const list = listOf((f) => (f.ablation = { enabled: false }));
|
||||
assertReasons(list);
|
||||
assert.deepEqual(rows(list.study), rows(stepList(fullConfig()).study));
|
||||
assert.deepEqual(rows(list.round), [
|
||||
["openRound", E, null],
|
||||
["carryOverPool", E, null],
|
||||
["diagnosisProposal", S, null],
|
||||
["diagnosisDedupe", S, null],
|
||||
["diagnosisPrediction", S, null],
|
||||
["selectDiagnosis", S, null],
|
||||
["diagnosisImplementation", S, null],
|
||||
["diagnosisRun", S, null],
|
||||
["diagnosisSettle", S, null],
|
||||
["proposal", E, null],
|
||||
["dedupe", E, null],
|
||||
["firstPrediction", E, null],
|
||||
@@ -177,7 +205,7 @@ test("步骤清单:只关消融,解释照样写,选格没有规则", () =>
|
||||
["informationAccount", E, null],
|
||||
["adopt", E, null],
|
||||
["listCells", S, null],
|
||||
["explanation", E, null],
|
||||
["explanation", S, null],
|
||||
["selectCells", S, null],
|
||||
["ablationImplementation", S, null],
|
||||
["ablationVerification", S, null],
|
||||
@@ -205,6 +233,13 @@ test("步骤清单:朴素循环", () => {
|
||||
assert.deepEqual(rows(list.round), [
|
||||
["openRound", E, null],
|
||||
["carryOverPool", S, null], // 候选不留池
|
||||
["diagnosisProposal", S, null], // 不诊断
|
||||
["diagnosisDedupe", S, null], // 不诊断
|
||||
["diagnosisPrediction", S, null], // 不诊断
|
||||
["selectDiagnosis", S, null], // 不诊断
|
||||
["diagnosisImplementation", S, null], // 不诊断
|
||||
["diagnosisRun", S, null], // 不诊断
|
||||
["diagnosisSettle", S, null], // 不诊断
|
||||
["proposal", E, null],
|
||||
["dedupe", E, null], // 判重照常
|
||||
["firstPrediction", S, null], // 不预测
|
||||
@@ -264,3 +299,30 @@ test("步骤清单:换规则后清单里的规则跟着换", () => {
|
||||
assert.deepEqual(rule("selectBatch"), { name: "uniformRandom", version: 1 });
|
||||
assert.deepEqual(rule("selectCells"), { name: "randomSameCount", version: 1 });
|
||||
});
|
||||
|
||||
test("步骤清单:诊断开、消融关(现行配置):诊断七步执行,消融七步(含解释)跳过", () => {
|
||||
const list = listOf((f) => {
|
||||
f.diagnosis = { enabled: true, perResearcher: 2, maxExperiments: 4 };
|
||||
f.ablation = { enabled: false };
|
||||
});
|
||||
assertReasons(list);
|
||||
const status = (id: string) => list.round.find((s) => s.id === id)!.status;
|
||||
for (const id of [
|
||||
"diagnosisProposal", "diagnosisDedupe", "diagnosisPrediction", "selectDiagnosis",
|
||||
"diagnosisImplementation", "diagnosisRun", "diagnosisSettle",
|
||||
]) {
|
||||
assert.equal(status(id), "execute", id);
|
||||
}
|
||||
for (const id of [
|
||||
"listCells", "explanation", "selectCells", "ablationImplementation", "ablationVerification", "ablationRun", "settle",
|
||||
]) {
|
||||
assert.equal(status(id), "skip", id);
|
||||
}
|
||||
// 诊断七步排在留池之后、提案之前(方法.md 4.3"诊断"一段)。
|
||||
const ids = list.round.map((s) => s.id);
|
||||
assert.deepEqual(ids.slice(ids.indexOf("carryOverPool"), ids.indexOf("proposal") + 1), [
|
||||
"carryOverPool", "diagnosisProposal", "diagnosisDedupe", "diagnosisPrediction", "selectDiagnosis",
|
||||
"diagnosisImplementation", "diagnosisRun", "diagnosisSettle", "proposal",
|
||||
]);
|
||||
assert.deepEqual(list.round.find((s) => s.id === "selectDiagnosis")!.rule, { name: "valueMinusCost", version: 1 });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user