Переглянути джерело

chore: untrack docs directory

Ma 6 місяців тому
батько
коміт
a298925339

+ 0 - 229
docs/plans/2026-04-11-planner-llm-chapter-brief-refactor.md

@@ -1,229 +0,0 @@
-# Planner LLM Chapter Brief Refactor Implementation Plan
-
-> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
-
-**Goal:** Replace the current `goal + mustKeep` planning contract with an LLM-ready chapter-brief contract, dissolve `ComposerAgent` into pure utilities over time, and preserve a rule-based fallback while the new planner stabilizes.
-
-**Architecture:** Keep the current writing pipeline running by introducing the new structures in parallel first. The refactor proceeds in three layers: new chapter-brief models and planning-material retrieval, new LLM planner prompt/output path with fallback to the legacy planner, then composer de-agentization and writer/runtime consumption of the brief/context package.
-
-**Tech Stack:** TypeScript, Vitest, Zod, existing InkOS `BaseAgent`/pipeline/state utilities.
-
----
-
-### Task 1: Introduce chapter-brief models in parallel with legacy intent
-
-**Files:**
-- Modify: `packages/core/src/models/input-governance.ts`
-- Modify: `packages/core/src/__tests__/models.test.ts`
-
-**Step 1: Write the failing tests**
-
-- Add schema tests for a new `ChapterBriefSchema` covering:
-  - `goal`
-  - `chapterType`
-  - `isGoldenOpening`
-  - `beatOutline`
-  - `hookPlan`
-  - `propsAndSetting`
-  - `dormantReason`
-- Add validation tests proving:
-  - brief accepts structured fields without `mustKeep`
-  - hook plan only requires active hook moves, not full dormant lists
-
-**Step 2: Run test to verify it fails**
-
-Run:
-
-```bash
-pnpm --dir packages/core exec vitest run src/__tests__/models.test.ts -t "ChapterBriefSchema"
-```
-
-Expected: FAIL because `ChapterBriefSchema` does not exist yet.
-
-**Step 3: Write minimal implementation**
-
-- Add new Zod schemas and exported types beside the existing legacy intent schemas.
-- Do not remove `ChapterIntentSchema` yet.
-
-**Step 4: Run test to verify it passes**
-
-Run the same command and expect PASS.
-
-### Task 2: Extract deterministic planning-material retrieval
-
-**Files:**
-- Create: `packages/core/src/utils/planning-materials.ts`
-- Create/Modify: `packages/core/src/__tests__/planning-materials.test.ts`
-- Modify: `packages/core/src/agents/planner.ts`
-
-**Step 1: Write the failing tests**
-
-- Add a test for `gatherPlanningMaterials(...)` that verifies it returns:
-  - current focus / author intent
-  - matched outline slice
-  - chapter summaries / chronicle
-  - active hooks
-  - previous ending hook
-- Add a test proving it does **not** require prior-chapter full正文 to build the planning packet.
-
-**Step 2: Run test to verify it fails**
-
-```bash
-pnpm --dir packages/core exec vitest run src/__tests__/planning-materials.test.ts
-```
-
-Expected: FAIL because the utility does not exist.
-
-**Step 3: Write minimal implementation**
-
-- Move planner-side file loading and memory retrieval into `gatherPlanningMaterials(...)`.
-- Keep it deterministic and pure from the planner’s point of view.
-
-**Step 4: Run test to verify it passes**
-
-Run the same command and expect PASS.
-
-### Task 3: Add planner prompt builder and LLM output parser
-
-**Files:**
-- Create: `packages/core/src/agents/planner-prompts.ts`
-- Modify: `packages/core/src/agents/planner.ts`
-- Create/Modify: `packages/core/src/__tests__/planner-prompts.test.ts`
-- Modify: `packages/core/src/__tests__/planner.test.ts`
-
-**Step 1: Write the failing tests**
-
-- Add prompt tests proving the planner prompt uses:
-  - chronicle/summaries
-  - previous ending hook
-  - active hooks to move
-  - no raw `mustKeep`
-- Add planner tests proving:
-  - the new planner path can parse structured brief JSON
-  - failed LLM planning falls back to the legacy rule-based intent path
-
-**Step 2: Run tests to verify they fail**
-
-```bash
-pnpm --dir packages/core exec vitest run \
-  src/__tests__/planner-prompts.test.ts \
-  src/__tests__/planner.test.ts
-```
-
-Expected: FAIL because the prompt builder and parser do not exist.
-
-**Step 3: Write minimal implementation**
-
-- Build a prompt builder that asks for `ChapterBrief` only.
-- In `PlannerAgent`, add:
-  - `planChapterLegacy(...)`
-  - `planChapterWithLLM(...)`
-  - fallback to legacy when the LLM path throws / returns invalid output
-- Keep returning the old `PlanChapterOutput` shape for now, but attach the new brief in parallel.
-
-**Step 4: Run tests to verify it passes**
-
-Run the same command and expect PASS.
-
-### Task 4: De-agentize composer into pure utilities without breaking runner
-
-**Files:**
-- Create: `packages/core/src/utils/context-assembly.ts`
-- Create: `packages/core/src/utils/runtime-writer.ts`
-- Modify: `packages/core/src/agents/composer.ts`
-- Modify: `packages/core/src/__tests__/composer.test.ts`
-
-**Step 1: Write the failing tests**
-
-- Add/adjust tests so they target:
-  - selected-context assembly
-  - runtime artifact writing
-  - trace generation
-- Keep coverage equivalent to the current `ComposerAgent` expectations.
-
-**Step 2: Run tests to verify it fails**
-
-```bash
-pnpm --dir packages/core exec vitest run src/__tests__/composer.test.ts
-```
-
-Expected: FAIL because the new utility boundaries do not exist.
-
-**Step 3: Write minimal implementation**
-
-- Move retrieval/assembly logic from `ComposerAgent` into utility functions.
-- Keep `ComposerAgent` as a thin shim initially so pipeline call sites remain stable.
-
-**Step 4: Run test to verify it passes**
-
-Run the same command and expect PASS.
-
-### Task 5: Switch writer/runtime consumption from intent-heavy contract to brief-driven contract
-
-**Files:**
-- Modify: `packages/core/src/agents/writer.ts`
-- Modify: `packages/core/src/utils/governed-context.ts`
-- Modify: `packages/core/src/pipeline/runner.ts`
-- Modify: `packages/core/src/pipeline/persisted-governed-plan.ts`
-- Modify: `packages/core/src/__tests__/writer.test.ts`
-- Modify: `packages/core/src/__tests__/pipeline-runner.test.ts`
-- Modify: `packages/core/src/__tests__/persisted-governed-plan.test.ts`
-
-**Step 1: Write the failing tests**
-
-- Add tests proving writer now consumes:
-  - brief goal
-  - beat outline
-  - hook plan
-  - props and setting
-- Add persisted plan tests that handle both legacy and new brief formats during the transition.
-
-**Step 2: Run tests to verify they fail**
-
-```bash
-pnpm --dir packages/core exec vitest run \
-  src/__tests__/writer.test.ts \
-  src/__tests__/pipeline-runner.test.ts \
-  src/__tests__/persisted-governed-plan.test.ts
-```
-
-Expected: FAIL because the writer/runtime still depend on `mustKeep`-heavy plan data.
-
-**Step 3: Write minimal implementation**
-
-- Use the new brief as the primary writer-facing contract.
-- Keep compatibility adapters for persisted legacy plans during the transition.
-
-**Step 4: Run tests to verify it passes**
-
-Run the same command and expect PASS.
-
-### Task 6: Final cleanup and verification
-
-**Files:**
-- Modify: `packages/core/src/index.ts`
-- Optional cleanup: `packages/core/src/agents/composer.ts` (thin wrapper or delete if safe)
-
-**Step 1: Verify focused suite**
-
-```bash
-pnpm --dir packages/core exec vitest run \
-  src/__tests__/models.test.ts \
-  src/__tests__/planning-materials.test.ts \
-  src/__tests__/planner-prompts.test.ts \
-  src/__tests__/planner.test.ts \
-  src/__tests__/composer.test.ts \
-  src/__tests__/writer.test.ts \
-  src/__tests__/pipeline-runner.test.ts \
-  src/__tests__/persisted-governed-plan.test.ts
-pnpm --dir packages/core run build
-```
-
-Expected: PASS.
-
-**Step 2: Commit**
-
-```bash
-git add packages/core/src docs/plans/2026-04-11-planner-llm-chapter-brief-refactor.md
-git commit -m "refactor(planner): introduce chapter brief planning flow"
-```

