重设计 · 写作台

三层:库 → 书 → 章

上一版的病不是难看,是元素太多、要想。这一版只留三样常驻:你在哪本书、你在看要素还是章节、一条指令栏。 其余全部按需展开。助手是改动的主要入口,但它不是聊天窗——它是一条指令栏加一份指令记录, 因为对话流会让人以为要先读完历史才能动手,而记录只需要在想改进措辞时才打开。
砍掉了页签
[写][读][计划] 三个页签在说「你有三个地方可去,自己挑」。改成两个:故事要素和章节——这是两种东西,不是两个地方。
一次只开一样
四个要素是四行,点开一行其余自动收起。上一版把四样同时铺开,每样各带两组控件——八个能动的地方,没有一处在说该动哪个。
记录长在输入框上
点进指令栏,说过的话自己升起来;点一条就粘回栏里,改两个字再发。不占顶栏按钮,也不是聊天窗——只在要写指令的那一刻出现。
决定数量从 16 降到 2
八章书原本要签八次、入库八次。现在:确认要素一次,排到上限一次。入库默认自动,想逐章把关的人自己打开。

库 · 最外面那一层

下面 01–07 是进到一本书里之后的事
库
哪本书在等我?
一本书一行,一个状态,一个动作。不显示成本、不显示引擎。
书
这本书我现在该干什么?
写还是读,二选一。写这一侧再分要素和章节。
章
这一章的字。
正文。要么读,要么改。
这一层只回答一个问题:哪本书在等我。所以书按「在等你 / 在写 / 完成了」分组,而不是按时间或字母排—— 时间排序要求人自己扫一遍才知道该点哪本,而分组把这件事替他做了。
库 书架 按「在等你」分组 · 每本一个动作 · 九种状态各有一句话
我的小说 6 本
在等你 2 本
雪线之上
0 / 6 章
四样要素等你过一遍
旧线以南
2 / 4 章
第 3 章上次没写成 · 没扣费
在写 不用等,写好了自己会挪上去
盐路
3 / 8 章 2 章没读
正在写第 4 章 · 排到第 8 章
渡船没有灯
5 / 12 章
正在写第 6 章 · 排到第 12 章
未命名
刚建的
在想前提、大纲和人物
写完了
灰白的六月
5 / 5 章 · 写满了
上限到了 · 想更长得开新的一本
还有 1 本已经关掉的 ·看关掉的书
注 每本书的动作按钮只有一个,而且是这本书此刻唯一能做的那件事——写、去看、再来一次、读。同一行里绝不并排两个按钮,否则这一层就退回成了让人比较选项的地方。「在写」那一组明确写着不用等,因为轮询是十秒一次,用户盯着它没有任何好处。红只落在书上,不落在功能上:两本正在写的书各有一个方块和一段进度。一本书正在写的时候不会同时给「写」——引擎每本书同时只跑一章,所以那一行的动作是「去看」,不是再签一次;把签字按钮留在那里等于摆一个服务端会拒的动作。「写一本新的」是次要的——这一层的问题是「哪本在等我」,不是「再来一本」,所以它不该跟书抢那一点红。已关掉的书收进一行文字,不占分组——它们不会再有动作。
库 写一本新的 · 上限是这里唯一不可撤销的东西 一句话开头 + 一个上限 · 别的都能以后再说
写一本新的
这本书讲什么
两家人四代驮盐走同一个山口,今年这条路要铺柏油了
一句话就够。助手会从这句话里生出前提、大纲和人物,你再改。这一步收一次规划的钱——一切都按 token 计费,新账号有赠送额度。
最多写多少章
自己填
定了就改不了 上限也就是这本书的花费上限
8 章,按这类书的均值大概 ~980 分——是均值,不是报价,同一本书里单章差过 5.7 倍。
以后不能往上加。想写更长的,是开一本新的书,不是把这本改大。往少写随时可以,写到哪算哪。
建书收一次规划的钱 · 第一章也要你签了才写
注 只问两件事,因为只有两件事必须现在定:写什么和最多写多长。书名不问——助手会起,而且用户此刻还不知道这本书叫什么合适。上限用一个 2px 方框单独框起来并写明「定了就改不了」,因为它是这一层唯一不可撤销的决定;四个预设值让大多数人不用思考,自己填的框留给知道自己要什么的人。均值旁边那句「不是报价」必须在点下去之前出现,不能等扣了费再解释。
01 故事要素 · 开写之前 四行,一次开一行 · 「开始写」在四样都确认后才亮
盐路 还没有章节 · 上限 8 章
余额 4,812
每一章都从这四样生成。先看一遍,确认完就能开始写——之后还能改,只是已经写出来的章节会留在它当时的版本上。
前提 两家人四代驮盐走同一个山口,今年这条路要铺柏油了。 已确认
大纲 8 章,和你的上限一致 正在看
1 米拉独自把这一季最后一趟盐驮过山口。
2 她发现旧道上被打进了测量桩。
3 工程师回到村里,被人认了出来。
4 米拉的姑姑拒绝在通行权上签字。
还有 4 章 · 点开可以逐行改
直接在行里改,或者用下面那条指令栏
人物 米拉、奥雷尔、赶骡人、姑姑 待看
世界规则 还空着——空着也能写,这是一个合法的答案 可选
还有 2 样没看过
改大纲
注 顶栏没有「指令记录」按钮了——记录在点进输入框的那一刻自己升起来(下一屏)。一份只在写指令时才有用的东西,不该在不写指令时占一个常驻按钮。
注 指令栏的标签跟着当前打开的那一行走——现在是「改大纲」。它作用于什么,由屏幕上开着的东西决定,不需要用户再选一次。空着的世界规则不画空文本框,画一句「空着也能写」:一个可选项如果长得像未完成项,人就会去填它。
02 章节 · 已排到上限,引擎在写第 4 章 一章一行 · 正在写的那一行自己在动,没有全屏等待
盐路 3 / 8 章
余额 4,812
写到第 8 章就停 · 每章写完自动入库
1 米拉独自把这一季最后一趟盐驮过山口。 2,348 字 已读
2 她发现旧道上被打进了测量桩。 2,971 字 未读
3 工程师回到村里,被人认了出来。 3,104 字 未读
4 正在写 · 已有 1,840 字 引擎自述:draft_scene · 第 3 个场景 · 已进行 1 分 12 秒 可以关掉页面,写好了在这里
5 米拉在水库路上跟着车辙走下去。 排队中
6 奥雷尔把测量记录交了上去,少了一页。 排队中
还有第 7、8 章在队里
已花 368 分 · 这本书平均每章 ~123 分(是均值,不是报价)· 没写出来的不收费
影响后面的章节
注 「排到上限」把八次签字变成一次,八次入库变成零次——这是这一版减掉的绝大部分心智负担。内容里只有一处红:正在写的那一行的方块——唯一一件正在发生的事。另一处红是分段控件的选中态,那是设计系统自己的样式,属于外壳而不是内容,所以不算在这条约束里。引擎的自述用等宽字并标明是它的原话,因为百分比不存在,编出一个进度条就是撒谎。
03 正文 · 就是一个可以打字的文本面 点哪里光标就到哪里 · 选中、删除、换行都和文档一样 · 停下就存
第 3 章 3,104 字 · 从大纲 v1 写出(现在是 v2) 编辑中
字号 17px
正文 直接输入 · 3,104 字
凯斯勒隘口的木屋
标题也能改

