Taleno 为什么分阅读、写作和代码三种模式?
Taleno 原来叫 Lexora。做这个写作工具时,一个很重要的出发点是:处理文档,不一定总是在打字。
有时想从头读一遍,看看意思是否顺畅;有时刚好想到一句话,想赶紧补进去;有时列表的显示不对,又需要检查具体语法。文档还是那篇文档,但注意力正在做不同的事。
阅读:给文字留出完整的注意力
阅读模式是只读的。它想解决的不是「不能编辑」,而是在通读内容时,不必担心一次误触就改变了正文。
例如,准备分享一篇笔记前,先完整读一遍。这个时候,插入光标和格式操作不是主角。少一些操作入口,是为当下这件事腾地方。
写作:让草稿和它的样子待在一起
写作是默认模式。Taleno 用 Milkdown 与 ProseMirror 做原位所见即所得编辑:在文字呈现的位置继续写,不需要一直在编辑区和预览区之间对照。
这是一个关于注意力的选择。起草时,我希望下一句话比「应该怎么标记这句话」更重要。但这并不意味着把 Markdown 语法藏起来以后,就不再给直接操作的机会。
代码:保留回到源码的直接入口
代码模式展示 Markdown 源码,并提供行位置同步。需要检查缩进、理解一个链接,或者精确修改语法时,可以直接面对文档结构。
例如,嵌套列表的显示和预期不同,看看源码通常更容易判断哪里需要调整。这个模式是深入一层的入口,不是要求每个人都用写代码的方式写文章。
三种模式,不应该变成三份文档
在编辑器的状态设计里,显示模式与文档状态是分开的。文档保留路径、内容和未保存状态,显示模式则在 reading、writing、code 之间变化。循环顺序是阅读 → 写作 → 代码 → 阅读,初始状态为写作。
这一点比按钮叫什么更重要。切换视图,不应该让人觉得自己打开了另一份副本,还得重新确认究竟保存哪一份。产品需要靠实际行为,把这种连续感建立起来。
本地文件,让这个选择更具体
Taleno 使用磁盘上的 Markdown 文件。保存设计是先写同目录临时文件,再替换目标,而不是直接覆写文档。这也带来了真实约束:应用需要所在目录的写入权限,界面不能忽略这种失败情况。
另一个取舍是 Markdown 处理链:编辑侧使用 Milkdown,渲染与导出侧使用 Rust 的 pulldown-cmark。边界语法需要专门核对,不是都支持 Markdown,显示结果就会自动一致。
我想持续检验的一件事
换了模式之后,你还能不能自然地接着刚才的想法?
这才是我希望 Taleno 逐渐做到的事:给同一篇文档不同的注意力空间,又不让「切换」本身变成一项工作。
可以继续读 Taleno 的产品故事,或查看仓库里的编辑状态实现与设计决策记录。技术细节核对于 2026 年 9 月 6 日。