+ 0 - 165
docs/specs/skill-distribution-proposal.md

@@ -1,165 +0,0 @@
-# Skill Distribution Proposal: 写作方法论的分层注入
-
-## 现状诊断
-
-### 当前架构
-
-```
-architect(LLM)→ planner(纯规则)→ composer(LLM)→ writer(LLM)→ auditor(LLM)
-```
-
-### 各 agent 的 skill 认知
-
-| Agent | 用 LLM? | 知道 skill? | 实际情况 |
-|-------|---------|-------------|---------|
-| **architect** | 是 | 部分 | 有"黄金三章法则""冲突开篇法"(硬编码�� prompt 里),但没有情绪升级、代入感、流水账修法 |
-| **planner** | **否(纯规则引擎)** | 极少 | 只有 mood/scene/title directive(基于 cadence 分析的机械规则),不知道黄金三章、欲望驱动、情绪升级 |
-| **composer** | 是 | 无 | 组装 contextPackage + ruleStack,不注入任何写作方法论 |
-| **writer** | 是 | **全部(4500 tokens)** | 9 个方法论模块全塞在 system prompt 里 |
-| **auditor** | 是 | 部分 | 有"爽点虚化""流水账"审查维度,但不知道"欲望驱动""情绪升级""盐溶于汤" |
-| **reviser** | 是 | 无 | 只有 tiered issues,不知道写作方法论 |
-
-### 核心问题
-
-1. planner 是纯规则引擎,不调 LLM → 不能通过 prompt 注入 skill → 只能硬编码
-2. writer 扛了全部 skill(4500 tokens)→ 注意力分散 → 方法论被 lost in the middle
-3. architect 有一些 skill(黄金三章、冲突开篇)但不完整
-4. auditor 有审查维度但不知道对应的写作技法
-5. 层间没有 skill 传递机制 → planner 不知道黄金三章 → 生成的 goal 不包含"ch1 冲突开场"指令 → writer 的黄金三章规则被 goal 覆盖
-
-## 方案:skill 按职责分层
-
-### 原则
-
-每个 agent 只拿它那个层级能用的 skill。不是"谁都塞全套",是"谁做什么决策就给它什么工具"。
-
-### 层级划分
-
-```
-┌─────────────────────────────────────────────────────────┐
-│ L1: 结构层 skill(architect + planner)                   │
-│     · 决定"故事怎么组织"                                  │
-│     · 黄金开篇(按语言区分):                               │
-│       中文:黄金3章 ch1冲突 ch2金手指 ch3短期目标             │
-│       英文:黄金5章 ch1冲突 ch2金手指 ch3目标                │
-│              ch4第一个大爽点 ch5提升赌注/新势力介入            │
-│     · 情绪波形:压制→释放→更大压制→更大释放                 │
-│     · 节奏控制:连续 2 章高压后必须给呼吸空间               │
-│     · 日常段必须为主线服务(万物皆为"饵")                  │
-│     · 开篇场景限制:最多 1-2 场景、3 角色                  │
-│     · 付费卡点意识(按语言区分):                           │
-│       中文:第15章付费墙,但前3章决定留存                    │
-│       英文:第6-8章付费墙,前5章必须建立强追读动力           │
-├─────────────────────────────────────────────────────────┤
-│ L2: 内容层 skill(writer)                                │
-│     · 决定"每段话怎么写"                                  │
-│     · 动作外化情绪(不写"他感到愤怒")                     │
-│     · 盐溶于汤(价值观通过行为传达)                       │
-│     · 五感描写(视觉/听觉/嗅觉/触觉/味觉)               │
-│     · 具体化/可视化/熟悉感                                │
-│     · 句式控制(少用"虽然但是"/"然而"/"了")               │
-│     · 通过事件立人设(不用外貌描写堆砌)                   │
-│     · 语言区分度(不同角色说话方式不同)                   │
-├─────────────────────────────────────────────────────────┤
-│ L3: 审查层 skill(auditor + reviser)                     │
-│     · 决定"写得好不好"                                    │
-│     · 流水账检测:有没有无冲突的���常流水叙述                │
-│     · 欲望缺口检测:有没有制造读者的情绪缺口               │
-│     · 人设一致性:角色行为是否由"经历+利益+性格"驱动        │
-│     · 爽点密度:本章有没有至少一个读者满足点               │
-│     · 代入感检查:主角困境是否有普遍性共鸣                 │
-│     · AI-tell 检测:已有的确定性检查                       │
-└─────────────────────────────────────────────────────────┘
-```
-
-### 具体实现
-
-#### L1: architect + planner
-
-**architect**(已有 LLM 调用):
-- 当前已有:黄金三章法则、冲突开篇法 → 保留
-- 需新增:情绪波形设计(volume_outline 里应该标注每卷的情绪曲线)
-- 需新增:付费卡点意识(前 6-8 章的 outline 要特别密集)
-
-**planner**(纯规则引擎,不调 LLM):
-- 当前已有:moodDirective(连续高压后降调)、sceneDirective(连续同场景后换场)→ 保留
-- 需新增的**硬编码规则**:
-  ```typescript
-  // 黄金开篇(按语言区分)
-  const goldenLimit = language === "en" ? 5 : 3;
-  if (chapterNumber <= goldenLimit) {
-    intent.mustKeep.push(GOLDEN_CHAPTER_RULES[language][chapterNumber]);
-  }
-
-  // 付费卡点前强化钩子
-  const paywallZone = language === "en" ? [4, 8] : [10, 15];
-  if (chapterNumber >= paywallZone[0] && chapterNumber <= paywallZone[1]) {
-    const msg = language === "en"
-      ? "Paywall approaching — chapter must end with a strong cliffhanger that makes the reader unable to stop"
-      : "本章结尾必须有强悬念钩子,读者即将进入付费区";
-    intent.mustKeep.push(msg);
-  }
-
-  // 日常段服务主线
-  if (cadence.moodPressure?.pressure === "low") {
-    const msg = language === "en"
-      ? "This quiet chapter must still plant a hook or advance a relationship — no pure filler"
-      : "日常段必须埋伏笔或推关系,不可纯填充";
-    intent.softConstraints.push(msg);
-  }
-  ```
-- 关键:planner 不是 LLM,不能"理解" skill → 只能把 skill 翻译成具体的 mustKeep/mustAvoid/directive 规则
-
-#### L2: writer
-
-- 从 system prompt 移除 9 个完整方法论模块(-4500 tokens)
-- 替换为速查卡(~800 tokens)—— 只有规则,不需要例子(因为 L1 已经确保结构正确)
-- 完整方法论写进 style_guide.md(writer 读 style_guide,进入上下文但不占 system prompt 核心位置)
-
-速查卡内容:
-```
-## 写作铁律
-- 情绪用动作外化,不写"他感到愤怒",写"他捏碎了茶杯"
-- 盐溶于汤:价值观通过行为传达
-- 配角有自己的算盘,主角压服聪明人
-- 五感代入:潮湿的短袖黏在后背上、医院消毒水的味
-- 具体化:不写"大城市",写"三环堵了四十分钟的出租车后座"
-- 句式:少用"虽然但是/然而/因此",用角色吐槽替代
-- 禁止:资料卡式介绍角色 / 一次引入超3角色 / 众人齐声惊呼
-- 人设三问:为什么?符合人设?读者突兀?
-```
-
-#### L3: auditor
-
-- 当前审查维度已有:爽点虚化、流水账 → 保留
-- 需新增维度描述(不是新代码,是审稿 prompt 里的维度说明):
-  ```
-  维度 N: 欲望缺口——本章是否制造了读者的情绪缺口(压制后期待释放)?
-  维度 M: 代入感——主角的困境是否有普遍性?读者能否觉得"我也会这么做"?
-  ```
-
-### 改动量估算
-
-| 文件 | 改动 | 大小 |
-|------|------|------|
-| `planner.ts` | 加黄金三章/付费卡点/日常服务主线的硬编码规则 | ~30 行 |
-| `writer-prompts.ts` | 9 个完整模块 → 1 个速查卡函数 | -3500 tokens, +800 tokens |
-| `writer.ts` initBook 路径 | 把完整方法论写入 style_guide.md | ~20 行 |
-| `continuity.ts` | 审稿维度描述加欲望缺口和代入感 | ~10 行 |
-| `architect.ts` | 加情绪波形和付费卡点提示 | ~15 行 |
-
-### 效果预期
-
-| 指标 | 改前 | 改后 |
-|------|------|------|
-| writer system prompt tokens | ~8000 | ~4300(-46%)|
-| planner 黄金三章感知 | ❌ | ✅(硬编码规则)|
-| planner 付费卡点意识 | ❌ | ✅(ch4-8 加强钩子)|
-| auditor 欲望缺口检测 | ❌ | ✅ |
-| skill 跨层传递 | writer 独扛 | 各层各司其职 |
-
-### 风险
-
-1. planner 是纯规则引擎,硬编码规则不如 LLM prompt 灵活 → 但 planner 的决策本来就是结构性的,硬编码更可靠
-2. writer 速查卡可能不如完整版有效 → 但 style_guide 有完整版兜底,只是注意力层级低一些
-3. 改动涉及 4 个 agent → 需要回归测试 → 但每个改动都很小(10-30 行)

