macOS · SwiftUI · 本地优先

执笔

Z H I B I

AI 写草稿,人做定稿。

一本长篇写到第三百章时,真正的敌人不是文笔,是账:谁还活着、谁在两地同时出现、 第 8 章埋的那把刀到底收没收、大纲里那条线什么时候断的。 执笔可以让 AI 搭骨架、写整章草稿,也可以把整套账记住;但决定权始终在你—— 所有会改书的产出一律先做提案,你审查、修改、采纳之后才进正文。

macOS 14+·Swift 5 / SwiftUI·无云端存储·正文是纯 markdown
写作软件这两年都在抢着替你写。
执笔也会替你写草稿——
但定稿永远由你说了算。
谁还活着 第 8 章那把刀收了没有 哪条感情线什么时候断的 这个钩子是不是和第 3 章撞了
Product law

铁律不是「AI 不能写正文」,
而是「AI 写什么都要你点头」

整章草稿也一样:作者审查、修改、采纳之前不落盘,采纳时自动留快照可回滚。完成与否以磁盘为准,不信模型口头声明。

AI 可以

全部以提案形式交付,进收件箱等你处理
  • 构建核心大纲与事件时间线(作者真相 / 读者已知双栏)
  • 盘点伏笔、登记埋点(F 编号、五档节奏、种下原文)
  • 搭章节骨架:场景层节拍 + 章尾钩子 + 硬交付 + 伏笔触点合同
  • 规划卷级弧光(20–40 章路标 + 伏笔收支表 + 期待感账)
  • 一键写整章草稿、按你的意见修订草稿(采纳前不进正文)
  • 在右侧对话里查书、找伏笔,必要时直接提交整章草稿提案
  • 提取记忆、一键召回上下文包与写作备忘
  • 一键验证、全书连贯性审查(只查客观错误,只报告不代改)
  • 埋点修复方案、大纲同步建议、去AI味逐处建议

AI 永远不可以

这些不是提示词约定,是代码里没有那条路径
  • 提案未经作者采纳就改任何台账、大纲或正文
  • 替作者做正典决定(角色生死、世界规则、伏笔取舍)
  • 在作者拒绝后保留数据
  • 改正文而不留快照
  • 声称「已完成 / 已保存 / 已采纳」——一切以落盘为准
  • 用「风格好不好」的主观评价代替作者判断(审校只查客观错误)
Capabilities

把网文这门手艺,做成可执行的账

创作法典不是往提示词里塞一段鸡汤,而是沉淀成代码能消费的知识与确定性检查——同一套法典既指导生成,也用来验收生成结果。

创作法典

13 个流派档案(读者预期 / 题材禁区 / 可用爽点形态 / 开篇律 / 节奏参数 / 体系通胀控制)+ 网文创作法(黄金三章、期待感管理、打脸循环、金手指代价律、卷弧、主角能动性)+ 传统文学创作法(草蛇灰线、白描、意象、留白、视角距离、典型人物、春秋笔法、起承转合、文气、复调)。按能力裁剪后注入,不整本塞。

13 流派 · 7 种钩子形态

卷骨架 · 章骨架

先规划 20–40 章的卷级弧光(起承转合 + 章级路标 + 伏笔收支表 + 期待感账),认可后再逐章细化成节拍。每拍带场景层:视角贴着谁、地点、时间标记、在场人物、这一拍的转折。

写前契约

骨架闸门

批准之前用确定性代码给骨架打分(0–100):到期伏笔有没有进合同、章尾钩子是否挂在具体物件上、连续几章是否同一种钩子(套版感)、视角有没有漂移、同一时间有没有人分身两地、字数预算合不合理。不合格直接回灌模型当轮自纠。

11 组检查 · 零 LLM 成本

全书连贯性审查 + 埋点修复

死者复出、位置跳跃、人称漂移、时间线倒挂、伏笔台账烂账(种下原文对不上正文、兑现逾期、疑似已收未记账、动作日志指向不存在的章)。每条烂账都配一个可一键采纳的修复动作:补埋 / 改期 / 回收 / 搁置 / 放弃 / 校正原文 / 补登记。

20 类检查 · 只改台账不动正文

大纲实时对账

大纲不该是建书时生成一次、之后越来越不可信的旧计划书。它把「计划」与「正文里实际发生的」逐事件对账:已发生 / 疑似偏移 / 未发生 / 已取消,再算剧情线健康度(健康 / 放缓 / 停滞 / 断线 / 待收束)与阶段完成度,产出更新提案。采纳后大纲才是活文档。

计划 vs 实际

去AI味

25 项确定性检测(零成本、随打字更新)分三层:措辞层禁用词与「不是A而是B」、心理层认知动词堆叠与抽象名词密度、结构层段落等长 / 句长平坦 / 段首同构 / 对白占比 / 信息倾倒 / 转场缺失 / 万能过渡;再加网文命门(章末钩子空泛、情绪曲线平坦)。还有反向保护:把句子全打碎本身就是一种新指纹,同样报警。

25 检测器 · 三 pass · 逐条采纳

一键成章 · 分段写作

