Răsfoiți Sursa

feat(v13): architect produces story_frame / volume_map / 节奏原则 prose files [phase 5/8 part 1]

Rewrite the architect LLM prompt to produce three prose-density outline files
as the authoritative static 骨架 layer:

- outline/story_frame.md — 5 prose sections (主题基调 / 主角弧线 /
  核心冲突 / 世界底色 / 终局方向), ~1500 chars each, prose not bullets
- outline/volume_map.md — 6 prose sections, chapter-granular (要求写到
  "第 17 章让他回家" 级别的布局, Phase 3 planner 能从稀疏 memo 里读出
  动作的源头)
- outline/节奏原则.md (English: rhythm_principles.md) — 6 concrete
  rhythm principles (高潮间距 / 喘息频率 / 钩子密度 / 信息释放 /
  爽点节奏 / 情感推进), must be concrete not abstract

The architect becomes the one agent speaking prose density — v6 灵气 的起点。

ArchitectOutput interface extended with optional storyFrame / volumeMap /
rhythmPrinciples / roles fields; legacy storyBible / volumeOutline /
bookRules fields retained for downstream back-compat.
Ma 6 luni în urmă
părinte
comite
7a091bec6a

+ 4 - 2
packages/core/src/__tests__/architect.test.ts

@@ -140,8 +140,10 @@ describe("ArchitectAgent", () => {
     );
 
     const messages = chat.mock.calls[0]?.[0] as Array<{ role: string; content: string }>;
-    expect(messages[0]?.content).toContain("## 01_Worldview");
-    expect(messages[0]?.content).toContain("## Narrative Perspective");
+    // Phase 5: architect prompts describe the new prose sections. The English
+    // import prompt must not slip Chinese section headers into the system text.
+    expect(messages[0]?.content).toContain("story_frame");
+    expect(messages[0]?.content).toContain("volume_map");
     expect(messages[0]?.content).not.toContain("## 01_世界观");
     expect(messages[0]?.content).not.toContain("## 叙事视角");
   });

Fișier diff suprimat deoarece este prea mare
+ 628 - 508
packages/core/src/agents/architect.ts


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff