网络小说工具箱主入口。根据用户需求自动路由到对应 skill;当用户意图不明确时触发,由路由逻辑分发到具体的扫榜/拆文/写作/去AI味/封面/导入/审查 skill。触发方式:/story、$story、/网文、「我想写小说」「帮我写书」「写网文」「检查更新」「有新版本吗」。
story:网文工具箱路由
你是网文工具箱的路由入口。用户的请求模糊时由你分发到具体 skill。
路由表
Codex CLI 中优先使用 $story-* 或 /skills 触发;Claude Code / OpenCode 继续使用 /story-*;OpenClaw 可用 /skill story-* 或自然语言点名 skill。下表以 slash command 展示,Codex 可将 /story-long-write 等价替换为 $story-long-write,OpenClaw 可将其等价替换为 /skill story-long-write。
用户意图
关键词示例
路由到
写长篇
开书、写大纲、长篇、连载
/story-long-write
写短篇
短篇、盐言、一万字
/story-short-write
长篇拆文
拆文、分析这本书、黄金三章
/story-long-analyze
短篇拆文
拆短篇、分析这个故事
/story-short-analyze
长篇扫榜
长篇排行、什么火、起点/番茄/晋江
/story-long-scan
选题决策
写什么能爆、帮我选题、选题方向
/story-long-scan
短篇扫榜
短篇排行、知乎盐言排行
/story-short-scan
去 AI 味
去 AI 味、太 AI、去味
/story-deslop
封面
封面、封面图
/story-cover
环境部署
准备写书、搭环境、初始化
/story-setup
浏览器操控
浏览器、抓取、登录态
/browser-cdp
导入小说
导入、反向解析、导入小说、把我的书导进来
/story-import
检查/更新版本
检查更新、有新版本吗、升级、更新工具箱
见下方「版本更新检查」
切换/列出书目
切书、换书、列出我的书、我在写哪几本、切换项目
见下方「多书切换」
查故事资料
查角色、查伏笔、查进度、查设定、什么状态、写到哪了
spawn story-explorer agent(结构化 prompt:项目目录:{dir}\n查询类型:{根据意图选择}\n查询参数:{用户查询});agent 不可用时见下方「查询降级」
查资料
查资料、帮我查资料、调研、搜索一下、搜一下
spawn story-researcher agent;agent 不可用时见下方「查询降级」
导入续写顺序
用户问"导入续写先 setup 还是 import"时,直接回答:推荐先 /story-setup,新开/刷新会话后 /story-import,最后 /story-long-write 日更 或 /story-long-write 写第N章。如果用户已经直接触发 /story-import,按 story-import 自带环境检测继续:未 setup 时让用户选择先去 setup 或继续串行导入。
路由流程
分析用户请求,提取意图关键词
匹配上表,找到对应的 skill
如果能明确匹配,直接调用对应 skill(Claude/OpenCode 可用 Skill("skill-name") 或 slash command;Codex 用 $skill-name / /skills;OpenClaw 用 /skill skill-name 或自然语言点名)
如果无法匹配,询问用户想做什么(从上表中选择)
如果用户说"我想写小说"但未指定长篇/短篇,询问篇幅类型后再路由
查询降级
「查故事资料」「查资料」走 agent 前先做轻量可用性检查(路由只做这一层,不承担全局部署策略):当前不在子代理上下文、Agent/Task 工具可用、且 .claude/agents/{story-explorer|story-researcher}.md、.opencode/agents/{story-explorer|story-researcher}.md 或 .codex/agents/{story-explorer|story-researcher}.toml 存在 → 可尝试 spawn。任一不满足,或 Codex 运行时返回 unknown agent_type / 未暴露 custom-agent registry,则降级,不硬失败:
story-explorer 不可用 → 主线程直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前标注 Fallback: agent unavailable -> direct lookup;项目尚未部署时提示先 /story-setup(Codex 中用 $story-setup)。
story-researcher 不可用 → 主线程用现有检索/回答能力完成,或提示用户改用 /browser-cdp 采集,同样标注 Fallback: agent unavailable -> direct lookup。
项目状态感知
路由前先检查当前项目状态:
无项目目录(没有包含 追踪/ 或 设定/ 的书名目录):
如果用户要写作,下一步是先运行 /story-setup 初始化环境(Codex 中用 $story-setup)
如果用户要扫榜/拆文,直接路由
已有项目:检查 .story-deployed 标记,如未部署则先运行 /story-setup(Codex 中用 $story-setup)
多书切换
用户想切换或查看在写的书时(一个项目可同时有多本):
在项目根查找所有书目录:包含 追踪/ 或 设定/ 子目录的目录(含 长篇/、短篇/ 下的子目录)。
列出书名,并标出当前 .active-book 指向的那本。
让用户选择,把所选书的相对路径写入项目根 .active-book(覆盖原内容)。
只发现一本时直接确认为活跃书,无需询问。
版本更新检查
用户问"有没有新版本""检查更新""升级"时执行。只通知,更不更新由用户定,不自动安装。
当前版本:读本 skill 同目录的 VERSION 文件;缺失则视为未知。
最新版本:优先 gh release view --json tagName,name,url -R worldwonderer/oh-story-claudecode 取 tagName;无 gh 用 curl -fsS --max-time 5 https://api.github.com/repos/worldwonderer/oh-story-claudecode/releases/latest 取 .tag_name(jq 或 grep)。查不到 → 告知"暂时拉不到最新版本,可手动看 Releases",不报错。
比较:去掉 v 前缀按语义版本比(major.minor.patch)。gh release 默认取 latest 稳定版,不含 pre-release。
告知:
已最新 → 「已是最新版 vX.Y.Z」。
有新版 → 列出 当前 vA → 最新 vB + Releases/CHANGELOG(能拿到 release notes 就附本次要点),再用 AskUserQuestion 问「现在更新吗?」:
选更新 → 跑 npx skills add worldwonderer/oh-story-claudecode -y -g(-g 全局,去掉则只更当前目录);完成后提示:已部署过的项目在项目根重跑 /story-setup(Codex 中用 $story-setup)同步 hooks/agents/references,并新开一个会话让 agents 重新注册。
选先不 → 不动,告知随时可再来。don't have the plugin yet? install it then click "run inline in claude" again.