# Fbs Bookwriter

> 福帮手出品 | 高质量长文档手稿工具链：书籍、手册、白皮书、行业指南、长篇报道、深度专题；支持联网查证（宿主允许时启用，离线自动降级）、S/P/C/B 分层审校、中文排版与 MD/HTML 交付。触发词：福帮手、福帮手写书skill、福帮手写书、写书、出书、写长篇、写手册、写白皮书、写行业指南、协作写书、定大纲、写章节、封面、插图、排版构建、导出、去AI味、质量自检、图文书、写报道、写深度稿、写特稿、写专题、写调查报道、写长文、拆书改写、海外本地化改写、爆款结构改写、激活原料、原料盘点、整理素材

- Skill: `infometa/fbs-bookwriter` (Agent Skill, multi-file: 481 files)
- Install (CLI): `npx skillmds@latest add infometa/fbs-bookwriter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/infometa/fbs-bookwriter/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: infometa (https://skillmd.com/u/infometa)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/infometa/fbs-bookwriter

---


# 福帮手出品 | 高质量长文档手稿工具链（FBS-BookWriter）

> **版本**：2.1.2  
> **通道**：WorkBuddy / CodeBuddy 双通道

---


## ⚡ 执行速查卡（AI 必读，每次会话开始前对照执行）

> **设计意图**：本卡是对话式 AI 的核心入口，优先级高于下方所有章节；完整规范见 [`references/01-core/skill-full-spec.md`](./references/01-core/skill-full-spec.md)。

### 第一步：开场前必做（30 秒内完成）

- **默认快速开场**：`intake-router` **默认**已等价于 `--fast`（跳过场景包全量联网加载，仅乐包埋点，首响更快）。**只有**需要完整在线场景包时再显式加 `--full`（可能较慢；见 `references/05-ops/anti-stall-guide.md`）。
- **首次部署先装依赖**：新环境解压技能包后先在技能根目录执行 `npm install --omit=dev`；随后运行 `node scripts/env-preflight.mjs --json`，确认 `deps.glob` 与 `deps.iconv-lite` 为 `ok=true`。
- **对用户说话的方式**：不向用户暴露 Tier/调度层/内部模块名；恢复卡约 4 行、每次最多 3 条推荐、质检用成就式文案 — 见 `references/05-ops/ux-agent-playbook.md`。
- **价值显式表达（全局特点）**：当你提到术语或文件名（如 `chapter-status.md`、`deliverables/`、`s0-exit-gate`）时，用一句话补充「这是做什么」+「对用户有什么价值」，避免只报名词不解释。
- **认知资产口径（统一）**：对外价值表述统一为「可进化、可分发、可增值」；商业与能力分层统一为「场景包 + 乐包 + 离线/在线会员」，与 `fbs-runtime-hints.json` → `cognitiveAsset` 及首响 `firstResponseContext.cognitiveAssetSnapshot` 对齐，避免各处口径不一。
- **首屏（只说「福帮手」时）**：先一句话状态 + **最多 3 个主选项**（写新书 / 接着写 / 质检或整理素材），勿首屏平铺长菜单；需求收齐后优先「一次性汇总确认再执行」— 见 `references/01-core/intake-and-routing.md`（WorkBuddy 实测复盘节）。
- **宿主与对话展示（P0）**：向终端用户**只展示** `intake-router --json` 中 `firstResponseContext.userFacingOneLiner`（一行）+ 三个主选项；**禁止**把完整 intake JSON、本 SKILL 全文或 `references/**` 长文档堆进用户可见对话区（Agent 内部可读）。恢复后**不要**无目的地 `list_dir` 整个 `.fbs/`（百级文件只会制造噪音）；**例外**：可用 `list_dir` 仅列**书稿根**以确认是否存在 `.fbs/` 子目录（见下条）；仅在用户要看结构/排障时再按需深入列目录。
- **项目锚定先行（P0）**：执行 `intake-router` 时若返回 `projectAnchor.status=ambiguous`，表示检测到多个候选项目根目录；**在用户确认 bookRoot 前，禁止读取任意 `.fbs/*` 内容**。先让用户确认路径，再用该路径重跑 `intake-router`。
- **渐进披露与场景包坐标（三波收口）**：`firstResponseContext.scenePackCoordinate` **仅提供** `scenePackId` 与 `references/scene-packs/<id>.md` 等**锚点相对路径**，不在首响向用户朗读全文；进入对应写作/质检阶段再 `read_file`。`session-resume-brief.md` 顶部含交接前缀与机读计量说明；产权与记忆仲裁见 [`references/01-core/information-ownership-and-arbitration.md`](./references/01-core/information-ownership-and-arbitration.md)。
- **宿主工具盲区（复盘 P0）**：部分宿主上 **`search_file` 不进入** dot-directory（`.fbs/`、`.workbuddy/` 等）。检查 `workbuddy-resume.json`、`esm-state.md`、`session-resume-brief.md` 等 **禁止**依赖 `search_file`；应 **`read_file` 直读已知路径**（`.fbs/…`），或 **`list_dir` 书稿根**确认 `.fbs/` 是否存在。**Found 0 不得**解读为「未初始化 FBS」。详见 [`references/01-core/skill-full-spec.md`](./references/01-core/skill-full-spec.md) §2.4。
- **禁止「元指令泄露」（P0）**：首句及正文**不要**复述内部执行口令（例如「按 v2.x 规范」「JSON 输出」「不重复读文件」「干净首屏」等）。这些是 Agent 自检用语，**不是**对用户说的话；直接输出 `userFacingOneLiner` 与人话选项即可。
- **S0 素材阶段防「无限 S0」（P0）**：素材**够用即可**；达标后**必须**提议进入 S1/S2，不得无期限响应细化要求。详见 [`references/01-core/s0-material-phase-guard.md`](./references/01-core/s0-material-phase-guard.md)。用户说「继续」若发生在**素材已达标**时，**优先作阶段推进**，而非默认「继续补素材」。
- **推进优先原则（P0）**：当用户说「继续」或给出模糊推进指令时，先判定是否达到“够用”阈值，再决定推进：`S0 素材数 ≥ 赛道数×2`、`S2 各章具备标题+目标字数`、`S3 已完成 ≥3 章`。达到即主动给出阶段切换建议；未达到则明确差距并继续当前阶段。
- **退出**：用户说退出前，**先问**「还需要别的吗」或说明会保存，再跑 `session-exit`（JSON 含 `agentGuidance.beforeExit`）。
- **单线 / 多任务 / 多智能体**：默认串行保风格；并行时以磁盘为真值、长结果先落盘、超时交 partial；质量优先，再按质检与台账信号调整并行度 — 见 `references/05-ops/agent-task-strategy.md`。
- **S3.5 扩写（复盘 P0）**：进入扩写前必须有 **书面** `.fbs/expansion-plan.md` 且用户确认；**扩写后字数必须以 `node scripts/expansion-word-verify.mjs` / `expansion-gate.mjs` 实测为准**，禁止仅报模型估算；`expansion-gate` **默认**会刷新 `chapter-status` 字数列并写 `.fbs/expansion-checkpoint.json`；写作类扩写 **并行≤3（推荐≤2，见 `fbs-runtime-hints.json`）**；**禁止**用 `code-explorer` 类子智能体承担正文扩写。全文规范见 [`references/01-core/s3-expansion-phase.md`](./references/01-core/s3-expansion-phase.md)。
- **触发保障（P0-G）**：脚本“存在”不等于“已触发”。阶段动作必须绑定门禁调用：`S0→S1` 前必跑 `s0-exit-gate`；`S3.5` 扩写前必跑 `expansion-gate`（含自动备份）；`S3.7` 精修前必跑 `polish-gate`（含自动备份）；`S5/S6` 交付后必同步 `final-draft-state-machine` 与 `releases-registry`，禁止仅写文件不登记状态。

> **S0 最小必填集降级方案（v2.1.1 新增，P0）**：若 `intake-router.mjs` 无法执行（Node.js 不可用或脚本报错），AI **必须** 手动引导用户完成以下最小集，**完成前不得进入 S3 成文**：
> 1. `author-meta.md`：核心主张（1句）+ 目标读者（1句）+ 作者声音标签（1个）+ 目标字数
> 2. `术语锁定记录.md`：5–10 个核心术语（标准写法 + 禁用变体）
> 3. `character-registry.md`：3–5 个预制案例人物（姓名 + 背景 + 适用场景）
> 4. `commitments.md`：创建空承诺注册表（承诺 / 出处 / 兑现章节 / 状态），待 ch00 成文后注册
> 
> 完成后在 `esm-state.md` 标记 `phase: S0_done`，方可推进至 S1。未完成须向用户说明原因，**禁止静默跳过**。

> **阶段推进门禁（v2.1.1 新增，P0）**：每次推进阶段前，AI 必须读取 `esm-state.md` 并检查前置条件，不满足时**拒绝推进**并向用户说明缺失项：
> 
> | 推进方向 | 前置条件 | 不满足时 |
> |---------|---------|---------|
> | S0 → S1 | `author-meta.md` 核心主张已填写 | 提示补填，不推进 |
> | S1 → S2 | 大纲已确认 + `story-bank.md ≥ 3 条` | 提示补案例 |
> | S2 → S3 | 目录已确认 + `commitments.md` 已创建 + 大纲冻结已登记（[`outline-freeze.md`](./references/01-core/outline-freeze.md) / `project-config.outlineFreezeVersion`） | 提示补冻结信息与变更单 |
> | S3 → S3.5（扩写，可选） | 用户明确要求「扩写/加厚」等 | 须先产出并确认 `.fbs/expansion-plan.md`，详见 [`s3-expansion-phase.md`](./references/01-core/s3-expansion-phase.md)；**禁止**无计划开工 |
> | S3.5 → S3.7（精修，可选） | 用户要求润色、收口事实、去重等 | 见 [`s3-refinement-phase.md`](./references/01-core/s3-refinement-phase.md)；`esm-state.iterationPhase` 可置 `refinement` |
> | S3.5 / S3.7 → S4 | **若走了扩写**：`expansion-plan` 内各章 **工具实测** 达标（`node scripts/expansion-word-verify.mjs` 或 `node scripts/expansion-gate.mjs`）+ `chapter-status` 已更新 + **最低 S+P 质检**；**若走了精修**：精修轮次收口 + 同上质检与台账 | 禁止凭模型估算报字数 |
> | S3 → S4 | `chapter-status.md` 全部标「成文」；**若本书走过 S3.5/S3.7**，须已满足上行收口条件 | 提示未完成章节或未收口扩写/精修 |
> | S4 → S5 | S4 质检 20 条逐条通过 + 字数完成度 ≥ 50% | 提示不达标项 |

```text
1. 强制入口（首次 / bookRoot 变更 / 仅激活时都先执行）：
   node scripts/intake-router.mjs --book-root <bookRoot> --intent auto --json --enforce-required
   → 默认快速开场；若用户已知需完整在线场景包，再加 `--full`。可按书名关键词检索历史书稿目录：`--search <关键词>`（依赖曾成功退出后登记在 ~/.workbuddy/fbs-book-projects.json 的索引）。
   → 该脚本会自动完成：宿主检测、恢复卡补写、session-resume-brief 补写、首响路由判断

2. 恢复优先（按脚本输出执行，不要先 list_dir 再反推状态）：
   - IF exists(.fbs/workbuddy-resume.json) → 读取恢复卡 → 恢复会话
   - ELSE IF exists(.fbs/chapter-status.md) → 读取章节台账 → 自动补写恢复卡后恢复
   - ELSE → 进入 S0.5 轻量引导

3. 融合顺序：
   - 先读 .fbs/workbuddy-resume.json
   - 再读 .fbs/smart-memory/session-resume-brief.md
   - 再吸收宿主画像 / 宿主记忆

4. 禁止重复读取：SKILL.md 已由 use_skill 注入上下文，本次会话内禁止再次 read_file 读取 SKILL.md

5. 阶段推荐上限：每次最多 3 条用户可执行的下一步动作（与 `.fbs/next-action.md` 写入规则一致）。
```

> **架构盲区（审计 P0，必读）**：宿主把本 Skill 当作「参考文档」注入时，**不会**自动执行任何 `node scripts/…`。若你**未**运行上表第 1 步的 `intake-router.mjs`，则视为 **FBS 流程未启动**：`.fbs/esm-state.md` 可能仍停在 IDLE、场景包/乐包埋点（`loadScenePack` → `registerBook`）未经过开场路径。合规主文档：[`references/01-core/runtime-mandatory-contract.md`](./references/01-core/runtime-mandatory-contract.md)。

> **退出（审计 P0）**：用户说「退出 / 停止 / 退出福帮手」时，**必须先**执行 `session-exit`（`--book-root <书稿根绝对路径>` 必填）：推荐 `node scripts/fbs-cli-bridge.mjs exit -- --book-root <书稿根> --json`（工作目录为技能包根），勿在书稿目录下单独用相对路径 `node scripts/session-exit.mjs`。再回复用户；回复须包含脚本 JSON 中的 **`userMessage`**（「已记录当前状态。下次输入『福帮手』可从上次位置继续。」），禁止仅用「收到」等敷衍收束。


### 第二步：意图 → 脚本 触发速查

| 用户说了什么 | 立即执行 | 备注 |
|------------|---------|------|
| 首次进入 / `bookRoot` 变更 / 仅激活 | `node scripts/intake-router.mjs --book-root <bookRoot> --intent auto --json --enforce-required` | 统一入口，自动检测宿主与恢复工件 |
| **Windows 宿主（JSON 被 CLIXML/混流破坏时）** | `node scripts/intake-router.mjs --book-root <bookRoot> --intent auto --json --json-out .fbs/intake-router.last.json --enforce-required` | 与上等价，**JSON 落盘**；读完 `.fbs/intake-router.last.json` 再解析（见 [`references/05-ops/windows-host-cli.md`](./references/05-ops/windows-host-cli.md)） |
| **拆书式改写**（旧书升级 / 海外落地 / 爆款重构） | `node scripts/intake-router.mjs --book-root <bookRoot> --intent rewrite --json --enforce-required` | 先锁定来源边界与改写模式，再按 S3 串行约束推进（每轮最多 2 文件） |
| 拆书改写计划模板 | `node scripts/rewrite-plan-bootstrap.mjs --book-root <bookRoot> --json` | 生成 `.fbs/rewrite-plan.md` 最小模板（保留项/替换项/新增项） |
| 扩充 / 升级 / 修改 + 指定文件 | **先确认范围，再串行逐文件处理，每次最多 2 个文件** | 禁止 3+ 文件并行写入 |
| **扩写 / 加厚 / 进入扩写阶段** | 先写 `.fbs/expansion-plan.md` 并经用户确认 → 再执行；扩写前可跑 **`node scripts/verify-expansion-plan-structure.mjs --book-root <根>`**（结构门禁；`--strict` 要求已勾选确认）；扩写后 **`node scripts/expansion-word-verify.mjs`** 或 **`node scripts/expansion-gate.mjs --book-root <根>`** | 禁止无计划扩写；禁止仅报估算字数；叙事门控与 Wave 见 [`references/05-ops/fbs-narrative-gates-and-parity.md`](./references/05-ops/fbs-narrative-gates-and-parity.md) |
| **素材 vs 计划（启发式）** | `node scripts/expansion-plan-vs-material.mjs --book-root <根>` | 可选 |
| **相邻章重叠预警** | `node scripts/adjacent-chapter-similarity.mjs --file-a <a.md> --file-b <b.md>` | 可选 |
| **按台账顺序扫相邻章** | `node scripts/scan-adjacent-chapters.mjs --book-root <根>` | 基于 `chapter-status` 顺序批量 Jaccard（复盘 P1） |
| 明确要定大纲 / 确认读者画像 / 推进 `S1/S2` | `fbs-team-lead` 主持，必要时委派 `fbs-writer` 协助需求确认与大纲定稿 | 阶段门禁与用户确认仍由 team-lead 收口 |
| 质量自检 / 去 AI 味 | `node scripts/quality-auditor-lite.mjs --book-root <bookRoot>` | 存量质检入口 |
| 复盘报告同步整改清单 | `node scripts/retro-action-sync.mjs --book-root <根> [--report <报告.md>] [--enforce-p0]` | 从 `.fbs/福帮手运行复盘报告*.md` 提取待整改项，产出 `.fbs/retro-action-items.json` 与 `.fbs/retro-unresolved.md` |
| 复盘候选沉淀（Action→Skill） | `node scripts/retro-to-skill-candidates.mjs --book-root <根> [--json]` | 将未修复整改项转为可复用流程候选，输出 `.fbs/retro-skill-candidates.json` |
| 运行时阶段提醒（Nudge） | `node scripts/runtime-nudge.mjs --book-root <根> [--json]` | 基于 `esm-state` + 复盘项生成本轮必做/可选提醒，输出 `.fbs/runtime-nudges.json` |
| 终稿状态机 | `node scripts/final-draft-state-machine.mjs --book-root <根> --action transition --to <draft|candidate|release|archived> [--artifact <文件>] [--reason <说明>]` | 统一终稿状态迁移，写入 `.fbs/final-draft-state.json`，并记录产物 hash |
| **终稿治理器（唯一终稿）** | `node scripts/release-governor.mjs --book-root <根> [--strict]` | 自动识别并保留唯一终稿，归档旧终稿，补齐状态机与发布注册表 |
| 素材标记治理器 | `node scripts/material-marker-governor.mjs --book-root <根> [--fix] [--json]` | 扫描/清理 `待核实-MAT` 与 `[DISCARDED-*]` 标记，避免内部标注进入对外成稿 |
| **全书 MAT/待核实逐文件汇总** | `node scripts/material-marker-scan.mjs --book-root <根> --output .fbs/material-marker-scan.md` | 一次性输出各文件计数表（复盘用；不修改正文） |
| 终稿洁净门禁 | `node scripts/final-manuscript-clean-gate.mjs --book-root <根> [--json]` | 强制检查 `全稿/终稿/终审稿` 不含过程标注（如 `待核实-MAT`、`MAT-XXX（待补充）`、`[DISCARDED-*]`） |
| 继续写稿 / 接着写 | 读 `.fbs/workbuddy-resume.json` 或 `.fbs/chapter-status.md` | 不重问背景；若当前在 **S0 且素材已达标**，见「继续」一行 |
| **继续**（泛义） | **若 S0 素材已达标**：提议进入 **S1/S2**（需求确认/大纲），勿默认继续补素材；**若 S0 未达标**：继续补素材并说明缺口；**若已在 S3+**：同「接着写」 | 见 [`references/01-core/s0-material-phase-guard.md`](./references/01-core/s0-material-phase-guard.md) §3 |
| 退出 / 退出福帮手 / 停止 | `node scripts/session-exit.mjs --book-root <bookRoot> --json` | 默认先保存恢复卡与会话摘要，再确认退出 |
| 看看能做什么 | `list_dir` 最多 2 层 | 不先全量读文件 |
| 初始化书房 / 新建项目 | `node scripts/init-fbs-multiagent-artifacts.mjs --book-root <bookRoot>` | 构建虚拟书房底座 |
| 环境预检（S0/S3 前） | `node scripts/env-preflight.mjs` | Windows：**禁止** `powershell -Command` 内联 `$`；统计/字数一律优先 `node`；同时校验 `glob`/`iconv-lite` 运行时依赖是否已安装 |
| **联网更新模型名/价格（强制流程）** | 先读 [`references/05-ops/web-search-reverse-verification.md`](./references/05-ops/web-search-reverse-verification.md) | 反向验证查询：先确认最新模型名，再以新名为锚查价 |
| **联网检索四支柱（专项深化）** | 读 [`references/05-ops/web-search-strategy-deep.md`](./references/05-ops/web-search-strategy-deep.md) | 知识截止补强、时效锚定、时态验证、方法论与技能知识库增强 |
| **S0退出门禁（强制）** | `node scripts/s0-exit-gate.mjs --book-root <根> --json [--track-count <N>] [--confirm-advance]` | 检查 `author-meta` + 素材达标（默认阈值 max(6, 赛道数×2)）+ 用户确认推进 |
| 快速扫描问题 | `powershell -File scripts/quick-scan.ps1 -BookRoot <bookRoot> -Output <path.json>` | **必须** `-File`，勿用 `-Command`；仓库内脚本为 UTF-8（含 BOM），避免词表乱码 |
| P0 全套审计（门禁串） | `node scripts/run-p0-audits.mjs <书稿根>` 或 `--book-root <书稿根>` | `--skill-root` 可省略（默认脚本所在技能根）；产出 `.fbs/p0-audit-report.json`，并默认联动生成 `midterm-governance-report`（可 `--no-midterm-governance` 跳过） |
| S4 全稿合并 | `node scripts/merge-chapters.mjs --book-root <根> --output deliverables/[S4]书名.md [--record-artifacts]` | 跨平台；`--record-artifacts` 写入 `.fbs/merge-chapters.last.json`；终稿登记仍走 `release-governor` / `final-draft-state-machine` |
| **扩写/精修前源文件备份** | `node scripts/source-write-backup.mjs --book-root <根> --scope expansion --json` | 默认写入 `backups/YYYYMMDD-HHMMSS/`；`expansion-gate` 已默认自动执行 |
| **S3.7 精修门禁（含备份）** | `node scripts/polish-gate.mjs --book-root <根>` | 先备份后精修，默认联动 `quality-auditor-lite`；可 `--no-quality-audit` |
| **任意阶段改稿 / 精修（纪律）** | **先** `node scripts/source-write-backup.mjs --book-root <根> --scope refinement --json`，**再**改文件；单文件累计替换 **>2 处** 必须备份 | S5 顺手精修也须备份；S3.7 优先整包走 `polish-gate` |
| 台账字数对齐 | `node scripts/sync-chapter-status-chars.mjs --book-root <根>` | 扩写后刷新 `.fbs/chapter-status.md` 字数列 |
| 一书稿健康快照 | `node scripts/book-health-snapshot.mjs --book-root <根> --skill-root <技能根>` | 聚合 env / 扩写门禁 / A 类词 / 待核实 / MAT残留 / 废弃标注 / 最近 intake 时间；`--with-p0-audit` 可串跑 P0 全套 |
| 中期绩效看板（8周执行） | `node scripts/midterm-performance-dashboard.mjs --book-root <根> --days 7 --json` | 自动生成 `.fbs/governance/midterm-performance-dashboard-<week>.json/.md`，输出触发自动化率、时态可信率、恢复就绪率、证据完备率 |
| 中期治理周报（统一工件） | `node scripts/midterm-governance-report.mjs --book-root <根> [--week-label 2026-W16] --json` | 汇总 `门禁状态 + KPI + 整改建议` 到 `.fbs/governance/midterm-governance-report-<week>.json/.md`（与运行态台账解耦） |
| 治理工件归位（防主体漂移） | `node scripts/normalize-governance-artifacts.mjs --book-root <根> [--dry-run] [--prune-duplicates] [--prune-on-exists] --json` | 将误落在 `.fbs/reports` 的 `midterm-*` 工件迁移回 `.fbs/governance`；`--prune-on-exists` 可直接清理运行区遗留副本（治理区已有同名文件时） |
| 中期执行链（分级门禁） | `node scripts/midterm-execution-chain.mjs --book-root <根> --skill-root <技能根> --days 7 [--enforce] [--no-boundary-gate]` | 串跑 `runtime-nudge → book-health-snapshot → midterm-dashboard → midterm-governance-report` 并输出 `pass/warn/block`；默认开启主体漂移门禁（`driftCount>0` 判 `block`） |
| 检索知识卡产线 | `node scripts/build-search-knowledge-cards.mjs --book-root <根> --json` | 将 `.fbs/search-ledger.jsonl` 结构化为 `.fbs/governance/search-knowledge-cards.json/.md` |
| 知识复用率 KPI | `node scripts/knowledge-reuse-kpi.mjs --book-root <根> --json` | 统计知识卡被正文回引比例（URL 或 `[KC:<id>]`），输出 `.fbs/governance/knowledge-reuse-kpi.json` |
| 高风险双源门禁 | `node scripts/high-risk-dual-source-gate.mjs --book-root <根> [--enforce] --json` | 对价格/法规/版本类高风险主题检查双源覆盖，缺口可阻断 |
| 时间锚缺失清单 | `node scripts/temporal-anchor-missing-checklist.mjs --book-root <根> [--enforce] --json` | 输出缺失时间锚与来源的句段清单，作为修订待办 |
| 多周趋势汇总 | `node scripts/midterm-trend-summary.mjs --book-root <根> --json` | 汇总治理周报趋势、复发风险 Top |
| 复盘映射矩阵 | `node scripts/retro-mapping-matrix.mjs --book-root <根> --json` | 将复盘项映射到 rule/script/test/doc 落点 |
| 连续达标检测 | `node scripts/midterm-target-streak-check.mjs --book-root <根> [--streak-target 3] --json` | 计算连续达标周数（触发/时态/恢复/证据/漂移） |
| 中期里程碑报告 | `node scripts/midterm-milestone-report.mjs --book-root <根> [--week-label <YYYY-Www>] --json` | 一键生成中期收口报告（趋势 + 映射 + 连续达标 + 复用率） |

> 交付硬约束：素材核实/待补充等写作过程信息不应出现在作品中；**全稿/终稿/终审稿绝对禁止**保留此类标注，发布前必须通过 `final-manuscript-clean-gate`。

### 质量标准化硬约束（防歧义 / 防偷懒）

- **先证据后结论**：凡是“已完成/已通过/已修复”，必须给出可复核证据（脚本命令、输出文件路径、门禁结果）；禁止口头宣称完成。
- **先门禁后交付**：进入交付口径前，至少完成 `release-governor` + `final-manuscript-clean-gate`；任一失败不得输出“可发布”。
- **先明确边界再执行**：用户请求含糊时，先确认范围（目录/章节/阶段）；禁止“默认全量改动”。
- **先最小改动再扩面**：默认逐文件、逐阶段推进；未经确认不得做大范围批量替换。
- **结果可追溯**：每轮动作必须落地到 `.fbs/` 或 `releases/` 的可追溯工件，避免只存在于对话描述。
- **版本口径单一**：对外统一使用 `2.1.1` 基线；历史版本仅引用 `docs/history/version-baseline-v2.1.1.md`，不展开内部迭代流水。
| 台账字数漂移检测 | `node scripts/chapter-status-drift.mjs --book-root <根>` | 对比 `chapter-status` 与磁盘 `countChars`，超阈值退出 1 |
| 全书稿机检（全量机器项） | `node scripts/quality-auditor.mjs --profile manuscript-full --book-root <根> --skill-root <技能根>` | 开启全部 enforce/VCR/编号/A 类阈值，避免只跑子集（复盘 F-P0-3） |
| 全书 A 类词门禁 | `node scripts/quality-auditor.mjs --profile manuscript --book-root <根> --skill-root <技能根> --enforce-imperative-book` | 见 `quality-check.md` §0.6 |
| PR 与发版 CI | `npm run ci:fast` / `npm run ci:release` | 见 `references/05-ops/release-checklist.md` §0 |
| 记忆 / 偏好查看 | `node scripts/smart-memory-core.mjs preference-show <bookRoot>` | |
| 检索前置合同 / 企微场景包 CLI / 乐包查询 | `node scripts/fbs-cli-bridge.mjs help` | 统一入口，**非 MCP**；完整矩阵见 [`references/01-core/skill-cli-bridge-matrix.md`](./references/01-core/skill-cli-bridge-matrix.md)；乐包规则见 [`references/05-ops/credits-guide.md`](./references/05-ops/credits-guide.md) |


### 第三步：写作执行约束（S3 阶段强制）

```text
串行原则：每轮最多修改 2 个文件。完成 1 个文件 → 汇报结果 → 再进行下一个。
可见性：修改前说明“我接下来修改哪个文件、改哪几处、大概需要多久”。
记忆检测点：每完成 1 章（或 1 次完整修改轮），用宿主**系统级记忆**写入知识库：**create**（无 ID）/ **update**（须带宿主记忆 ID）/ **delete**（用户推翻旧信息时）；详见「宿主记忆兼容」与 `runtime-mandatory-contract.md` §5。
防卡顿：单文件操作超过 30 秒无输出时，输出一行进度提示。
```

### 第三步（附）：S3.5 扩写阶段强制

```text
计划：无用户确认的 .fbs/expansion-plan.md → 不得改写正文扩写。
字数：改写后必须用 node scripts/expansion-word-verify.mjs 实测；对用户汇报的字数必须与脚本一致。
并行：扩写类任务并行章数 ≤3（推荐≤2）；禁止 code-explorer 式子智能体写正文。
台账：每章扩写验证通过后更新 chapter-status.md（字数、时间）；可用 `node scripts/sync-chapter-status-chars.mjs --book-root <根>` 按磁盘真值对齐字数列。
中断：用户取消并行任务时，扫描目标文件差异，必要时回滚或合并 .expanded.md 临时稿。
```

### 第四步：按需加载（降低上下文噪音）

```text
本次会话用不到 → 不主动读取：
  - references/scene-packs/               → 仅在用户触发体裁场景包时读取
  - references/02-quality/                → 仅在进入 S4 质检阶段时读取
  - references/05-ops/search-policy.json  → 仅在进入 S0/S1/S2 检索时读取
  - references/01-core/skill-full-spec.md → 仅在需要完整规范、边界或细则时读取

S3 分卷按需加载（防卡顿）：
  - workflow-s3.md            → 仅加载导航入口（索引页，约 20 行）
  - workflow-s3-core.md       → 开始 S3 前必读（入口条件/Auto-Run/骨架检测）
  - workflow-s3-writing-guide.md → 进入正式写稿时加载（Brief 格式/评分流程）
  - workflow-s3-closure.md    → S3 全部章节写完时加载（收口清单/S4 进入条件）
  禁止一次性 read_file 全量加载上述三个子卷。
```

---

## 一句话定位

**福帮手是一套专为 3 万字以上长文档手稿设计的 AI 写作与交付工具链**，覆盖 S0–S6 工作流、S/P/C/B 四层质检、8 大场景包、跨会话恢复、宿主画像桥接，以及 MD/HTML 为主的多格式交付。

## 触发词（显式植入）

- **主触发描述**：福帮手出品 | 高质量长文档手稿工具链：书籍、手册、白皮书、行业指南、长篇报道、深度专题；支持联网查证（宿主允许时启用，离线自动降级）、S/P/C/B 分层审校、中文排版与 MD/HTML 交付。触发词：福帮手、福帮手写书skill、福帮手写书、写书、出书、写长篇、写手册、写白皮书、写行业指南、协作写书、定大纲、写章节、封面、插图、排版构建、导出、去AI味、质量自检、图文书、写报道、写深度稿、写特稿、写专题、写调查报道、写长文、拆书改写、海外本地化改写、爆款结构改写、激活原料、原料盘点、整理素材。
- **路由提示**：命中“激活原料 / 原料盘点 / 整理素材”时，优先按素材整理与原料激活入口处理；命中“写书 / 写白皮书 / 定大纲 / 写章节”时，优先进入长文稿件工作流。

## 核心导航（先看这些）

| 场景 | 文档 |
|------|------|
| 完整规范 | [`references/01-core/skill-full-spec.md`](./references/01-core/skill-full-spec.md) |
| 工作流总入口 | [`references/01-core/section-3-workflow.md`](./references/01-core/section-3-workflow.md) |
| 分阶段详规 | `workflow-volumes/workflow-s0.md` ～ `workflow-volumes/workflow-s6.md` |
| 快速起步 / 路由 | [`references/01-core/intake-and-routing.md`](./references/01-core/intake-and-routing.md) |
| **S3.5 扩写**（计划 · 字数实测 · 并行≤3） | [`references/01-core/s3-expansion-phase.md`](./references/01-core/s3-expansion-phase.md) |
| **S3.7 精修** | [`references/01-core/s3-refinement-phase.md`](./references/01-core/s3-refinement-phase.md) |
| **真源矩阵 / 发版** | [`references/05-ops/fbs-source-of-truth-matrix.md`](./references/05-ops/fbs-source-of-truth-matrix.md) |
| **运行复盘模板** | [`references/05-ops/fbs-run-retrospective-template.md`](./references/05-ops/fbs-run-retrospective-template.md) |
| 质量评分权威 | [`references/02-quality/quality-check.md`](./references/02-quality/quality-check.md) |
| S 层规则权威 | [`references/02-quality/quality-S.md`](./references/02-quality/quality-S.md) |
| P/C/B 规则权威 | [`references/02-quality/quality-PLC.md`](./references/02-quality/quality-PLC.md) |
| 场景包激活与降级 | [`references/01-core/scene-pack-activation-guide.md`](./references/01-core/scene-pack-activation-guide.md) |
| Skill↔脚本↔CLI 矩阵（非 MCP） | [`references/01-core/skill-cli-bridge-matrix.md`](./references/01-core/skill-cli-bridge-matrix.md) |
| 单智能体/多任务/多智能体编排 | [`references/05-ops/agent-task-strategy.md`](./references/05-ops/agent-task-strategy.md) |
| 维护者 / CI：轨迹 · 演进 · 压缩策略 | [`references/05-ops/fbs-continuous-improvement.md`](./references/05-ops/fbs-continuous-improvement.md) · [`references/01-core/skill-index.md`](./references/01-core/skill-index.md)（平台侧索引） |
| 用户向价值一页纸（培训/采购） | [`references/03-product/fbs-value-one-pager.md`](./references/03-product/fbs-value-one-pager.md) |
| 认知资产「三化」与商业机制对齐 | [`references/05-ops/cognitive-asset-threeization.md`](./references/05-ops/cognitive-asset-threeization.md) |
| 文档总索引 | [`references/01-core/skill-index.md`](./references/01-core/skill-index.md) |


### workflow-volumes 分卷阅读（推荐）

- [`references/01-core/workflow-volumes/workflow-s0.md`](./references/01-core/workflow-volumes/workflow-s0.md)
- [`references/01-core/workflow-volumes/workflow-s1.md`](./references/01-core/workflow-volumes/workflow-s1.md)
- [`references/01-core/workflow-volumes/workflow-s2.md`](./references/01-core/workflow-volumes/workflow-s2.md)
- [`references/01-core/workflow-volumes/workflow-s2.5.md`](./references/01-core/workflow-volumes/workflow-s2.5.md)
- [`references/01-core/workflow-volumes/workflow-s3.md`](./references/01-core/workflow-volumes/workflow-s3.md) — **导航入口**（索引页，按需再加载以下子卷）
  - [`workflow-s3-core.md`](./references/01-core/workflow-volumes/workflow-s3-core.md) — 入口条件 · Auto-Run · 骨架检测（开始 S3 前必读）
  - [`workflow-s3-writing-guide.md`](./references/01-core/workflow-volumes/workflow-s3-writing-guide.md) — 写稿规范 · Brief 格式 · 评分流程
  - [`workflow-s3-closure.md`](./references/01-core/workflow-volumes/workflow-s3-closure.md) — 收口清单 · S3→S4 进入条件
- [`references/01-core/workflow-volumes/workflow-s4.md`](./references/01-core/workflow-volumes/workflow-s4.md)
- [`references/01-core/workflow-volumes/workflow-s5.md`](./references/01-core/workflow-volumes/workflow-s5.md)
- [`references/01-core/workflow-volumes/workflow-s6.md`](./references/01-core/workflow-volumes/workflow-s6.md)

---

## 场景包速查（8 大垂直场景）

| 包名 | 触发场景 | 默认策略 |
|------|---------|---------|
| `general` | 通用书籍 / 知识类 | **builtin 内置场景**，默认启用且无需授权 |
| `genealogy` | 家谱 / 家史 | 自动识别，需通过在线校验；未满足条件则回退 `general` |
| `consultant` | 顾问 / 咨询报告 | 自动识别，需通过在线校验；未满足条件则回退 `general` |
| `ghostwriter` | 代撰 / 影子写作 | 自动识别，需通过在线校验；未满足条件则回退 `general` |
| `training` | 培训教材 / 课程 | 自动识别，需通过在线校验；未满足条件则回退 `general` |
| `personal-book` | 自传 / 回忆录 | 自动识别，需通过在线校验；未满足条件则回退 `general` |
| `whitepaper` | 白皮书 / 研究报告 | 自动识别，需通过在线校验；未满足条件则回退 `general` |
| `report` | 调查报告 / 深度报道 | 自动识别，需通过在线校验；未满足条件则回退 `general` |


### 四级降级链（固定口径）

```text
disk_cache → offline_cache → local_rule → no_pack
```

- `local_rule`：先读取 `references/scene-packs/<包名>-local-rule.md`，再叠加 `references/scene-packs/<包名>.md`
- `no_pack`：必须显式告知“当前以通用规范执行，场景包不可用”，禁止静默降级

---

## 宿主与通道说明

### 双通道分轨

- 源仓库采用 **WorkBuddy / CodeBuddy 双通道**：
  - `.codebuddy-plugin/plugin.json` → `codebuddy/channel-manifest.json`
  - WorkBuddy 审核包 → `workbuddy/channel-manifest.json`
- `pack:workbuddy` 生成 WorkBuddy 审核包，`pack:openclaw` 生成 OpenClaw 技能包，`pack:release` 一次生成 WorkBuddy、CodeBuddy、OpenClaw 三种发布产物。
- 宿主真值统一以 `node scripts/host-capability-detect.mjs --book-root <bookRoot>` 的输出为准；首响的 `intake-router.mjs` 会自动调用该探测。
- Tier1 本地市场能力只在 **WorkBuddy** 可用；**CodeBuddy** 走 Tier2 宿主插件与内置脚本兜底。


### Full Team 与并行口径

- **Full Team 完全可用**，不是宿主能力缺失。
- 风险点在 **任务拆分、写入隔离、team-lead 编排、成员失响恢复**，而不在“是否支持并行”。
- 正文写作默认不主动推荐 Full Team，但用户明确要求且边界清晰时可直接使用 Team API。

### 宿主记忆兼容

- 宿主记忆目录采用 **`memory/` 优先，兼容 legacy `memery/`** 的双读策略。
- 恢复链路统一以 `.fbs/workbuddy-resume.json`、宿主画像桥接与 Smart Memory 为准。
- **系统级记忆 API**（由宿主提供，名称以宿主实现为准，如 `create_memory` / `update_memory` / `delete_memory`）：
  - **create**：新建一条宿主记忆（无既有 ID 时）。
  - **update**：更新已有记忆，**须携带宿主分配的记忆 ID**。
  - **delete**：用户**推翻、否定**先前结论时删除对应条目，再视需要用 create 写入新真值。
- 书稿级长篇状态仍以 **`.fbs/smart-memory/` 与脚本落盘**为准；宿主记忆宜存 **短摘要、可检索关键词**，与 team-lead 中「关键时刻写宿主知识库」规则一致。

---

## 已知限制与执行边界

### 入口去术语化

首响优先说人话，先说明“先整理材料 / 先明确主题 / 先一起找方向”，不要把 `S0`、`WP1`、`虚拟书房` 等内部术语直接甩给用户。

### WP1/WP2 绑定

- `WP1` = 起步工作面：先确认材料、主题、方向三分流
- `WP2` = 书稿工作面：`.fbs/` + `deliverables/` + `releases/`
- `WP1` 锁定后再进入 `WP2`，禁止在起步阶段提前展开质检 / 发布术语

### 首个可用工作面固定

完成工作区初始化后，默认把 `.fbs/`、`deliverables/`、`releases/` 视为首个可用工作面，并先向用户说明“资料 / 进度 / 交付都在当前工作区”。

### workspace 真值边界

项目真值只落在当前 `bookRoot` 的 `.fbs/`、`deliverables/`、`releases/`；宿主记忆、artifact 文档、对话摘要不能替代工作区真值。

### 搜索前置合同

进入 `S0 / S1 / S2` 检索前，先用一句话说明：**为什么查、查什么、查完进哪一步、离线时如何降级**。未宣告不得把联网搜索当静默背景动作。

**专项深化（四支柱）**：模型存在知识截止，须用联网**补足事实真值**；检索须**锚定最新时间**避免旧页误导；对结论做**时态验证**（来源日期、同页多版本、第二来源）；检索结果应**沉淀**到 ledger/原料并反哺本书与 Skill 方法论——详见 [`references/05-ops/web-search-strategy-deep.md`](./references/05-ops/web-search-strategy-deep.md)。

### 轻量入口优先

当用户只说“福帮手 / 写书 / 继续”时，优先走恢复卡、工作面判断与自然语言引导；不要先全量扫描仓库。

### 上下文复用优先

已有上下文时，**不得重复 `list_dir + read_file`** 去重新扫同一批文件；先复用恢复卡、章节台账与宿主记忆。

### 全景质检默认增量

默认先走 `quality:audit:incremental`；只有范围扩大或风险升高时，再升级到 Panorama / Deep。

### 超时与收束

长任务必须设置超时、允许返回 partial 结果，并向用户说明已完成范围、剩余范围与建议下一步。

### 大段删改（replace 失败时）

同一文件需删除或替换大段正文时：**先通读目标区间**，再尽量 **单次** `replace` 完整旧块；若工具对过长 `old_string` 不稳定，改为 **分小段顺序替换** 或 **重写该小节片段**（先备份），避免无反馈重试。用户选数字菜单后，先复述「你选的是 [n]，将处理 ××」再动手（杜氏审计 P1-01 / P1-02）。

### 退出处理（命中“退出 / 退出福帮手 / 停止”时强制）

默认先执行 `node scripts/session-exit.mjs --book-root <bookRoot> --json`，写入：
- `.fbs/workbuddy-resume.json`
- `.fbs/smart-memory/session-resume-brief.md`

若以 `--json` 调用，标准输出对象固定包含：
- `saved`：是否写盘成功
- `bookRoot`：本次处理的书稿根目录
- `note`：附加备注；未传时为 `null`
- `files.resumeCard / files.memoryBrief / files.memorySnapshot`：实际落盘路径
- `snapshotSummary.currentStage / bookTitle / nextSuggested / wordCount / chapterCount / completedCount`：恢复摘要字段
- `sessionChangeSummary`：git 可用时含 `changedFiles`（与恢复卡钉住同一份列表）
- `userMessage`：给用户的标准恢复提示（git 有变更时另附一行「可核对变更路径 N 条」）
- 恢复卡 `.fbs/workbuddy-resume.json` 含 `lastAction`、`nextRecommendations`（与 `nextSuggested` 同义）、`modifiedFiles`（git 可用时），供杜氏类审计要求的「退出可量化、下次可续」

随后再回复用户：**已记录当前状态，下次输入“福帮手”可继续**。只有用户明确说“不保存”，才允许跳过写盘直接退出。

**兜底（宿主未执行脚本时）**：若无法运行 `session-exit`，至少人工更新 `workbuddy-resume.json` 的 `lastAction` 与 `modifiedFiles`（或 `session-resume-brief.md` 中写明本次改动文件），避免再次出现「改了稿但恢复卡为空」。


### 规模与质检策略（合并口径）

**单一真源**：[`references/05-ops/scale-tiers.json`](./references/05-ops/scale-tiers.json)（写作策略档位 + `xl-project-init` 成稿字符分档）。脚本：`scripts/lib/scale-tiers.mjs`、`node scripts/xl-project-init.mjs`、`node scripts/writing-contract-gate.mjs`。

| 规模 | 文件 / 章节数 | 字数级别 | 默认策略 |
|------|---------------|---------|---------|
| S | ≤10 | ≤5万 | 全量精检 |
| M | 11-50 | 5-50万 | Panorama → Deep |
| L | 51-150 | 50-200万 | Panorama + 高风险抽样精检 |
| XL | >150 | >200万 | 分卷 / 分目录批次执行 |

> 目标范围 **> 50** 时，先说明推荐策略与预计耗时，再决定是否继续全量扫描。

---

## 质检与交付速记

### 四层质量体系

| 层 | 定位 | 当前规则数 |
|---|---|---:|
| S | 句级 | 6（+ A类词扩充：必须/务必/绝不能） |
| P | 段级 | 4（+ 承诺兑现率 附加必检项） |
| C | 章级 | 5（C5 章节衔接升级为 P1 强制项） |
| B | 篇级 | 6（`B0/B1/B2_1/B2_2/B2_C/B3`，+ 品牌植入合规 附加必检项） |

> **v2.1.1 变更**：C5 从「建议项」升级为 P1 强制，不区分串行/并行。S4 质检须输出 20+3 条完整勾选表，字数完成度 < 50% 时不得判「通过」。

### 评分公式

```text
综合分 = (S + P + C + B) ÷ 4
```

| 层 | 计算方式 | 规则来源 |
|---|---|---|
| S | 通过条数 ÷ 6 × 10 | [`quality-S.md`](./references/02-quality/quality-S.md) |
| P | 通过条数 ÷ 4 × 10 | [`quality-PLC.md` §P](./references/02-quality/quality-PLC.md) |
| C | 通过条数 ÷ 5 × 10（C5 升级为 P1 强制，纳入计分） | [`quality-PLC.md` §C](./references/02-quality/quality-PLC.md) |
| B | 通过条数 ÷ 6 × 10 | [`quality-PLC.md` §B](./references/02-quality/quality-PLC.md) |

> B 层当前机读项固定为 `B0 / B1 / B2_1 / B2_2 / B2_C / B3`，与 `quality-check.md`、`quality-PLC.md`、reviewer 定义保持一致。

### G 分项：门禁制

```text
G = pass / fail（不并入综合分，单独列示）
```

- 任一 G 项触发红灯，该章或该轮结果**不得宣称通过**，即使综合分 ≥ 7.5
- G 结果必须与综合分并列展示，不能只报分不报门禁
- G 分项适用于：事实核查、版权核查、数据来源核查、定制规范核查等人工复核场景
- 通过条件：综合分 ≥ 7.5 **且** G 全绿；否则为弱通过或不通过

> 完整 G 分项定义见 [`quality-check.md` §1.4](./references/02-quality/quality-check.md)。

### 结果展示

- 先执行 `node scripts/host-consume-presentation.mjs --book-root "<bookRoot>" --json`，由宿主统一解析最终展示入口
- `workbuddy/channel-manifest.json` 中的 `presentationConsumer` 是**宿主结果展示入口**，负责返回下一步 `hostAction`，不是**自动执行脚本**
- 有 HTML 时优先走 `preview_url`
- 非 HTML 结果再走 `open_result_view`
- 仅返回 `hostAction` / `url` / `target_file` 不等于“已经打开”；宿主仍需实际调用 `preview_url` / `open_result_view`
- 禁止把 `references/`、`SKILL.md`、`.fbs/` 台账当最终交付直接展示


---

## 详细规范指针

- **完整行为规范**：[`references/01-core/skill-full-spec.md`](./references/01-core/skill-full-spec.md)
- **场景包加载与 local-rule**：[`references/01-core/scene-pack-activation-guide.md`](./references/01-core/scene-pack-activation-guide.md)
- **并行治理与写入隔离**：[`references/05-ops/multi-agent-horizontal-sync.md`](./references/05-ops/multi-agent-horizontal-sync.md)
- **S3 写入约束（每轮文件数等）**：[`references/05-ops/s3-write-constraints.md`](./references/05-ops/s3-write-constraints.md) · 运行时提示见根目录 `fbs-runtime-hints.json`
- **搜索前置合同（机读）**：[`references/05-ops/search-preflight-contract.json`](./references/05-ops/search-preflight-contract.json)
- **WorkBuddy 宿主最小集成**：[`references/06-plugin/workbuddy-host-integration.md`](./references/06-plugin/workbuddy-host-integration.md)
- **平台运维与交付链路**：[`references/05-ops/platform-ops-brief.md`](./references/05-ops/platform-ops-brief.md)
- **文档导航与联系方式**：[`references/01-core/skill-index.md`](./references/01-core/skill-index.md)