+ 0 - 211
docs/specs/v10-skill-assignment.md

@@ -1,211 +0,0 @@
-# V10 Skill Assignment: 谁拿谁的
-
-## Agent 特性
-
-| Agent | 调 LLM? | 职责 | Skill 注入方式 |
-|-------|---------|------|---------------|
-| **architect** | 是 | 设计 volume_outline/story_bible/book_rules | prompt |
-| **planner** | **否(纯规则引擎)** | 生成 chapterIntent(goal/directives/hooks) | **硬编码 TypeScript** |
-| **composer** | 是 | 组装 contextPackage + ruleStack | prompt(但主要是选择逻辑,skill 需求低) |
-| **writer** | 是 | 写正文 | prompt(速查卡)+ style_guide(完整版) |
-| **auditor** | 是 | 审稿打分 | prompt(审查维度描述) |
-| **reviser** | 是 | 修复章节 | prompt(和 writer 共享内容层 skill) |
-
-## 全部 Skill 清单 + 分配
-
-### S01: 黄金开篇(中文3章/英文5章)
-
-内容:ch1 冲突开场、ch2 亮金手指、ch3 短期目标、[EN: ch4 大爽点、ch5 提升赌注]
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **planner** | 硬编码规则 | `if chapterNumber <= goldenLimit → mustKeep.push("ch1必须冲突开场/ch2必须亮金手指/...")` |
-| **writer** | ~~system prompt~~ | 不需要了——planner 已经把黄金三章翻译成了具体的 mustKeep 指令 |
-| architect | prompt | volume_outline 设计时标注前3/5章的节奏要求 |
-
-### S02: 付费卡点意识
-
-内容:中文第15章付费墙、英文第6-8章付费墙
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **planner** | 硬编码规则 | `if chapterNumber in paywallZone → mustKeep.push("本章结尾必须有最强钩子")` |
-| **architect** | prompt | "前6-8章的 outline 节奏要比后面更密集" |
-
-### S03: 情绪波形(压制→释放→更大压制→更大释放)
-
-内容:情绪不能一直高压也不能一直平淡,要有波形
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **planner** | 硬编码规则(已有) | `moodDirective`: 连续高压后强制降调。**需新增**:连续低压后强制升压 |
-| **architect** | prompt | volume_outline 里标注每卷的情绪曲线走势 |
-| auditor | 审查维度 | "本章情绪是否与前2章形成波形变化" |
-
-### S04: 日常段服务主线(万物皆为"饵")
-
-内容:日常段必须埋伏笔/推关系/建反差,纯填充即流水账
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **planner** | 硬编码规则 | 如果 cadence 检测到当前是"日常/喘息"类型章 → `softConstraints.push("日常段必须为主线服务")` |
-| **auditor** | 审查维度 | "本章日常段落是否与主线关联(伏笔/关系/反差)" |
-
-### S05: 动作外化情绪 + 去 AI 味
-
-内容:不写"他感到愤怒"写"他捏碎了茶杯"。少用"虽然但是/然而/了"
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **writer** | 速查卡 | "情绪用动作外化 / 句式少用转折词 / 减少了字" |
-| **writer** | style_guide | 完整正反例对照表 |
-| **reviser** | prompt | 同 writer 速查卡(修复时也要遵循) |
-| auditor | 审查维度 | AI-tell 检测(已有确定性检查) |
-
-### S06: 盐溶于汤
-
-内容:价值观通过行为传达,不喊口号
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **writer** | 速查卡 | "价值观通过行为传达,不喊口号" |
-| **writer** | style_guide | 正反例 |
-
-### S07: 六步走人物心理分析
-
-内容:处境→动机→信息边界→性格过滤→行为选择→情绪外化
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **writer** | style_guide | 完整六步(太长不适合速查卡) |
-| **auditor** | 审查维度 | "角色行为是否有逻辑链(动机→选择→后果)" |
-
-### S08: 人设防崩三问
-
-内容:为什么?符合人设?读者突兀?
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **writer** | 速查卡 | 三问(精简) |
-| **auditor** | 审查维度 | "角色行为是否由'经历+利益+性格'驱动" |
-
-### S09: 配角 B 面
-
-内容:配角有自己的算盘、语言区分度、拒绝集体反应
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **writer** | 速查卡 | "配角有自己算盘 / 不同角色说话方式不同 / 不写众人齐声惊呼" |
-| **writer** | style_guide | 完整构建方法 |
-
-### S10: 读者心理学(期待管理/信息落差/锚定效应)
-
-内容:让读者比角色多知道一点=紧张,少知道一点=好奇
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **planner** | 硬编码规则 | 当 hook 即将回收时,提前 1-2 章在 mustKeep 里加"制造信息落差" |
-| **writer** | 速查卡 | "信息落差:多知道=紧张,少知道=好奇" |
-
-### S11: 欲望驱动(基础欲望/主动欲望/情绪缺口)
-
-内容:制造情绪缺口→读者期待释放→释放超过预期
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **planner** | 硬编码规则 | 如果 hook 进入 eligibleResolve → 在前 1 章的 mustKeep 加"加重压制,为下章释放蓄力" |
-| **writer** | 速查卡 | "释放点必须超过读者预期,只满足70%等于失败" |
-| **auditor** | 审查维度 | "本章是否制造了情绪缺口或完成了情绪释放" |
-
-### S12: 强情绪升级法
-
-内容:坏事叠坏事,每层比上一层过分
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **writer** | style_guide | 完整的递进示例 |
-| **writer** | 速查卡 | "坏事叠坏事,每层比上一层过分" |
-
-### S13: 代入感技法(自然信息交代/画面代入/共鸣锚点)
-
-内容:具体化/可视化/熟悉感/五感描写
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **writer** | 速查卡 | "具体化——不写大城市,写三环堵了四十分钟的出租车后座" |
-| **writer** | style_guide | 完整六大支柱 |
-
-### S14: 场景连续性约束
-
-内容:不得连续2章以上在同一空间类型
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **planner** | 硬编码规则(已有) | `sceneDirective`: 连续同场景后强制换场 |
-
-### S15: 写前自检清单
-
-内容:大纲锚定、利益最大化、冲突发起者、配角诉求、信息越界、章尾钩子
-
-| 给谁 | 怎么给 | 给什么 |
-|------|--------|--------|
-| **writer** | style_guide | 完整清单(在 PRE_WRITE_CHECK 输出时执行) |
-
-## 汇总:每个 Agent 拿到什么
-
-### Architect(prompt 补充)
-- S02: 前6-8章 outline 节奏要更密集
-- S03: volume_outline 标注情绪曲线
-- 已有:黄金三章法则、冲突开篇法
-
-### Planner(硬编码规则)
-- S01: 黄金开篇 → mustKeep(**新增**)
-- S02: 付费卡点 → mustKeep(**新增**)
-- S03: 情绪波形 → moodDirective(已有降调,**需加升压**)
-- S04: 日常服务主线 → softConstraints(**新增**)
-- S10: 信息落差 → mustKeep(**新增**,结合 hook 回收时机)
-- S11: 欲望驱动 → mustKeep(**新增**,hook 回收前加重压制)
-- S14: 场景连续性 → sceneDirective(已有)
-
-### Writer(速查卡 ~800 tokens + style_guide 完整版)
-速查卡:
-- S05: 动作外化 / 句式控制 / 去AI味
-- S06: 盐溶于汤
-- S08: 人设三问
-- S09: 配角有算盘 / 语言区分 / 不齐声惊呼
-- S10: 信息落差
-- S11: 释放超过预期
-- S12: 坏事叠坏事
-- S13: 具体化/五感
-
-style_guide(完整版):
-- S05: 正反例对照表
-- S07: 六步走心理分析
-- S09: 配角完整构建方法
-- S12: 强情绪递进完整示例
-- S13: 代入感六大支柱
-- S15: 写前自检清单
-
-### Auditor(审查维度补充)
-- S03: 情绪波形检查
-- S04: 日常段主线关联检查
-- S07: 角色行为逻辑链检查
-- S08: 人设一致性检查
-- S11: 情绪缺口/释放检查
-- 已有:爽点虚化、流水账、AI-tell
-
-### Reviser(prompt 补充)
-- 速查卡同 writer(修复时也要遵循内容层 skill)
-
-## 改动清单
-
-| 优先级 | 文件 | 改什么 | 行数 |
-|--------|------|--------|------|
-| P0 | planner.ts | S01 黄金开篇 + S02 付费卡点 + S04 日常服务主线硬编码 | ~40 行 |
-| P0 | writer-prompts.ts | 9 个完整模块 → 速查卡函数 | 改写 ~50 行 |
-| P0 | writer.ts initBook | 完整方法论写入 style_guide.md | ~30 行 |
-| P1 | planner.ts | S10 信息落差 + S11 欲望驱动(结合 hook 时机) | ~20 行 |
-| P1 | planner.ts | S03 升压(已有降调,加反向) | ~10 行 |
-| P1 | continuity.ts | S03/S04/S07/S08/S11 审查维度描述 | ~30 行 |
-| P2 | architect.ts | S02/S03 outline 节奏标注 | ~15 行 |
-| P2 | reviser.ts | 速查卡注入 | ~10 行 |