门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去,听着炉子响一声、冷一分,算出自己晚到了不足一天。

登记簿在它一向在的那格架子上。春天那几页没了,这是常事,每年都烧,可撕的手法是新的,也是糙的,像有人赶时间。

外面的光一下子从雪面上撤走了,云是从山脊那边翻过来的。她明白今晚得睡在一个她答应过自己再也不睡的地方。

已存 · 14:31 · 每次停下自动存 不扣费 · 不经引擎 · 不动大纲和人物
要开接口 两条都要新开路由。轻的那条是改字(一个接受正文的 PUT,幂等、不跑模型、不扣费),重的那条是重写单章(要使章节重新跑一遗,收费)。先做改字:这是用户真正天天要的,也是两条里简单的那一条。

冲突的处理我提一个方案:手改过的章被重写时,不拦、不丢,把手改版留成一份旧版——弹窗说「你在这一章改过 3 处,重写后这些会回到引擎的写法;旧版留在历史里」。拦住会把人卡在一个他不知道怎么退出的状态,直接丢则是全套里唯一一处不可恢复的丢失。
04 点进指令栏 · 说过的话自己升起来 整行可点,点一条就填回栏里改 · 不是聊天窗,也不占顶栏
盐路 3 / 8 章
余额 4,812
前提 两家人四代驮盐走同一个山口,今年这条路要铺柏油了。 已确认
大纲 8 章,和你的上限一致 正在看
人物 米拉、奥雷尔、赶骡人、姑姑 待看
世界规则 还空着——空着也能写,这是一个合法的答案 可选
你说过的话 点一条填回下面,改两个字再发。留着是为了让你看出哪种说法管用。
14:22 · 大纲 把铺路推迟到第 5 章,让路来得晚一点 改了第 3–8 章的梗概
14:09 · 人物 让工程师年轻十岁,给他一个留下来的理由 改了 1 个人物 · 奥雷尔
13:51 · 大纲 再紧凑一点 没改动——助手说这句太笼统,不知道该动哪里
13:40 · 第 4 章 把感情线提前到第 4 章 已交给引擎 · 它自己决定怎么用——说了不等于它照做 已用掉
还有 2 条更早的
改大纲
把铺路推迟到第 5 章,让路来得晚一点
注 记录从指令栏往上长,不是从顶栏往下拉——它出现的位置就是它要去的位置,点一条,字进栏里,光标在末尾。整行是点击目标,所以「再用一次」按钮全部删掉了;只有真的改了东西的行才留一个「撤销」。第三条是故意留的:一句没起作用的指令也要记下来并写明原因,否则这份记录只会教人重复成功的句式,学不到边界在哪。第四条「排给章节」的指令和改要素的指令混在同一份里,因为在用户眼里它们是同一件事:我跟它说过什么。