⌘↩ 真一键:草稿 → 一致性审查 → 去AI味 自动串到底,产出全进收件箱,停在采纳之前。3000 字以上的长章按骨架节拍切块,每块带着上一块实际写出来的结尾续写,非末块被明确要求「不要收束本章」,最后拼成一份草稿提案。

⌘↩ · 600–2400 字/段

交叉记忆中枢

双时态事实三元组(谁在从第几章起相信什么、什么时候失效)+ 人物别名表,派生出人物关系图 / 剧情图 / 事件图三张可拖拽的图。写到 100 章不会忘第 3 章的钩子;「一键召回」按当前章造上下文包。

双时态 · 图谱

AI 协作面板 · 资料库

右侧常驻「对话 / 轨迹」双窗。对话先检索正文、设定、档案卡、伏笔、事实与时间线,再回答并把回答里的短引用对齐到完整出处;来源芯片可点击跳到章节或台账,失败可重试、已答可重新生成,整段对话还能导出 Markdown 或归档到作品目录,并在应用内回看、筛选、批量删除或恢复归档;归档同时写可恢复 JSON,导出会附带本次登记的提案快照。可以选择对话针对的章节,从零提交整章草稿,也能搭/改该章骨架、做一致性验证、写档案卡或提议大纲更新,全部只登记提案。资料库索引覆盖正文、摘要、骨架与全套账本,关键词 BM25 + 本地哈希向量,同长度改字也会自动重建,切片与向量化在后台执行并显示确定进度;配置 embedding 模型后按 16 条分批走远程重排并缓存,失败会在页面上明确标出回退。每条命中都能直接前往出处,章内命中会自动滚动并持续高亮原文,直到你移动光标或开始打字;也可以一键交给 AI,把出处与摘录带进右侧对话继续提问或续写。

⌘⇧J · 检索带来源 · 整章草稿提案

稿纸主权

专注模式(⌘⇧F)全窗只剩稿纸;正文是权威纯 markdown,随时可以整个带走;删除即废纸篓可恢复;导出合并稿 / oh-story 目录回写 / 分卷 TXT;API Key 存 macOS 钥匙串,不落盘、不进仓库。

本地优先
Why this one

三条路都被试过,然后才有了执笔

下面三种方案,是长篇作者真实会走的岔路。它们各自都能撑几十章,撑不到第三百章。

对比 · 开个聊天窗口让 AI 写

模型的记性,撑不起你的体量

聊天框的上下文是金鱼的:写到第三百章,它已经不记得第 8 章那把刀,也敢让断了手臂的角色重新举剑。执笔把「谁在什么时候知道什么、哪条伏笔种在哪、承诺几章内兑现」全部记成本地可校验的账,喂给模型的是造好的上下文包,不是它的回忆。

对比 · 大纲与世界观管理工具

管计划容易,对账难

传统写作工具存的是你打算写什么。可真正的痛苦来自「我实际写了什么」和那份计划已经分叉了。执笔逐事件把两者对账:已发生 / 疑似偏移 / 未发生 / 已取消,再算每条剧情线的健康度(健康 / 放缓 / 停滞 / 断线 / 待收束)——大纲于是变成活文档,而不是越来越不敢打开的旧计划书。

对比 · 只做措辞替换的去AI味插件

换词救不了结构病

把「一丝」换成「些许」不叫去AI味。执笔 25 项检测里有一半在管结构:对白占比是否掉进说明文腔、连续九百字有没有信息倾倒、章末钩子是否挂在具体物件上、情绪曲线是不是全章一个速度。还带反向保护——把句子全打碎本身就是一种新的机器指纹,同样报警。

What the ledger looks like

账本长什么样

下面是执笔真实的数据结构(不是界面截图,是它替你记的那本账)。每一块都是可校验的 JSON,作者也能直接读。

伏笔台账 · 一条逾期了
编号
F01 —— 断刀上的「界」字
量级
大(跨卷)
节奏
即刻(约 3 章)
种下
第 1 章
最后推进
第 1 章 已 5 章未动 → 过期
种下原文
「刀柄上刻着一个界字,笔画很深」
补埋 / 改期 / 回收 / 搁置 / 放弃 / 校正原文 / 补登记——每条烂账都配一个可采纳的动作;其中「补埋」故意不推进最后推进章,好让逾期警报一直响到你真的把它写进正文。
章节骨架 · 一拍的场景层
发生什么
老周追上来,交出半枚铜牌,说当年的事他知道一半
功能
埋伏笔 [F02]
视角
沈砚(整章贴着谁写)
地点 / 时间
山道岔口 · 时间标记缺失
在场
沈砚,老周
转折
从隐瞒到松口
场景完整度
80%闸门会追问缺的那一格
没有转折的拍是过渡,全章都是过渡就是注水;同一时间把同一个人放进两个地点,是 blocker。
大纲对账 · 计划 vs 实际
E01 计划第 1 章 → 已证实 匹配度 100%
E02 计划第 3 章 → 实际第 5 章 向后偏移 2 章 · 78%
E03 第 6 章骨架的章末钩子已把这条信息交给读者 → 建议标为「读者已知」66%
L02 感情线连续 4 章没有推进 → 建议转入蛰伏 70%
打分用 max(Jaccard, 交集/短侧×0.85),消除长度不对称造成的误杀;摘要优先、正文兜底;每条建议都带人话理由与取证片段,让你看得出它凭什么这么判。
双时态记忆 · 谁在什么时候知道什么
沈砚
获得 断刀 自第 1 章
沈砚
知道 刀被劈断 自第 5 章
老周
知道 当年的事 读者尚不知情 · 仅作者账本
别名
沈砚 ← 小砚 / 砚哥
事实带失效章,所以「第 4 章他左臂断了」不会在第 20 章又被他举起来——这类矛盾正是连贯性审查要抓的。
Verification