+ 0 - 94
docs/specs/webnovel-writer-gap-analysis-stars.md

@@ -1,94 +0,0 @@
-# InkOS vs webnovel-writer 星级差距总览
-
-## 维度评级
-
-| 维度 | webnovel-writer | InkOS | 差距说明 |
-|------|:-:|:-:|---|
-| outline 粒度 | ★★★★★ | ★★☆ | 每章16字段 vs 卷级描述 |
-| 写前 brief | ★★★★★ | ★★☆ | 3层8面板执行包 vs 一句goal |
-| Anti-AI | ★★★★★ | ★★☆ | 7层200+词+改写算法+阻断 vs 确定性检测+提示 |
-| 审稿深度 | ★★★★★ | ★★★☆ | 6独立checker vs 1个auditor(但InkOS有33维度) |
-| 伏笔管理 | ★★★★ | ★★★★ | 差距小(两者都有紧迫度排序) |
-| 节奏控制 | ★★★★★ | ★★☆ | Strand Weave+时间系统 vs cadence mood分析 |
-| 状态管理 | ★★★★ | ★★★★ | 差距小(两者都有持久化状态) |
-| 实体管理 | ★★★★★ | ★★☆ | 置信度实体提取 vs 无 |
-| 题材 Profile | ★★★★★ | ★★★ | 12+题材定制参数+反套路库 vs 基础genre profile |
-| 自动化程度 | ★★☆ | ★★★★★ | 半自动(Claude Code触发) vs 全自动pipeline |
-| 多模型支持 | ★☆ | ★★★★★ | 绑死Claude vs 任意LLM |
-| Hook 调度 | ★★★ | ★★★★★ | 简单紧迫度排序 vs lifecycle-aware timing profile |
-| 导入/续写 | ☆ | ★★★★★ | 无 vs continuation/series/fanfic 三模式 |
-
-## 版本演进分数追踪
-
-### 断崖残局(玄幻生存)
-| 版本 | 分数 | 核心问题 |
-|------|------|----------|
-| v6 | 92 | 基线最高 |
-| v8 | 83.5 | 多门槛veto压掉修复 |
-| v9r2 | 89.5 | 评分循环生效 |
-| v9r3 | 90.5 | 控制层泄漏拉低到84(sanitize前) |
-| v9 final | 84 | H001/"前几章"/"金手指"泄漏 |
-| v10 | 72 | "第一章"/"小爽点"新型泄漏(mustKeep污染) |
-
-### 旧城暗号(都市悬疑)
-| 版本 | 分数 | 核心问题 |
-|------|------|----------|
-| v6 | 92 | 基线 |
-| v8 | 76.5 | 最大跌幅 |
-| v9r2 | 91 | 恢复 |
-| v9r3 | 93 | 历史最高(sanitize前) |
-| v9 final | 90 | ch5 有H-code泄漏 |
-| v10 | 91 | 追读性9/10,接近可上架 |
-
-### 斗破同人(同人)
-| 版本 | 分数 | 核心问题 |
-|------|------|----------|
-| v8 | 73 | 基线 |
-| v9r2 | 81 | 提升 |
-| v9r3 | 82.5 | 微升 |
-| v9 final | 82 | 节奏慢(退婚跨3章) |
-| v10 | 78 | 更慢(5章1个beat),缺beat decomposition |
-
-### 三体续写(续写模式)
-| 版本 | 分数 | 核心问题 |
-|------|------|----------|
-| v8 | 56 | 会议室死循环 |
-| v9 final | 85 | 大幅提升,偏家庭日常 |
-
-### 三体系列(系列模式)
-| 版本 | 分数 | 核心问题 |
-|------|------|----------|
-| v8 | 82 | 重述原著 |
-| v9r3 (bug) | 69.4 | planner锚错到卷一 |
-| v9 final | 90 | planner fix后outline全部落地 |
-| v10 | 92 | 历史最高,钟绍林象棋场景最佳 |
-
-## 关键根因追踪
-
-### 问题1: 控制层泄漏
-- v9: H001/H002/"前几章"/"金手指" → 修了narrative-control sanitize
-- v10: "第一章"/"这一章"/"小爽点" → 根因:mustKeep槽被方法论污染
-- 根本修法:craft rules 从 mustKeep 拆出去,planner 做语义编译
-
-### 问题2: 节奏慢/beat稀疏
-- 根因:系统缺少"volume outline → chapter beats"的中间层
-- architect 给粗事件 → planner 原样传 → writer 在同一事件里打转
-- 根本修法:planner 调 LLM 做 beat decomposition
-
-### 问题3: AI味
-- 根因:Anti-AI 只在写前给提示(教育),不在写后审+阻断(执法)
-- webnovel-writer 方案:独立 polish 步骤,7层审查,pass/fail 阻断
-- 根本修法:加独立 anti-AI polish 步骤
-
-### 问题4: 写作方法论注入
-- v9之前:governed mode 下9个方法论模块全部跳过
-- v10:改成 craft card(800 tokens)+ style_guide 完整版
-- 仍有问题:planner 的 skill 注入(injectStructuralSkills)混进 mustKeep 导致泄漏
-- 根本修法:planner LLM 化,skill 编译成具体剧情指令
-
-### 问题5: planner 太薄
-- 现状:纯规则引擎,不调 LLM,只做 outline 匹配 + 数组 push
-- 做不了:beat decomposition、craft brief 编译、标题生成
-- webnovel-writer 方案:Context Agent(LLM)组装 3 层执行包
-- AI_NovelGenerator 方案:chapter_blueprint(LLM)每章元数据
-- 根本修法:planner 变成 LLM agent

