Releases: zenstory-ai/oh-story-claudecode
Release list
v0.7.7 — 记忆与收口
补丁号不传达这一点,故在此明说:缺少合法「字数目标」现在会停止,不再回退到 3000;欠字不自动加戏,超字最多压缩一次。
主要变化
- 长篇安全收口。
storyctl.py统一字数与 blocking quality 检查,提交追踪后才进入下一章。 - 跨会话作者记忆。确认过的稳定偏好可复用,并与单本剧情追踪隔离。
- Codex 封面生成。优先使用内置 ImageGen,无需另配图片 API Key。
- 部署与兼容。修复 story-setup 递归复制,并兼容 macOS Python 3.9。
- 反馈入口。新 Issue 按 Bug、输出质量 Case、功能请求分别收集行动所需信息。
升级提示
先更新技能包:
npx skills add zenstory-ai/oh-story-claudecode -y -g然后在写作项目根重跑 /story-setup 并新开会话;本版 agents_version 为 26。
完整变更见 CHANGELOG。
v0.7.6 — 正文 agent 规则修复 · 细纲照搬检测
这版的重点在正文那一段。写正文的专业 agent 有三条规则一直在空转:它被要求「写完必须立即统计字数」,可它的工具白名单里根本没有 Bash,那条命令跑不了,而同一句话又禁掉了唯一的替代手段——于是整个「字数达标是硬性要求」小节挂在一条无法执行的命令上;被要求「返回前报出句长分布」,同样无从计算,只能编,而主会话正拿这个数做质量校验。第三条更隐蔽:模板里「正文逐项展开细纲」是最高优先级的明令,而「可自由编排、合并穿插情节点」写在主 skill 里、从不进 spawn 提示词,子代理也不读主 skill——它只看见限制的半边,就按一个情节点一段平推成流水账。三条都已修好。同时新增细纲照搬检测:细纲把情节点写成成品散文句时,正文只剩誊抄,全章最好的几句其实在写细纲那一步就写完了,此前没有任何检测。本版
agents_version为 25(v0.7.5 是 24),已部署的项目要重新跑/story-setup并新开会话。
升级须知(本版必读)
npx skills add zenstory-ai/oh-story-claudecode -y -g然后在写作项目根目录重跑 /story-setup,并新开一个会话(专业 agent 只在会话启动时注册,正文 agent 这次改了工具白名单,不新开会话拿不到)。完整说明见 skills/story-setup/UPGRADING.md。
修复
-
正文 agent 的字数硬门槛终于能真的执行(#355)。
narrative-writer的工具白名单是[Read, Glob, Grep, Write, Edit],没有 Bash。而它的规则写着「写完每章后必须立即统计字数」,给的是一条 Python 命令,还明令禁止模型估算——两头都堵死,「未达标的章节视为未完成」这句话背后没有任何可执行的判据。同一处的「返回前报出句长分布」也一样,数值只能是编的,而主会话拿它当质量校验的输入。现在给这个 agent 加上 Bash(同项目的story-researcher本来就有),字数和句长都报实测值,探测不到 Python 就明说「未完成机器字数验证」交主会话复核,不许声称已统计。实跑一章的对比:走子代理时首次落盘 2321 字就进了 2300–2530 的验收区间,全程没低于下限;不走子代理的对照组首次落盘 1663 字,不到下限的 73%,靠 26 次小幅增补才爬到 2350。 -
正文不再照着细纲的形状一项一段平推(#355)。模板里「正文逐项展开本章细纲」挂在「最高优先级」标题下无条件生效,而放宽的那半边——可自由编排、合并穿插情节点——只写在主 skill 里,从来不进 spawn 提示词,子代理又不读主 skill。子代理只看得见限制,于是照着细纲的条目顺序一条一段推下去。现在拆成两条并列:内容层管「每项都要独立落地,不许漏、不许两项并一句」,形状层管「落地位置、顺序、断段由你定,可打散重排、把相邻几项缝进同一个连续动作,不要一项一段平推」,形状这半边同步写进 spawn 清单。实跑 1.81 句每段(原文基线 1.36),对照组 2.41。
-
check-outline-copy.js一次传多章不再静默漏检。两处调用点写的都是通配正文/第XXX章_*.md,日更一批多章时会展开成多个正文路径,而脚本把第二个位置参数当成细纲——于是第 2 个正文被当作第 1 个正文的细纲,其余文件根本不检。两份正文之间几乎不可能有 16 字连续重合,脚本安静地退出,读起来就是「本批干净」。现在位置参数一律按正文处理,与同目录check-ai-patterns.js的口径一致,指定细纲改走--outline。 -
Claude Code 上用 Bash 写正文也会被守卫拦下(#316)。写正文前的大纲和追踪检查此前只挂在 Write / Edit 上,绕开它只需要一条重定向。现在常见的重定向、
tee、touch、cp、mv、install写入正文时会复用同一份共享判定,只读命令里的引号示例和 heredoc 里提到正文不拦,相对路径按 hook 的工作目录解析。这一面是静态识别,不是 shell 沙箱:环境变量拼出来的路径、运行时生成的命令、没列出的任意写文件程序都判不了,这类写入请改用 Write / Edit。 -
书目录发现不再无界扫描(#319)。会话起点和结束时的自动发现会把整个项目翻一遍,深目录项目每次都要等。现在统一限制到项目下 4 层,并跳过隐藏目录和
node_modules,四端范围一致。.active-book也不能再经目录符号链接指到项目外。 -
七猫大热榜的榜单周期不再混在一起(#340)。日榜、月榜、总榜此前共用一套抓取,跑出来分不清是哪一档。现在
--period day|month|all会写进文件头和文件名,改为按 URL 直达并校验页面上实际选中的那一档;分页器上的文字也不再被当成书名收进来。 -
起点采集补齐四个缺失字段(#339)。字数、总推荐、签约状态、收费模式此前直接不采,页面上没有时现在明确写
[待补],不留空让下游误以为是零。 -
拆文的章节摘要不再被模板自己教出格式漂移(#349)。输出模板里写的是
类型{转折点/行动/…},小模型照着抄就输出成类型{行动};多标签怎么分隔、空字段怎么写,模板从来没说。现在讲明{}是占位标记不是要输出的字符,补了一个完整正确样例,并把三处约定写死:字段名后不加冒号括号、主题标签只填一个值、空字段统一写「无」。同一份要求还内联进了 Stage 2 的 spawn 提示词,老项目不重新部署也能拿到。已经落盘的摘要不因此作废,不用重新生成。
改进
-
细纲照搬检测(#355)。细纲的情节点一旦写成成品散文句,正文就退化成誊抄——实测正文与细纲连续重合最高 13.5%、单段最长 40 字,且重合的多是叙述而非台词,等于全章最好的那几句在写细纲那一步就定死了,此前没有任何检测。新增
check-outline-copy.js:正文与同章细纲连续重合超过 15 字即报出位置和原片段,子代理落盘后自查、主会话收尾复扫,两边同一份实现。它只提供证据不自动改写——系统面板、誓词、案卷原话、固定专名本就该逐字一致。为此细纲的「情节细化」下新增复沓锚句字段:必须原样进正文的原话逐行列出并注明落在第几个情节点,既强制这些内容逐字落地,也让它们不被判成誊抄。存量细纲没有这个字段的按「无锚句」处理,行为和此前一样,不用回头补。 -
每次会话固定加载的文本又少掉两成(#352)。日更路径下
story-long-write的 SKILL.md 和workflow-daily.md会同时进上下文,后者用近 2000 字复述前者已经写全的规则(写前资料清单、题材卡召回、文风判据、字数验证、元信息扫描),文件结尾还自陈「完整逻辑见 SKILL.md」。删掉重复的那一份,权威留在 SKILL.md。同时把只有写正文才用得上的单章流程和质量检查下沉到workflow-chapter.md,开书和回炉这两条根本不写正文的路径不再为它付费。各场景实际加载:开书 −30.3%、回炉 −40.9%、日更 −4.4%。正文手艺规则(细纲边界、爽点铺垫、去 AI 味 Gate)一条没动——PR #228 的盲评实测过,删那些会退步。 -
超长篇拆文有了一条能跑通的路(#350)。此前「块」这个字同时指两件事:在哪里按叙事弧切,和一次读多少受上下文限制。同一段里既写着「每块 50-200 章」又写着「6-8K token 每块」,差三十到一百倍,于是 500 章以上的书三条路都无解,执行的人只会以为是自己操作错了。现在两轴拆开:语义分块只管叙事弧划分,处理批次给出子代理并行(10-20 章每批,降维回传,按批记进度可续跑)和主线程串行两条路。批次尺寸按实测反推——中文章节摘要约 5-7K token 每章,914 章按 15 章每批约 61 批可覆盖。500 章以下的既有路径没变。
-
拆文 Stage 6 不再二次切片(#333),只读
_progress.md里已经定好的章节边界表。 -
/story-review分批审查的结果不再丢(#343)。新增.story-review/state.md,上一批没解决的 findings 会继承到下一批。 -
正文里的普通名词不再被加引号强调(#315)。
narrative-writer的 Gate B 补了这一条;合法对话、直接引用、书名代号、故事内系统界面的原文照常保留。
维护
- 新增
scripts/check-doc-budget.sh与doc-budget.json:给每个「每次会话或每章都要进上下文」的文件、以及三条路径的合计设了字数上限,进 CI 卡死。超了要么删等量旧文本,要么显式调高上限并在 PR 里写清为什么这段值得每个用户每次会话都付——让文档膨胀变成一次显式决定,而不是无声累积。 - 细纲照搬检测器接回归测试(12 例,覆盖锚句在片段头/尾/中间、片段整体等于锚句、锚句字段写「无」、存量细纲无该字段、一次传多章各自比对),三份跨 skill 副本锁字节一致,三个平台的 CI 都跑。
story-review版本号 1.1.0 → 1.1.1。
v0.7.5 — 追踪状态检查对齐四端 · 减开销
这版没有新功能,都是修问题和减开销。最要紧的一条:Claude Code 上写正文一直不检查追踪状态,而另外三端从 v0.7.3 起就检查,于是同一个工程在 Claude Code 上能一路写出没有追踪的章节。本版把这道检查补上,代价是旧追踪的长篇项目在 Claude Code 上会开始被拦,必须先迁移
追踪/才能继续写,处置方式见下方升级须知。另外长篇写作每次触发都要整份加载的那份 SKILL.md 从 699 行降到 455 行,只有开书才用得上的三个阶段移成按需读取;正文规则里还有一条把普通的「他说」判成违规,与其余 11 处口径冲突,也一并改掉。本版agents_version为 24(v0.7.4 是 23),已部署的项目要重新跑/story-setup并新开会话。
升级须知(本版必读)
npx skills add zenstory-ai/oh-story-claudecode -y -g然后在写作项目根目录重跑 /story-setup,并新开一个会话(专业 agent 只在会话启动时注册)。完整说明见 skills/story-setup/UPGRADING.md。
旧追踪的长篇项目在 Claude Code 上会开始被拦。 追踪/ 下没有 _tracking-state.json 的项目停在 v0.7.2 及更早的追踪结构上,从 v0.7.3 起就该迁移;此前在 Claude Code 上还能照常写下去,本版起会在写入前被拦住。拦截提示里带了迁移办法:走 /story-import 的「旧追踪项目迁移」,只重建 追踪/,不必重跑全书拆解,正文、设定/、大纲/ 都不受影响。
修复
-
Claude Code 上写正文补回追踪检查(#305)。同一本书、同一次写正文,在 OpenCode、ZCode、Codex 上会被拦下并告诉你怎么修,在 Claude Code 上却直接写了进去——追踪状态缺失、状态卡与实际进度对不上、跳着章号写,一概不拦。用户往往一路写出好几章没有追踪的正文,直到会话起点提醒或批末校验才发现,那时只能重新导入补救。原因是 v0.7.3 加的那四道追踪检查只进了共享 JS 核与 Codex 的 Python 实现,而 Claude Code 挂的是另一份纯 bash 守卫,四条一条都没有。现在 bash 守卫改调同一份共享核,四端判定一致、提示一致,续写和改稿也一并纳入判定。这道检查要解析 JSON、只能靠 node,机器上没有 node 时它不生效,细纲那道门则仍是纯 bash,任何情况下都拦得住。
-
正文里的普通「他说」不再被判违规(#312)。
story-format.md把「他说」「她道」列为绝对禁止,是全仓唯一把普通「说」判成违规的地方,与format-and-structure.md等 11 处「普通说可保留」的写法冲突,而它的加载路径正好是正文/,写正文时必定生效。现在改为「避免对话标签机械化」:高频和公式化的标签用动作或上下文替代,普通「说」低频使用可以保留。 -
删掉命中不到正文的「禁止 AI 腔」红线块(#312)。
story-narrative.md里这一块只在拆文库/、对标/、设定/下加载,正文目录根本不命中;那五条规则也已由 narrative-writer 的 7 Gate、禁止事项和确定性检测脚本覆盖。 -
去 AI 味的自然文本基准不再教电报体(#312)。story-deslop 的这张基准表停在三个月前的口径,仍写着「段落 1-3 句为主」,比语料校准早,等于去 AI 味的 skill 自己在把文字往电报体推。已按语料校准改写,并补了一行句内节奏。
改进
-
长篇写作每次触发的固定加载少掉三分之一(#269)。
story-long-write的 SKILL.md 是这个 skill 唯一无条件整份进上下文的文件,references/下那几十个文件都走「参考资料索引」按需读取。它上一版 699 行,其中开书三阶段(确认选题方向、核心设定、大纲搭建)占了 244 行——这三段每本书只跑一次,日更续写和单章写作都用不上,却每次触发都要加载。现在移进references/workflow-setup.md,要开书时才读,SKILL.md 降到 455 行。留下的是每章都要用的部分:场景判断与停靠规则、单章写作流程、质量检查、参考资料索引。移动前后按字节比对过,单章写作与质量检查两节逐字未动。 -
narrative-writer 模板精简约两成(#312)。每章 spawn 一次、整份常驻的正文 agent 模板从 36506 字节降到 29506 字节。删的是与 7 Gate、禁止事项重复的审查清单(
/story-reviewspawn 它时本来就会内联完整评分标准),正文阶段的「具体字数表达校验」(移到审查侧),以及省略号、破折号、段间空行、章节元信息这几处的重复叮嘱——它们每章由归一化脚本自动处理。写作口径没有放宽,Gate A-G 与禁止事项不变。
维护
- 写正文守卫的 bash 那一面纳入跨端一致性断言。此前只锁 Codex 的 Python 与 JS 核,bash 侧没有任何断言,上面那处四端不一致正是从这个缺口漏过去的。新增断言按「同一个工程、同一次写入,两边拦不拦必须一致」比对十组工程状态,并逐个写明该拦还是该放行。
v0.7.4 — 对标目录与参考资料包修复
这版全是修问题,没有新功能。最影响使用的是三件事:导入自己的书以后,「对标」目录里装的是自己的设定;多端部署的项目每次开会话都被告知参考资料包缺了;拆文跑到文风统计那一步,Windows 上直接报错退出。另外把 spawn 的版本检查从硬门禁改成提示,版本对不上不再整体退回单线程。本版
agents_version为 23(v0.7.3 是 22),已部署的项目要重新跑/story-setup并新开会话。
修复
-
导入的书不再被登记成自己的对标(#294)。
story-import早先把「导入的书」和「对标的书」都写作{书名},本书的拆文结果就跟着被复制进对标/,用户看到的就是「对标内容和自己设定一模一样」。现在两者彻底分开:本书拆文只用来重建正文、设定、大纲和追踪;只有明确指定的外部作品才进对标/,没指定就不建这个目录。写作和跨书召回也会跳过历史上误建的对标/{当前书名}/,老项目不会继续被污染。短篇里的本书分析改叫「本书续写基线」。 -
版本对不上只提示,不再阻断多 agent(#294)。以前
agents_version与当前包不一致,就整体退回 solo。但 bump 往往是别的部署物变了、agent 模板根本没动,为此牺牲并行不划算。现在照常 spawn,只在报告里提一句版本不匹配、建议重跑/story-setup。真正退回 solo 的只剩两种情况:agent 文件确实缺失,或运行时不支持自定义 agent。 -
长篇字数只认细纲目标(#295)。此前静态下限表(2000/3000 字每章)和 hook 的「细纲目标 × 90%」并存,是两套标准。删掉静态表,只留细纲目标这一条;细纲没写字数目标时按 3000 字每章兜底,同时提示补纲。
-
browser-cdp 不再教你批量关 Chrome(#295)。原来的清理命令按可执行文件名杀进程,会把用户自己开着的浏览器一起关掉。改成先查出确属调试 profile 的 PID 再结束,macOS/Linux 和 Windows 各给了一条可以直接跑的命令。
-
黑岩扫榜同日不同频道不再互相覆盖(#295)。male、female、all 三个频道当天共用一个文件名,跑完第二个就把第一个盖掉。文件名加上频道,非法的
--channel直接报错退出。 -
重新部署不再认错平台(#297)。story-setup 判断 OpenClaw 的依据之一是 skill 带没带
metadata.openclaw,可 13 个 skill 全都带,而 OpenClaw、Reasonix、通用三条路径部署出来的skills/长得一模一样。等于拿自己部署的东西当判据,把 Reasonix 和通用项目统统认成 OpenClaw。Reasonix 那头恰好相反:判据找的几个文件,它的部署压根不生成,已经装好的项目反而认不出来。现在三端各按自己AGENTS.md的标题行区分,这是唯一互不重叠的标记;已部署的项目还会优先读.story-deployed里记着的target_cli,不再每次重新猜。 -
多端部署不再每次开会话喊缺文件(#299)。多端的
references_dir是用逗号连起来的几条路径,会话起点却当成一条路径去找,于是装得好好的项目每次都被告知资料包缺失,真缺了哪条反而看不出来。改成逐条查,只报确实缺的那条。 -
Windows 上文风统计不再必挂(#300)。这一步会先找可用的 Python,找到的可能是 Windows 原生版本,而样本路径写的是
/tmp/...。原生 Python 把它当成C:\tmp\...,和 Git Bash 写文件的地方不是一处,自然就找不到。改成项目内的相对路径。同一处原先要求全程追加写,重跑时上一轮的样本会留在文件里,统计出来的是两轮混在一起的结果;现在第一段覆盖写。 -
目录不再被当成章节(#301)。不少原文开头带一份目录,里面的「第N章」和正文里的一样顶格,建章节边界表时每一章会被数两遍。这张表是后面几个阶段唯一的切分依据,错一次会一路错下去。现在按行距把开头的目录整块剔掉:目录里相邻两条只隔一两行,正文章节之间隔着整章的篇幅。落表前还会检查章号连不连得上。多卷书每卷都从第一章重起是正常写法,这种重复不会被自动合并。
-
审查的两份评分标准重新对齐(#307)。story-review 有一份内置标准,读不到文件时用;另有一份
quality-rubric.md。两边各自长歪了:文件那份多「任务卡点」,内置那份多「标点节奏」和「具体字数表达校验」,还有三个维度叫法不一样。方向也别扭,读得到文件时用的反而是少两条的旧版。现在补齐成同样 18 项,并加了断言,再分叉会被 CI 拦下。
维护
v0.7.3 — 长篇追踪改单一权威事务模型
长篇追踪改单一权威事务模型:
追踪/_tracking-state.json是唯一结构化状态,所有追踪写入走tracking_commit.py,续写状态卡与伏笔/时间线/角色快照都是工具整份生成的派生视图,日更每章必读从五个文件收缩到三项。Dashboard 目录树改按需加载;章节概要改叙事化、原文引用改精选。v0.7.2 及更早的长篇项目必须先迁移追踪/才能继续写,见下方升级须知。本版agents_version为 22(v0.7.2 发的是 21),已部署项目需重新运行/story-setup并新开会话。
升级须知(长篇在写项目必读)
重跑 /story-setup 后,检查每本书是否有 追踪/_tracking-state.json。没有就是旧追踪结构:日更会停下,OpenCode / ZCode / Codex 上写正文会被 hook 拦。
迁移不需要重跑全书拆解,正文、设定/、大纲/、拆文库/ 都不受影响,只重建 追踪/:走 /story-import 的「旧追踪项目迁移」——数出最后完整章号 N,从旧追踪文件与最近几章正文反推当前状态,构造 last_chapter=N 的初始化事务跑一次 init。旧结构会被按原样整体移入 追踪/_旧追踪存档/,不删除、不参与解析。完整说明见 skills/story-setup/UPGRADING.md。
新增
- Dashboard 按需加载目录树(#273):目录树改为展开时才拉取子节点,大工程首屏不再一次性扫全树;顺带修短篇标准工程识别与懒加载回归,搜索读取失败改为显式标记而不是静默吞掉。
修复
- 长篇追踪改单一权威事务模型(#269 #290 #289):
追踪/上下文.md成为固定 7 栏、硬上限 12288 字节的续写状态卡,每章由工具整份重建;全书历史移到追踪/逐章记录/第NNN章.md(日更不读);伏笔、时间线双视图、角色快照降为派生视图,检索走 story-explorer 按需查询。日更每章必读从五个文件收缩为三项,读取成本 O(N²)→O(N)。narrative-writer不再写追踪/;/story-review新增追踪文件维护;SessionStart 加状态卡体积告警,四端同步。旧结构与_tracking-meta.json、时间线/事件库.json一并退役,不提供兼容层。 - 修上条留下的主流程断链(发版前主流程审查,逐条实测复现):
- 回炉备份被守卫打死——守卫把「文件不存在」当成「首建新章」,于是
workflow-revision规定的正文/第X章_..._原稿_{日期}.md备份必然撞上顺序校验,报「首建第5章前必须先提交第4章事务」,而回炉章号恒小于已提交章号,无解。章号已在追踪范围内时跳过顺序校验,跳章写作仍拦。 - 旧项目没有迁移路径——日更让去
story-import,story-import看到.active-book就答「别重跑、回去日更」,用户在两条命令之间来回弹。判据改用_tracking-state.json是否存在,并给出只重建追踪/的迁移步骤;UPGRADING.md此前全文没提过本次追踪变更,补了完整一节。 - 恢复指令不收敛——「任何失败都重跑同一 commit」只对写入失败成立;校验失败重跑结果不变,派生视图被改后重跑会撞 stale 而工具无 rebuild 子命令。按失败类型分开写,补上
mode=revision整份重建这条实测可行的出路。check失败时只往 stderr 打 ERROR、不输出 JSON,所以当前修订号改为直接读_tracking-state.json的state_revision。 story-explorer与consistency-checker被要求运行tracking_commit.py check,但这两个只读 agent 按设计禁 Bash。改为消费调用方在主会话跑check后传入的值,权限边界不动,也不把随章数增长的完整 state 读进 prompt。- 部署的
story-narrative规则教 agent 手写逐章记录/、上下文.md与伏笔「真实答案」,与同目录story-consistency规则正面冲突,且改设定就会触发;伏笔.md是派生视图、没有该列,手写即让check报不一致。改成登记进事务。 - Claude Code 的 bash 守卫与 JS 核在
拆文库/豁免上漂移,同步收紧;欠账门取「上一章」用 readdir 原始顺序,回炉备份放行后会在哈希序文件系统上挑中未清洗的备份,四端统一排除并排序。 - 五份平台 AGENTS 模板与三份 narrative-writer 仍把
追踪/描述成含「时间线事件库」,而该文件是工具退役黑名单,建出来会让 commit/check 永久失败。 - 守卫层:只读 agent 的 Bash 检测式只认「执行 `cmd`」,「运行 / 跑」完全绕过——上条的越权指令正是这样溜过全套 CI 的;正则补齐并按行豁免委派句式。一条断言禁止 story-import 描述旧追踪迁移,与本版行为相反,改为钉「迁移必须走存档重建」。回炉放行分支补了 parity 回归用例。
- 回炉备份被守卫打死——守卫把「文件不存在」当成「首建新章」,于是
- 章节概要改叙事化、原文引用改精选(#275 #276):概要不再要求用「因为…所以…」串联,改为按时序讲清事件、原因、结果,优先保留改变走向的动作与结果、反常信息、跨章伏笔线索。原文引用只留关键转折、关键台词、写法样本,每章至多 8 条——实测引用占章节摘要 45.5%,而下游 Stage 3 事实溯源回原文、Stage 6 文风锚点从原文切片,均不消费逐节点引用。并行 chapter-extractor 与串行两条路径的要求收敛到一份模板。
- Dashboard 隔离项目与拆文库节点预算(#268):两类目录不再共用同一份节点预算。此前超大项目先扫描耗尽预算后,拆文库即使真实存在也返回空数组,界面把「预算被另一类耗尽」显示成「拆文库为空」。现在各自持有扫描状态与预算,任一类触顶只截断自身。
- 短篇导入与篇幅分流(#285 #286 #287 #288):story-import 调用短篇拆解管道时不再声称对方「无停靠点」——它的 Phase 1 有字数路由和续跑三选一两个提问点,现改为四个 Step 逐条给导入场景取值,题材识别照跑(
genre_detected是阻断级必填)。篇幅分流补字数上界,此前「无章节分隔即短篇」不看字数,十万字裸文本会被建成单文件短篇工程。选题决策.md补自动发现(写作与拆文此前都只看项目根,回填功能长期空转)。story-setup 加参考目录自检,检出 Windows 下npx skills add偶发的部分安装。
维护
- 参考资料解析顺序补
.agents/skills(Codex / Reasonix 实际扫描的 skill root),末层改写成「当前运行时加载本 skill 的目录」;story-setup Phase 2 写明部署幂等(#282)。 - README / README_EN 补方式一的升级说明与 Windows 部分安装的表现和修复方式。
v0.7.2 — agents_version 21 修复重新部署
升级须知(本版必读)
本版把 agents_version 发到 21。 v0.7.1 发出去的是 20,因此 v0.7.1 的正文改动与本版的 hook 修复,都要通过这次升级 + 重新部署才会真正生效。
npx skills add zenstory-ai/oh-story-claudecode -y -g然后在写作项目根目录重跑 /story-setup,并新开一个会话(专业 agent 只在会话启动时注册)。三步缺一,项目里跑的仍是旧模板。
如果你此前是直接跟 main 安装的,
.story-deployed里可能已经是agents_version: 21。这种情况下会话起点不会提示你重新部署,请手动重跑一次/story-setup。
新增
本地写作工作台 /story dashboard(Codex 为 $story dashboard)
从当前工作区启动一个零生产依赖的本地 Web UI,分开展示 拆文库/ 与长短篇写作项目的文件树,支持文件名搜索、Markdown 安全预览、白名单文本轻量编辑、快捷保存、确认删除和 mtime 冲突保护。服务只绑定 127.0.0.1,小说内容不上传;路径规范化、真实路径校验与 2 MiB 上限防止越界读写。
真实 demo 驱动的浏览器测试
拆文与写作 demo 资产整理到 demo/拆文库/{书名}/ 与 demo/长篇/{书名}/;Node API 回归与 Playwright 桌面/移动 E2E 都复制这批真实产物执行,不再另造与实际产物脱节的 fixture。
修复
治细纲形状被正文照抄导致的生硬与章尾总结体(#255)
细纲每个字段都是摘要原语,弱模型 1:1 渲染成一句一段,就是电报体和逐拍交代的来源。本次给 writing-craft 补「从细纲到正文」护栏——细纲是「要发生什么」的内容规格,不规定正文形状,正文可以合并、穿插、重排情节点,把每个点演成场景而不是照抄概括语;开头补 anti-fingerprint;story-review 加同质化判断。
细纲模板的「结尾 / 结尾设定」也从「收束到什么状态」改问「最后落在谁的什么动作、画面或台词上」。依据是真人语料实测:长篇章末句里对话收尾约 29%、动作或画面约 26%,明确的状态总结只占约 1%——真实章节大多停在一个具体动作上,并不做收束。部署 hook 的毒句式欠账门同步新增 trailer-summary 规则(文末 600 字窗口,四端同步)。
仓库质量门禁不再掩盖破坏性失败(#265)
修 Dashboard、hook、adapter 与 contract 校验链路上的 fail-open 守卫、丢写竞态、扫榜部分失败上报不全与测试盲区。Dashboard 保存由 mtime 乐观并发改为版本校验并收进串行化写队列(同秒并发写会互相覆盖已接受的稿件);扫榜单平台失败不再中止整轮,保留可用的部分结果并如实标注采集质量。
会话起点两处长期误报(#173)
拆文库/的「未完成拆文」提醒改按_progress.md的「最终状态」取值过滤,completed/completed_with_errors不再计入。原实现裸数文件,拆完的书每次会话都被报一次。取值只认冒号后的状态本身,模板占位符与「pending(上次 completed 后重跑)」这类括注一律按未完成处理,宁可多报不漏报。- 被动版本更新提醒改为按 24h 节流提示本身。原实现只节流网络请求,缓存里有版本号时同一个版本每开一次会话就提醒一次。取不到 GitHub 时写入负缓存,网络受限的环境不再每次会话空等 5 秒。
/story路由表补上story-review——此前 13 个 skill 里唯独审查没有路由行,「一个口子进」对审查不成立。
维护
完整变更见 CHANGELOG.md。
v0.7.1 — 电报体治理 · 命名护栏 · Reasonix 适配
正文「电报体」彻底治理——写入端做减法 + story-deslop 去抵抗 + 全套短句崇拜清扫(语料 + 五题材实测双证);补同人 / 既有世界观命名护栏;Reasonix skills-only 适配 + 开书对标发现。
修复
- 正文电报体彻底修(#256,续 #254):#254 立了逗号流水句基线仍不彻底——报告人指出跑
/story-deslop时模型把连续短句当「刻意节奏」而抗拒去电报体。本次三层做减法:- 写入端:删「短句=果决热血 / 情绪密度高」奖励、开头事件密度的电报体范例(改逗号流水);narrative-writer「心理外化 / Gate C / 情绪词默认外化」由绝对化改为设上限(模板 + opencode/codex 经 sync 脚本重生成,短篇题材包例外原样保留)。
- story-deslop 去抵抗:anti-ai-writing 规则 3 删掉「连续短句只在三场合连用」的许可,只留「默认逗号长句 + 短句是偶尔的孤立重拍」;模式 9 峰值保护保留;修 story-review 评分表 / style-craft / style-profile 等下游镜像里矛盾的「连用短句」「句长拆短」残留。
- 全套短句崇拜清扫:39 文件普查、逐处判定,清「短句为主 / 多采用短句 / 短句占比 >70% / 见长就拆」等残留;示例句 after 由电报体改逗号长句,黑岩「一句一段」模板换成真实黑岩语料,短篇加整句上限修「盐言被拉成 130 字流水句」的过矫。
- 证据:mongo 爆款语料实测叙述逗句比 1.2–1.74、连续短句 run 仅占 1.7–4.3%;codewhale + DeepSeek-V4-Pro 五题材实测旧规则全崩电报体、新规则全流畅 0 电报 run,且战斗峰值 / 情感克制 / 沙雕 deadpan 不退步。
新增
- 同人 / 既有世界观命名护栏(#257):character-basics 主角 / 配角卡、genre-catalog 同人流派、plot-special-topics 同人写作要点补命名一致性约束——原著角色沿用官方本名 / 译名,新角色贴合原著对应地域 / 文化的命名与译名风格,同一地域不混语系,不套用与设定不符的现代化 / 政治化名字(设定相对,现代设定同人不受限)。低成本兜底降低时代错位取名概率,非确定性修复。
- Reasonix skills-only 适配 + 开书对标发现(#253,Closes #252):新增
target_cli=reasonix(复制 skills +.agents/skillssymlink + Reasonix AGENTS.md,无 hooks/agents 走 solo/direct);开书阶段新增「对标发现」主动扫拆文库/按题材推荐对标书(长篇 Phase 1 / 短篇 Phase 2)+ 卷纲提醒。
内部 / 语料治理
- 正文句长基线(#254):anti-ai-writing 规则 3 重写为「句长基线(短是工具,不是底色)」+ 语料校准注(qimao 125 本×前 8 章:逗号间 8.8–9.6 字、整句 22–24 字、逗号流水占叙述 74–80%);banned-words 缓缓 / 微微 / 轻轻 / 淡淡 降为二级密度控制;清除各处「见长就拆 / 机械长短交替」配方。
agents_version升至 20。
升级
v0.7.0 — 六端 parity · 剧情单元统一 · 去 AI 味机器化
v0.7.0
多端适配再扩两家(ZCode / Reasonix)· hook 核统一到共享 node 核 + 六端 parity 锁 · 长篇「剧情单元」概念统一并接入拆书产物 · 去 AI 味闸口机器化 · 契约体检与脚本加固。
从 v0.6.22 升级:重新运行一次 /story-setup(Codex 用 $story-setup)并新开会话即到位。
新增
- ZCode 3.3.4 原生适配(#234,closes #211):仓库可作 marketplace/plugin 安装,暴露 13 个 Skills、13 个 Commands 与严格 JSON Hooks;
story-setup支持target_cli=zcode,安全合并.zcode/config.json与根AGENTS.md。无第三方依赖的 Node hook runner 覆盖上下文/连续性恢复、大纲守卫、commit advisory、正文轻量确定性网。ZCode 不执行项目/plugin custom agents,涉及专业 Agent 的流程明确降级 solo/direct。 - Reasonix 原生支持 Phase 1(#238,closes #204):根
reasonix-plugin.jsonplugin manifest(version 钉住skills/story/VERSION)+ README 安装说明;扫描.agents/skills发现 13 个 skill。项目级部署与 hooks 留待后续。 - 短篇题材风格包按平台语料重建(#231):题材风格包 4 → 10 个(新增世情打脸、民俗怪谈、悬疑、甜宠、双男主、沙雕脑洞),按七猫/知乎/黑岩/点众四平台真实语料重建,修正世情题材误路由。
改进
- 长篇「剧情单元」概念统一并接入拆书产物(#246):五个混用叫法统一为「剧情单元」,拆书剧情单元接入卷纲/细纲(对标剧情参照、一批=一个剧情单元、剧情单元清单索引);旧版卷纲/细纲/拆文库不阻塞、按结构回退读取。
- 读者契约 + 终局储备推进模型(#237):替代原「成长预算」,放开单章爽感,治长篇后期无可写;Σ 字数预算契约不变。
- 去 AI 味闸口机器化(无状态,#246):写后正文网自动扫描确定性毒句式(「不是 A 而是 B」全家族、声线反差、否定排比、预告收尾)并推回命中;写下一章前新增「毒句式欠账门」(判据现算自文件、不落状态、node 缺失放行,可用
<!-- 去味:跳过 -->显式豁免)。四端共享判定,js↔py 逐字 parity。
重构
- hook 核统一到共享 node 核 + parity 锁(#239 / #243):OpenCode/ZCode/Claude 收敛到同一份
story_hook_core.js,Codex 保留 python 实现由逐字 parity 锁钉住;补 node 缺失/损坏 fail-open 回归。 - 技能契约体检 + fail-fast(#242):版本锚点/Phase/schema/主产物路径/细纲必填项固化成 CI 契约,
agents_version成为运行时过期判定唯一权威;对标主产物缺失改 fail-fast。 - 仓库脚本加固(#233):同步检查改只读+写安全,适配器生成器原子发布+回滚,新增四端真实 CLI 安装兼容 workflow。
修复
- Codex hook 空白
.active-book首行当仓库根(#235):对齐 bash oracle。
其他
- 去掉部署检查的文档措辞门禁(#240):保留
agents_version阈值等行为锚点。
部署提示:本版含 hooks / agent 模板 / 项目规则模板行为变更。.story-deployed 的 agents_version 本周期从 17 连续升到 19,已部署项目重新运行 /story-setup 并新开会话即到位。
v0.6.22 — 长篇题材提示卡 · 短篇投稿层 · 文档瘦身
新增
- 题材正文提示卡(#226,合并 #222/#223/#224):
story-long-write新增genre-prose-cards/32 张番茄题材腔调卡 + 索引召回规范;写作时按设定/题材定位.md匹配召回单卡进写手,anti-leak 硬约束保证卡名/题材标签/置信度/条目/合规自评一律不进正文;narrative-writer 三端模板同步接入召回与按题材细化的文风指纹/Gate G 规则,chapter-extractor 模板新增chapter_formula逐章写法公式产物。 - 短篇投稿层(#227):
story-short-write新增submission-craft.md——知乎盐选/小程序/番茄三路平台基调矩阵(视角、矛盾演进、章末钩子、结局质感)、导语门面单独打磨(四维骨架+黄金三角,150-220 字)、付费点卡脖子断点与反推法排细纲;story-short-analyze拆解时顺带记录投稿层进拆文报告。合并前盲评 A/B 四维全胜(register +0.55、structure +0.58)。 - deslop 任务卡点与比喻密度(#218):任务卡点只在改变信息/情绪/关系/代价/选择压力/伏笔/钩子承接时使用;新增
metaphor-density-ticadvisory(像/仿佛/如同高密度堆叠检测);朱雀定位为辅助信号,去 AI 味不越剧情边界。 - generic Web AI 部署(#216):story-setup 新增
target_cli=generic文件模式(复制skills/+ 通用AGENTS.md,不声明平台原生 hooks/custom agents);story-long-write补通用环境 solo/direct fallback。
改进
- 长篇工作流防失控(#225):裸调用
story-long-write不再自动进入正文/日更模式;开书流程默认停在大纲;日更批量有界;narrative-writer 只扩写细纲计划内情节点,不足时返回outline_underfilled欠账报告交主会话补纲;理顺 setup → import → long-write 的续写工程顺序。 - 全套件文档瘦身(#228):13 个 skill 系统审计后删除可证行为不变的冗余——逐字/同义重复、过期目录、失效行号锚、维护性注释、跨体裁死段、悬空指针,53 文件净 −32.9KB;同名副本组全部字节同步;Σ 字数预算契约、anti-leak、hook 锚点零触碰。
- deslop 防检测器博弈(#220 / #221):吸收社区反 AI 思路但不做讨好检测器的硬规则;新增
action-list-ticadvisory(监控镜头式动作链);外部检测器明确为自检参考、不替代人工通读;恢复朱雀 AIGC 检测 CLI 致谢。
发布准备
- 版本号升级到
0.6.22(.claude-plugin/marketplace.json+skills/story/VERSION)。.story-deployed的agents_version升级到17、setup_skill_version升级到1.2.6;本版含 narrative-writer / chapter-extractor 部署模板更新(题材卡召回 + anti-leak + 大纲边界与 chapter_formula),已部署项目需重新运行/story-setup并新开会话获取。UPGRADING.md新增 v17 条目,README/README_EN版本说明收敛为最近 3 版(更早见 CHANGELOG)。
v0.6.21 — 短篇专属参考栈
短篇写作参考栈瘦身:删掉长篇继承残留,建立短篇专属 format/craft/deslop/题材包体系(#206)
改进
- 短篇写作 references 清理(#206):
story-short-write删除 13 个长篇继承残留参考(角色、长篇结构、通用题材读者、开篇、状态追踪等),避免短篇写作继续被长篇规则误导。新增短篇专属基础层:short-format.md(硬格式/段落/标点/正文契约)、short-craft.md(短篇叙事姿态、情绪直给+体感焊接、三维度揉进、密度控制)、short-deslop.md(短篇去 AI 味,只杀真 AI 腔,不杀情绪烈度)。 - 题材包接管短篇风格(#206):新增
genre-styles/追妻火葬场.md、复仇打脸.md、总裁豪门.md、宅斗宫斗.md四个短篇题材包,把开头模式、爽点密度、对话风格、情绪模式、结尾模式收束到题材本地;冷门题材仍可降级读取genre-writing-formulas.md。 - 短篇/拆文 AI 规则边界显式化(#206):共享
output-contract.md明确拆文报告质量门仍走story-short-analyze/references/anti-ai-writing.md,短篇成稿去 AI 味走story-short-write/references/short-deslop.md,避免两套规则继续靠“本地 AI 腔规则文件”这种隐式短语耦合。 - 部署模板同步短篇例外(#206):
story-setup的 narrative-writer Claude/OpenCode/Codex 模板同步短篇题材包例外:短篇需要“情绪词 + 体感/动作焊住”时不强制改成纯动作外化,只清理空泛无体感的 AI 情绪总结。
发布准备
- 版本号升级到
0.6.21(.claude-plugin/marketplace.json+skills/story/VERSION)。.story-deployed的agents_version升级到16、setup_skill_version升级到1.2.5;本版含 deployed narrative-writer 模板与 reference bundle 更新,已部署项目需重新运行/story-setup并新开会话获取。UPGRADING.md新增 v16 条目,README/README_EN更新 v0.6.21 版本说明。