读 · 另一个界面

写和读是两种心态,混在一起两边都不舒服。这一侧一个生成控件都没有:没有指令栏、没有「写下一章」、没有余额、没有引擎自述。 只有目录、正文和检索。唯一的通道是右上角那个「写作台」,它长得像个出口,不像一个功能。
05 读 · 一本书 先给「接着读」,再给目录 · 未读用方块标
盐路 3 章可读 · 1 章读完
接着读
第 2 章 · 测量桩
读到 62% · 上次是昨天晚上
目录 2 章没读完
1 最后一趟盐 2,348 字
2 测量桩 读到 62%
3 凯斯勒隘口的木屋 3,104 字
第 4 章正在写 · 第 5–8 章在队里
注 「接着读」占一个 2px 方框,因为回来的人十次有九次就是要它——目录是给另外那一次的。这一侧的分母永远是已经存在的章数,不是上限——顶栏写「3 章可读」而不是「8 章」,翻章写「共 3 章可读」而不是「3 / 8」。把上限当分母会让读者以为有 8 章能读,然后在第 3 章末尾撞墙。上限是写作那一侧的事。正在写和排队中的章收成一行灰字,不放进度条。
06 读 · 正文 36em 行宽 · 字号存下来跨书生效 · 上下章在底部,不在顶部
盐路 · 第 3 章
18px
第三章

凯斯勒隘口的木屋

门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去,听着炉子响一声、冷一分,算出自己晚到了不足一天。

登记簿在它一向在的那格架子上。春天那几页没了——这是常事,每年都烧——可撕的手法是新的,也是糙的,像有人赶时间,且不在意事后看着如何。

外面的光一下子从雪面上撤走了,云是从山脊那边翻过来的、不是从谷口上来的。她明白今晚得睡在一个她答应过自己再也不睡的地方。