+ 0 - 99
docs/specs/webnovel-writer-gap-analysis.md

@@ -1,99 +0,0 @@
-# InkOS vs webnovel-writer 差距分析
-
-> 参考项目:https://github.com/lingfengQAQ/webnovel-writer
-> 本地副本:/Users/majunxian/Desktop/PyProject/webnovel-writer
-
-## 核心差距(按优先级)
-
-### G1: outline 粒度(最大差距)
-- **他们**:每章 16 字段(目标/阻力/代价/时间锚/爽点类型/Strand/钩子类型/反派层级/视角/关键实体/章末开放问题...)
-- **我们**:卷级事件描述("第13-17章:红岸残响"),不到章
-- **影响**:斗破5章只推一个beat、三体全是会议
-- **修法**:planner 调 LLM 做 chapter beat decomposition
-
-### G2: 写前 brief(Context Agent)
-- **他们**:3 层 8 面板的"创作执行包"
-  - Layer 1: 任务简报(核心任务/接前章/出场人物状态/场景约束/时间约束/风格指导/伏笔紧迫度/读者牵引)
-  - Layer 2: 上下文契约(冲突一句话/开场类型/情绪节奏/信息密度)
-  - Layer 3: 直接写作提示(章内节拍:开场→推进→反转→钩子)
-- **我们**:chapterIntent(一句 goal + mustKeep 数组 + hookAgenda)
-- **修法**:planner LLM 输出结构化 chapter brief
-
-### G3: Anti-AI(写完后独立审+阻断)
-- **他们**:7 层逐段检查,200+ 词 blocklist,改写算法,`anti_ai_force_check: pass/fail` 阻断
-  - L1: 10 类高危词(总结词/枚举词/学术腔/逻辑连接/直接情绪/动作套话/环境套话/叙事废话/抽象词/机械开头)
-  - L2: 句式规则(禁3段式/禁连续同结构/禁列表叙述)
-  - L3: 形容词副词限制(一名词前≤2形容词/每300字≤4程度副词)
-  - L4: 四字成语限制(每500字≤3个/不连续/必须服务叙事)
-  - L5: 对话去AI(禁说明书式/对话必须有意图/允许犹豫打断反问)
-  - L6: 段落结构(单句段25-45%/段落20-100字/场景转换用动作)
-  - L7: 标点节奏(不连续省略号感叹号/每段≤1个/4逗号以上必须拆)
-  - 改写算法:抽象情绪→生理反应+意图+动作 / 结论句→事实+代价+决定 / 3+解释→混对话动作反问
-- **我们**:analyzeAITells 确定性检测(5个高疲劳词)+ craft card 提示,不阻断
-- **修法**:加独立 polish 步骤,从 webnovel-writer 的 polish-guide.md 抽取规则
-
-### G4: Strand Weave 节奏配比
-- **他们**:Quest 55-65% / Fire 20-30% / Constellation 10-20%,最大连续/缺席限制,30章模板
-- **我们**:cadence mood/scene 分析(只检测连续同类型,不做配比规划)
-- **修法**:在 planner 加 strand 追踪,plan 阶段分配每章 strand 类型
-
-### G5: 时间系统
-- **他们**:时间锚点 + 倒计时系统("末世第3天")+ 与上章时差 + 章内时间跨度
-- **我们**:无
-- **修法**:可选功能,在特定题材启用
-
-### G6: 实体管理
-- **他们**:AI 实体提取 + 置信度评分(>0.8自动/0.5-0.8警告/<0.5人审)+ 场景分块 + 向量索引
-- **我们**:memory.db fact history(较简单)
-- **修法**:可选增强,非核心
-
-### G7: 题材 Profile 深度
-- **他们**:每题材有定制参数(钩子偏好/爽点密度/微兑现配置/节奏红线/约束豁免)+ 反套路库 + 反派类型库
-- **我们**:genre profile 有基础字段(satisfactionTypes/chapterTypes/fatigueWords),但没有钩子偏好和反套路库
-- **修法**:扩展 genre profile + 从 webnovel-writer 移植反套路库
-
-### G8: 债务系统(Override Contract)
-- **他们**:过渡章无法满足爽点要求时签"欠条",约定几章内补偿,10%/章利息
-- **我们**:无
-- **修法**:可选,优先级低
-
-## 我们的独有优势(他们没有的)
-
-1. **Hook lifecycle-aware 调度**:按 payoffTiming(immediate/near-term/mid-arc/slow-burn/endgame)差异化调度
-2. **评分循环取最高分**:3 轮 assess→revise→assess,自动选最佳版本
-3. **Continuation/Series 导入模式**:支持从已有作品续写/新时空生成
-4. **多模型支持**:不绑死 Claude,可对接 OpenAI/DeepSeek/Qwen
-5. **全自动 pipeline**:一条命令走完,不需要人在 loop 里
-6. **narrative-control sanitize**:控制层泄漏的系统性防护(虽然还没完美)
-
-## 修复优先级
-
-| 优先级 | 差距 | 改动 | 预期效果 |
-|--------|------|------|----------|
-| P0 | G1+G2 | planner 调 LLM 做 beat decomposition + chapter brief | 解决节奏慢 + mustKeep 污染 |
-| P0 | G3 | 独立 anti-AI polish 步骤 | 解决 AI 味 |
-| P1 | G4 | Strand Weave 节奏配比 | 章节类型多样性 |
-| P1 | G7 | 题材 profile 扩展 + 反套路库 | 番茄商业化 |
-| P2 | G5 | 时间系统 | 时间逻辑一致性 |
-| P2 | G6 | 实体管理增强 | 长篇连续性 |
-| P3 | G8 | 债务系统 | 节奏弹性 |
-
-## 关键文件参考(webnovel-writer 本地)
-
-| 功能 | 文件 |
-|------|------|
-| Context Agent 执行包 | `webnovel-writer/agents/context-agent.md` |
-| Anti-AI 7 层 | `webnovel-writer/skills/webnovel-write/references/polish-guide.md` |
-| Strand Weave | `webnovel-writer/references/shared/strand-weave-pattern.md` |
-| 爽点指南 | `webnovel-writer/references/shared/cool-points-guide.md` |
-| 每章大纲规划 | `webnovel-writer/skills/webnovel-plan/references/outlining/chapter-planning.md` |
-| 题材 Profile | `webnovel-writer/references/genre-profiles.md` |
-| 题材套路库 | `webnovel-writer/skills/webnovel-init/references/genre-tropes.md` |
-| 反套路规则 | `webnovel-writer/skills/webnovel-init/references/creativity/anti-trope-*.md` |
-| 审查器输出格式 | `webnovel-writer/references/checker-output-schema.md` |
-| 上下文契约 | `webnovel-writer/references/context-contract-v2.md` |
-| 战斗场景写法 | `webnovel-writer/skills/webnovel-write/references/writing/combat-scenes.md` |
-| 对话写法 | `webnovel-writer/skills/webnovel-write/references/writing/dialogue-writing.md` |
-| 情绪心理写法 | `webnovel-writer/skills/webnovel-write/references/writing/emotion-psychology.md` |
-| 场景描写 | `webnovel-writer/skills/webnovel-write/references/writing/scene-description.md` |
-| 钩子/爽点类型库 | `webnovel-writer/skills/webnovel-write/references/writing/genre-hook-payoff-library.md` |