FBS-BookWriter(OpenClaw 封装版)
上游版本:2.1.2(与仓库
FBS-BookWriter同源)
适配目标:OpenClaw 技能模型:SKILL.md+metadata.openclaw(name蛇形命名、skillKey用于openclaw.json中skills.entries/ 代理 allowlist)。
本目录为 OpenClaw 专用入口:与 WorkBuddy / CodeBuddy 市场通道解耦(发布包内 不含 workbuddy/、codebuddy/、.codebuddy-plugin/),仍保留完整 references/、scripts/、scene-packs/、assets/ 与 package.json,便于在 Gateway 内用 shell/exec 调用同一套 Node 工具链。
认知资产与商业口径(与主仓一致):价值表述统一为「可进化、可分发、可增值」;能力分层统一为「场景包 + 乐包 + 离线/在线会员」。机读见根目录 fbs-runtime-hints.json → cognitiveAsset;首响 JSON 见 firstResponseContext.cognitiveAssetSnapshot。详细说明见 references/05-ops/cognitive-asset-threeization.md。
安装(OpenClaw)
从 ClawHub 安装(推荐,需已发布): 在已登录环境下执行 openclaw skills install fbs-bookwriter 或 npx clawhub@latest install fbs-bookwriter,再于技能根执行 npm install。列表与版本见 ClawHub 上的 fbs-bookwriter。
- 将技能根目录(文件夹名建议
fbs_bookwriter,与name一致)放到任一扫描路径,例如:- 工作区:
./skills/fbs_bookwriter/(优先级最高) - 或
~/.openclaw/workspace/skills/fbs_bookwriter/ - 或
~/.openclaw/skills/fbs_bookwriter/ - 或在
~/.openclaw/openclaw.json→skills.load.extraDirs中加入父目录
详见 Skills 与 skills-config(load.watch默认会热更新技能快照)。
- 工作区:
- 在技能根执行一次依赖安装:
npm install(Node ≥18;可选依赖用于 HTML/Docx 等,见package.jsonoptionalDependencies)。 - 重启会话或执行
openclaw gateway restart/ 聊天中/new,用openclaw skills list确认加载。
OpenClaw 宿主差异(相对 WorkBuddy)
| 能力 | WorkBuddy | OpenClaw(本封装) |
|---|---|---|
| 入口展示 | intake-router --json + 宿主消费 userFacingOneLiner | 同样执行脚本拿 JSON;向用户只展示脚本给出的一行摘要 + 最多 3 个选项,勿堆全文 |
| 执行命令 | 宿主 bash / 终端 | 使用 OpenClaw exec / shell;cwd 必须为技能根(含 package.json 与 scripts/) |
| 检索 | 宿主 web_search | 使用 OpenClaw 提供的 联网搜索 / 浏览器(若启用);不可用则按 search-policy 与脚本离线降级 |
| 文件工具 | list_dir / read_file / search_file | 勿用仅按文件名搜索来探测 .fbs/ 内文件(部分环境不索引点目录);对 .fbs/workbuddy-resume.json、esm-state.md 等应 read_file 已知路径 或对书稿根 list_dir 确认 .fbs 存在 |
| 市场清单 | workbuddy/channel-manifest.json 等 | 本包不包含;不影响脚本化写作主链路 |
执行速查(每次会话)
-
统一入口(必做)(
bookRoot为用户书稿根目录的绝对路径):node scripts/intake-router.mjs --book-root "<bookRoot>" --intent auto --json --enforce-required需要完整在线场景包时再在命令中加
--full(可能较慢)。 若 JSON 返回projectAnchor.status=ambiguous,先让用户确认项目根路径,再用确认后的--book-root重跑;确认前不要读取任意.fbs/*内容。 -
恢复:优先
read_file<bookRoot>/.fbs/workbuddy-resume.json;若无则读chapter-status.md或进入 S0.5 引导。不要用「全库搜索文件名」代替存在性判断。 -
退出:用户说退出时先软询问,再执行:
node scripts/fbs-cli-bridge.mjs exit -- --book-root "<bookRoot>" --json回复须包含脚本 JSON 里的
userMessage(会话已记录、下次可继续)。 -
阶段与门禁:推进阶段前读
.fbs/esm-state.md;S3.5 扩写须先有用户确认的.fbs/expansion-plan.md,扩写字数以node scripts/expansion-word-verify.mjs或expansion-gate.mjs实测为准(禁止纯模型估算)。 用户说“继续”时按推进优先阈值判断:S0 素材数达到“赛道数×2”、S2 具备章标题+目标字数、S3 已完成≥3章时,优先提议进入下一阶段。 推进 S0→S1 前可运行node scripts/s0-exit-gate.mjs --book-root "<bookRoot>" --json --confirm-advance做强制门禁检查。 -
写作约束:串行优先;每轮默认最多改 2 个文件;详见
references/05-ops/agent-task-strategy.md。 扩写/精修前先做源文件备份:node scripts/source-write-backup.mjs --book-root "<bookRoot>" --scope expansion --json(expansion-gate默认已自动备份)。 进入 S3.7 精修时优先执行node scripts/polish-gate.mjs --book-root "<bookRoot>"(先备份再质检),避免绕过门禁直接改稿。 交付收口前执行node scripts/release-governor.mjs --book-root "<bookRoot>",自动保持唯一终稿并归档旧版本。 对外交付前执行node scripts/material-marker-governor.mjs --book-root "<bookRoot>" --fix,清理待核实-MAT与[DISCARDED-*]标注。 全稿/终稿/终审稿发布前必须执行node scripts/final-manuscript-clean-gate.mjs --book-root "<bookRoot>",若检测到过程标注则不得交付。 任何“已完成/已通过”结论必须附脚本证据(命令或输出路径),禁止仅口头宣称。
意图 → 脚本(节选)
完整表见仓库根目录随包分发的 WorkBuddy 版 SKILL.md 镜像或 references/01-core/intake-and-routing.md。
| 场景 | 命令 |
|---|---|
| 初始化书房 | node scripts/init-fbs-multiagent-artifacts.mjs --book-root "<bookRoot>" |
| 环境预检 | node scripts/env-preflight.mjs(参数见脚本 --help;含 glob/iconv-lite 依赖检查) |
| 章节合并 / 健康快照 / 一致性审计 | merge-chapters.mjs、book-health-snapshot.mjs、consistency-audit.mjs 等(--book-root / --skill-root 指向对应根) |
| CLI 总线 | node scripts/fbs-cli-bridge.mjs help |
输出格式
- 对用户:短状态 + 可操作下一步(≤3 条),避免泄露内部规范条文与完整 JSON。
- 提到术语/文件名时补一句“用途+价值”(例如:
chapter-status.md=进度台账,价值是避免漏章和重复写)。 - 落盘:以
<bookRoot>/.fbs/、deliverables/、releases/为真值;规范见references/01-core/skill-full-spec.md。
错误处理
- Node/脚本失败:向用户说明失败步骤;若仅缺可选依赖,提示
npm install或跳过非必需功能。 - 书稿根未就绪:引导先
init-fbs-multiagent-artifacts或走 S0 最小集(见references/01-core/intake-and-routing.md脚本不可用降级节)。 - 沙箱无环境变量:若 OpenClaw 在 Docker 沙箱中运行且未注入宿主
env,需在openclaw.json中为代理配置sandbox.docker.env或关闭沙箱(见官方 skills-config 文档)。
权威文档索引
- 总规范:
references/01-core/skill-full-spec.md - 工作流:
references/01-core/section-3-workflow.md - NLU:
references/01-core/section-nlu.md - 运行时契约:
references/01-core/runtime-mandatory-contract.md
OpenClaw 封装维护说明:与 pack:openclaw 产物同步;metadata.openclaw.skillKey 与目录名 fbs_bookwriter 应对齐以便 skills.entries 配置。