不打开界面也能证明它没坏

项目自带一个无头自检 CLI 和一个 mock 模型端点。前者跑纯函数与内存账本,后者把「宿主交工具面 → 模型回调工具 → 落成提案 → 采纳 → 落盘」整条链变成可重复回归——不需要 API Key。

449
无头自检全通过
ZhiBiCli · EXIT=0
122
宿主往返回归
mock OpenAI 端点 · 零 Key
25/20
去AI味检测器 / 连贯性检查类
全部零 LLM 成本
20
AI 能力,写作产出走提案
会改书的能力都有 propose_* 生产者

这些数字是仓库里的自检跑出来的,不是宣传口径。自检里专门有一节守「老 JSON 向后兼容」—— 新增字段如果没配显式解码器,用户磁盘上既有的大纲和骨架会整份解不出来、静默丢失。

Who it's for

说清楚它适合谁,也说不适合谁

与其让你装完再失望,不如现在就说。

✓如果你是这样,它帮得上

体量一上来,账就先崩
  • 写长篇网文 / 类型小说,一次开两三本,靠记忆已经管不住伏笔
  • 被「设定矛盾」「角色在两地同时出现」「这条线写着写着断了」折磨过
  • 想让人机协作,但拒绝让 AI 替你落笔——正文必须是你自己的
  • 稿子只肯放本地,不接受「上传到我们的云端帮你管理」
  • 已经在用 oh-story / InkOS 这类社区工作流,想要一个能读能写回的工具

✕如果你要这些,别浪费时间

不是做不出来,是刻意不做
  • 想要「一键生成一整本书」——这个功能不存在,而且是产品铁律明确禁止的
  • 只想要一个更漂亮的纯文本编辑器,不需要台账、对账、审查
  • 要 Windows 或 Linux ——目前只有 macOS 14+,没有跨平台计划
  • 完全离线、一个 API 端点都不想配 —— 理账可以离线,AI 提案不行
  • 期待开箱即用的商业级打磨 —— 它是作者自己在用的工具,界面还会改
Under the hood

技术取向

界面SwiftUI(macOS 14+),原生 AppKit 混排:稿纸用 NSTextView 保住中文输入与富文本渲染,Markdown 只读预览走 TextKit 1 以支持表格
Agent 基座按 fx / libfx 的模型在 Swift 内同构实现(会话、流式事件、checkpoint 由宿主持久化);传输走 OpenAI 兼容 SSE + tool-calling,DeepSeek / GLM / Kimi / MiniMax / Ollama 换 baseURL 即换
确定性引擎验证、连贯性审查、大纲对账、骨架闸门、去AI味扫描、记忆图谱——全部零 LLM 成本,随时可跑、结果可复现、可被自检钉死
存储一个 .zhibi 目录就是全部:正文是权威 markdown,结构是 JSON,原子落盘、快照可回滚、无数据库、无云端
凭据API Key 存 macOS 钥匙串,不写进配置文件、不进仓库、不进日志
工程project.yml + xcodegen 生成 Xcode 工程;SwiftPM 依赖;Debug / Release 与 CLI 三套 target 全部 CI 可无头构建
Get it

怎么跑起来

目前从源码构建,还没有签名好的安装包。

# 1. 生成 Xcode 工程
brew install xcodegen
xcodegen generate

# 2. 构建 App(执笔.app)
xcodebuild -scheme ZhiBi -configuration Release \
  -skipMacroValidation build

# 3. 无头自检(不打开 GUI、不碰真实数据)
xcodebuild -scheme ZhiBiCli -configuration Debug \
  -skipMacroValidation build
ZhiBiCli                    # → 280 项全通过

# 4. 不需要 Key 也验一次整条 agent 链路
python3 Scripts/mock_model_server.py 8799 /tmp/zbdump &
ZhiBiCli --mock-agent http://127.0.0.1:8799/v1 /tmp/zbdump
                            # → 94 项

构建产物在 DerivedData/.../Release/执笔.app, 直接 open 就能用。 首次使用在「设置」里填一个 OpenAI 兼容端点的 API Key(存钥匙串),或者用 Ollama 完全本地跑。

它现在是什么阶段:一个作者自己在用的工具,不是打磨过的商业产品。 界面会改,数据格式保证向后兼容——自检里有一整节专门守这条,因为丢稿子是不可原谅的。

仓库 & 设计文档

笔还在你手里,
账终于有人记了。

macOS 原生 · 本地优先 · 正文是你能随时带走的纯 markdown。