第 3 章 · 共 3 章可读
注 顶栏的线从 2px 降到 1px,是全套里唯一一处——正文该是屏幕上最重的东西,围着它的框不该跟它抢。翻章放底部:读完才需要它,放顶上等于在人还在读的时候提醒他可以走了。整屏一处红都没有:这一侧不发生任何事,也没有主要动作,所以没有东西值得用红标。
07 读 · 检索 只搜已入库的章 · 命中处高亮,点进去落到那一段
登记簿
3 处命中 只在已入库的 3 章里找——正在写和排队中的章不在其中
第 1 章 …出关的时候要在登记簿上写下驮了多少斤,她照旧少写了一成…
第 2 章 …测量队的人问她要登记簿,她说那东西不在她手上,也不该在他手上…
第 3 章 …登记簿在它一向在的那格架子上。春天那几页没了,可撕的手法是新的…
主题 七套配色 · 换的只有底色、墨色和那一个强调色 0 圆角、2px 主线、Archivo、左对齐都不变——主题是配色,不是改版
日 白天 · 默认
第三章
凯斯勒隘口的木屋
门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去。
夜 暗光 · 强调色提亮
第三章
凯斯勒隘口的木屋
门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去。
纸 久读 · 暖底
第三章
凯斯勒隘口的木屋
门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去。
靛 冷底 · 换了色相
第三章
凯斯勒隘口的木屋
门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去。
暮 柔和 · 暖玫瑰
第三章
凯斯勒隘口的木屋
门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去。
苔 静 · 绿墨
第三章
凯斯勒隘口的木屋
门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去。
跨 取自跨性别旗
第三章
凯斯勒隘口的木屋
门是从里面顶开的,说明有人想让天气进来。米拉在门口站了一会儿才进去。
旗子的三色
给开发 不给任何一套配色贴性别标签。「这套给女生」是设计错误,不是贴心——它替人做了一个不该由界面做的判断,而且真想要柔和配色的人里,各种人都有。有用的做法是把轴拉宽:原来四套全是冷、中性或红热,缺柔和的一档,所以加了暮(暖玫瑰、低刺激)和苔(绿墨、安静)。跨取自跨性别旗,当成一套认真的可用配色做,不是彩蛋:旗子的浅粉 #F5A9B8 做不了强调色(当填充配底色文字是 1.75:1,远过不了 4.5:1),所以强调色保留色相、压到能用的深度,卡片上把旗子三色单独列出来说明来处——而不是假装浅粉能用。除日以外的六套强调色当填充全部过 4.5:1(4.83–5.85)。日是例外,而且是继承来的:设计系统自己的 #ec3013 在 #f3f2f2 上是 3.76:1,系统文档写明它「够图标、大字和界面外壳用,不够正文」。所以在日这一套里,强调色只用于填充、标记和大号标签,不用于段落文字——这一条要写进实现里,不能靠自觉。对比度比配色本身重要:一套好看但正文读不清的主题,等于没做。

每套主题只声明四个值:--color-bg、--color-surface、--color-text、--color-accent。中性灰阶和强调色梯度全部由这四个 算出来,不逐套重写——否则暗色主题会继承为亮底调过的灰,第一版就是这么坏的。主题存在账号上,不是浏览器里:换设备还是那一套。
多语言 界面语言和小说语言是两件事
盐路 8 章 · 已读 3 检索
中文
The Salt Road 8 chapters · 3 read Search
English
塩の道 全 8 章 · 既読 3 検索
日本語
给开发 下拉换的是界面语言,不是小说的语言——正文永远按写它时的语言显示,切到 English 不会把中文小说翻译掉。这一点要在下拉里写清楚,否则第一次点的人会以为自己的书要被翻译。书名跟着走是因为它是内容的一部分:翻译层只覆盖界面文案,内容原样。三种语言的行高不同(日文假名比汉字矮、拉丁字母有升降部),所以顶栏用 flex 居中而不是写死行高。
要你定的
改字的路由,优先度
改错别字是天天要的,重写单章是偶尔要的,而前者简单得多(一个 PUT,不跑模型)。建议先上这一条,重写放下一轮。
排队中途失败
许可仍然签着(这是它能续上那一章而不是跳过的原因)。队列停下等你,还是自己重试?重试不收费,所以自动重试合理——但连续失败要有上限。
读到哪里,存在哪
「接着读 · 62%」和未读方块现在都没有服务端字段,只能存浏览器。换设备就没了。主题和语言也一样——这三样都该上账号,是同一个字段的活儿。