重构世界模拟器为模块化配方架构,完善创作编排、会话运行时与 Web UI,并清理过时技能。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-30 00:39:32 +08:00
parent 2b74c30d36
commit e670a5129c
167 changed files with 22955 additions and 5659 deletions

View File

@@ -0,0 +1,96 @@
import { describe, expect, it } from "vitest";
import { Blackboard } from "../src/blackboard/blackboard.js";
import { createSession } from "../src/runtime/phase-machine.js";
import {
buildDeclaredWorkerSkill,
resolveAcceptanceModeForWorker,
} from "../src/skills/declared-worker.js";
import { parseWorkerSetYaml } from "../src/skills/worker-set-parse.js";
describe("resolveAcceptanceModeForWorker", () => {
it("always confirms design-flow", () => {
const mode = resolveAcceptanceModeForWorker({
session: createSession(),
blackboard: new Blackboard(),
workerId: "design-flow",
});
expect(mode).toBe("user_confirmed");
});
it("maps review → user_confirmed and continue → no_confirmation", () => {
const bb = new Blackboard();
const yaml = JSON.stringify({
version: 1,
workers: [
{ ref: "world-simulator", acceptance: "continue" },
{ ref: "narrator", acceptance: "review" },
],
});
bb.write({ tag: "设计.worker集", content: yaml, source: "test" });
const session = {
...createSession(),
slots: {
...createSession().slots,
designInstanceReady: true,
uiLifecycleStage: "play",
},
};
expect(
resolveAcceptanceModeForWorker({
session,
blackboard: bb,
workerId: "world-simulator",
}),
).toBe("no_confirmation");
expect(
resolveAcceptanceModeForWorker({
session,
blackboard: bb,
workerId: "narrator",
}),
).toBe("user_confirmed");
});
});
describe("buildDeclaredWorkerSkill", () => {
it("builds runnable contract from entry + template", () => {
const parsed = parseWorkerSetYaml(
JSON.stringify({
version: 1,
narrative_guide: "残酷但不虐主",
core_premises: ["主角免疫"],
workers: [
{
ref: "narrator",
duty: "组装用户可见回复",
rationale: "需要可读终稿",
acceptance: "review",
outputs: ["输出.用户展示"],
context: {
static: ["设计.worker集"],
dynamic: ["运行.本轮.裁决"],
},
},
],
}),
);
const entry = parsed!.workers[0];
const { worker, promptBody } = buildDeclaredWorkerSkill({
skillPackName: "world-simulator",
entry,
template: {
label: "转述",
prompt_excerpt: "只改表达不改事实",
suggested_outputs: ["输出.用户展示"],
},
workerSet: parsed,
});
expect(worker.id).toBe("narrator");
expect(worker.outputTags).toContain("输出.用户展示");
expect(worker.inputTags).toContain("设计.worker集");
expect(promptBody).toContain("残酷但不虐主");
expect(promptBody).toContain("主角免疫");
expect(promptBody).toContain("声明驱动");
});
});