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