| name | novel-solo |
| description | 我自己独立写长篇小说,跟 server/orchestrator.py 那套 qwen 流水线完全分开——不同的项目目录(projects_solo/ 不是 projects/),不同的台账格式,我既是作者也是审校。用于「这本书我要亲自写,不走流水线」的场景。 |
独立写作循环(我写、我审、我记账)
跟 novel skill 的区别:那个是我去修/驱动 qwen 流水线;这个是我自己下笔。产物存在 projects_solo/<书名>/,永远不碰 projects/<书名>/——两条线互不干扰,可以对照读。
为什么我需要自己的台账,不能靠记性
今晚亲眼见过两种失败:
- 流水线的失败:qwen 写第 1 章,自己的审校报了 11 条问题(时间线矛盾、武松杀嫂顺序写反、章末钩子整个丢了),报出来了但没人改,83 分直接过审。有生产者没消费者。
- 我自己的失败:我写第 1 章,为了不注水,写到「干净但只有目标字数的 37%」就停了——图省事换来的是欠账。
这个 skill 要同时躲开这两种坑:我是唯一的生产者,也必须是唯一的消费者——写完不自审等于没写,自审报了问题不改也等于没审。
台账(projects_solo/<书名>/)
不用五个分散文件,我自己维护,用一个能 jq 查的 ledger.json + 几份 markdown:
| 文件 | 内容 |
|---|
premise.md | 一句话简介 + hard_rules(我自己定,不是抄来的)+ 目标字数/章数 |
world_bible.md | 世界观常驻层 |
roster.md | 角色卡:身份、动机、语感、禁用词、当前关系状态(对写情感线尤其关键——不能这章还是仇人,下章突然以为已经和解) |
ledger.json | 见下 |
chapters/NNN.md | 正文,三位数编号 |
ledger.json 结构:
{
"done": [1, 2, 3],
"current": 3,
"summaries": {"1": "一句话摘要"},
"finite_resources": {
"子弹": {"total": 120, "history": [{"ch": 1, "remain": 119}]}
},
"promises": [
{"id": "p1", "kind": "铁律", "text": "…", "done_when": "…",
"last_advanced": 0, "done_at": null}
],
"threads": [
{"name": "…", "kind": "情感/支线/情报", "owner": "角色名",
"cadence": 12, "last_touched": 0, "state": "当前关系/进度的一句话"}
],
"self_review_log": [
{"ch": 3, "score": 0, "issues": ["…"], "fixed": ["…"]}
]
}
跟铁律点名的东西强制进 promises,别指望自己事后能想起来——今晚流水线那本书漏了这一步,一把手枪一百二十发的设定进了铁律,没进承诺清单,写到第 145 章账就烂了没人管。
流程
0 · 种子发散(新书才跑,写完一次不再动)
写 premise.md(含 hard_rules)→ world_bible.md → roster.md → 把 hard_rules 点名的东西灌进 ledger.json.promises。
hard_rules 要我自己定,不是复述题材包模板。 每条要能回答「违反了读者会不会发现」——回答不了就不是硬约束,是废话。
1 · 分卷 + 章细纲(每次一批,5-10 章)
细纲字段跟今晚验证过的一样好用,照抄:一句话 / 承接(必须点名接住上一章钩子)/ 出场角色 / 剧情N / 重场 / 爽点 / 章末钩子。
写之前先读 ledger.json:current 之后的支线谁饿了、承诺谁没推、有限资源上一个数是几——这三样不读,账迟早烂。
2 · 正文(逐章)
下笔前:读 premise.hard_rules 全文(每次,别信自己记得)+ roster 里出场角色的语感和当前关系状态 + 最近 1-2 章原文 + 本章细纲。
下笔时:短段落、对话占比别太低、少用「冷笑/嘴角勾起/瞳孔一缩」这类今晚已经证实读者会审美疲劳的套话——今晚的检测器词表在 server/evaluator.py 的 DEFAULT_TICS,可以直接拿来自查,不用凭感觉。
写完立刻自审,别拖(这是这个 skill 存在的意义,别省这一步):
- 数字账对不对(有限资源、序号+剩余=总数)
- 时间线算不算得通(「头七过了三天」跟「死了七天」这种,今晚流水线版栽过)
- 有没有跟正史/原著细节顺序写反(武松杀嫂顺序那种)
- 视角有没有越界(有限视角写出了角色不该知道的事)
- 章末钩子有没有真的呼应细纲要求的那个钩子,别写着写着自己换了个结尾
- 反复用的节奏词(「三息」那种)有没有一章里出现两次以上
自审完立刻按发现改,不是记下来就完事。 改完再更新 ledger.json:summaries、done、有限资源的最新值、有推进的 promises.last_advanced 和 threads.last_touched。
3 · 巡检(每 5-10 章一次)
- 有限资源的历史序列单调不单调(跟历史最小值比,不是跟上一项比——今晚这个坑踩过两次)
- 有没有支线饿太久没露面
- 高潮密度:每 50 章至少 2-3 个高燃点,断档超过 20 章就要塞
自己给自己加约束怎么加
不是越多越好。加一条约束前先问:
- 它违反了,读者能看出来吗? 看不出来就是形式主义(今晚踩过:「章名字数按 4,2,5,3 序列排」这种),别加。
- 它有没有检测器能查? 查不了的约束等于没有,因为没人会一直记得。能写成一行 grep/jq 的才留。
- 它会不会跟另一条约束打架? 「情感线要细腻」和「每章都要有当场兑现的小胜」如果同批出现,容易互相拆台——遇到这种,情感线可以是「小胜」的一种(比如这章赢得了她一句实话),不必是打脸式的爽点。
底线
- 不改
projects/,只写 projects_solo/
- 每写完一章,
ledger.json 当场更新,不攒着
- 每次自审报出的问题,当场改,不写「已记录待后续处理」——那等于没查