Petrichor logoPetrichor
返回深度文章
02 产品向

Petrichor 五大亮点功能巡礼:从写作到发布的完整闭环

富文本编辑器、知识库结构、AI 助手、LLM Wiki 智能问答、公开博客——逐个拆解

2026年5月26日 约 2 分钟阅读 通用
Petrichor 五大亮点功能巡礼 的总结图

如果说上一篇讲了 Petrichor「为什么存在」,这一篇就直接展开「它具体能做什么」。下面五个功能不是简单的”特性列表”,而是把日常写作流真正闭环起来的关键节点。


亮点一:媲美 Notion 的富文本编辑器

Petrichor 的编辑器基于 PlateJS(Slate.js 之上的高级框架),不是传统的 Markdown 编辑器。这意味着你看到的就是最终样子,所见即所得;但你又随时可以用 Markdown 语法触发块转换——输入 # 空格变成 H1,- 空格变成无序列表,``` 变成代码块。

它支持的节点类型,按用途分类:

类别节点
基础块段落、标题(H1–H6)、有序 / 无序 / 任务列表、引用、分割线、Toggle 折叠块
代码与公式多语言代码块(自带 Shiki 语法高亮)、行内代码、KaTeX 行内 / 行间数学公式
表格完整的 Notion 风格表格,可调列宽、对齐方式、合并单元格
媒体图片、视频、音频、文件附件、URL 嵌入(Twitter / YouTube 卡片)
画布与图表Excalidraw 嵌入式白板、Mind Elixir 思维导图、Mermaid 流程图(通过代码块)
结构辅助Callout 提示框、目录 TOC、双列 Column 布局、Date 日期插入、@ 用户提及
协作Comment 评论、Suggestion 修订(建议改动)

打开编辑器的第一感觉应该是”和 Notion 长得几乎一样”。但有几个只有自己用过才会发现的小差异

  • 斜杠菜单(输入 /)按使用频率智能排序,常用的”标题 / 代码 / 列表”永远在最前
  • 块拖拽:左侧的拖拽手柄允许你把整个块(包括嵌套结构)拖到任意位置
  • 块选择:可以选中多个块批量删除 / 复制 / 拖动,键盘 ↑↓ 在块之间跳
  • AI 入口:浮动工具栏右侧、斜杠菜单首位、固定工具栏都有 AI 按钮,点哪个都能进

亮点二:多级目录树的知识库

很多博客系统的”分类”只有一层。Petrichor 的知识库是真正的多级目录树,任意层级嵌套。

每个用户可以创建多个知识库(KB),每个 KB 内部是树形结构:

工程笔记/
├── 数据库/
│   ├── PostgreSQL 索引性能调优.md
│   ├── 慢查询分析.md
│   └── 迁移脚本/
│       ├── 2026-04-add-summary.sql
│       └── ...
├── 前端/
│   ├── PlateJS 入门.md
│   └── 状态管理对比.md
└── 阅读笔记/
    └── ...

这种结构带来了几个具体的好处:

  1. 不再需要”分类 + 标签”的双重维度 —— 大粒度用目录,细粒度用标签
  2. 拖拽就能重新整理结构 —— 把一个节点拖到另一个分支下,子树跟着走
  3. 侧边栏永远反映你当前的工作上下文 —— 不会出现”我这篇文章到底属于哪个分类”的困惑
  4. 公开分享按子树进行 —— 你可以公开”前端”整个分支,但保留”阅读笔记”为私有

知识库内部还有几个值得一提的功能:

  • 思维导图视图:把整棵子树切换成思维导图,鸟瞰知识结构
  • 文章 RSS / Atom Feed:每个公开知识库自动暴露 /rss.xml/atom.xml
  • 全文检索:基于 PostgreSQL 的 tsvector 全文索引,中英文都能搜

亮点三:嵌入式 AI 写作助手

Petrichor 的 AI 写作助手是编辑器原生的一部分,不是”另一个聊天窗口”。

它支持的 6 种动作

动作输入典型场景
续写不选中文字,光标定位即可写到一半卡住,让 AI 接着写一段
改写选中一段这段话表达不顺,换个说法
扩展选中要点把要点扩成完整段落
精简选中长段太啰嗦了,留核心
翻译选中 + 选目标语言中 → 英 / 日 / 韩 / 法 / 西 等
语气调整选中 + 选语气把”硬邦邦”的句子改成”友好”的

所有结果都是流式插入——AI 输出第一个字符开始,编辑器里就能看到内容在涨。如果生成的方向不对,可以中途按 Esc 中断,重选 / 改提示再来一次。

更重要的是这套系统的”无锁”设计:

  • 你需要的不是”Petrichor 提供的 AI 模型”,而是”你自己的 OpenAI / Gemini / DeepSeek / SiliconFlow / 任意 OpenAI 兼容服务的 API Key”
  • 后台「AI 配置」页可以同时配置多个模型,默认模型可以一键切换
  • 每个模型都可以单独调温度(temperature)、最大 token 数、DeepSeek 的 thinking 模式开关等

填进去的 API Key 通过 AES-256-CBC + PBKDF2 在写入数据库前加密,没有 PETRICHOR_ENCRYPT_KEYPETRICHOR_ENCRYPT_SALT 这两个环境变量就解不开——即便 Supabase 的数据库被人扒了一份,密钥也不会泄露。


亮点四:LLM Wiki 智能问答

当知识库累积到几十、几百篇之后,会冒出一个新的痛点:写过的东西自己也想不起来在哪了

Petrichor 的 LLM Wiki 智能问答把整个知识库变成了一个可以对话的助手:

  1. 后台索引:每篇文章在保存时被切分成段落级 chunk,调用嵌入模型生成向量,写入向量库
  2. 提问检索:你在对话框里用自然语言提问,Petrichor 先做向量检索,找出最相关的几段原文
  3. LLM 回答:把检索到的原文 + 你的问题一起喂给 LLM(依然用你自己的 OpenAI / Gemini / DeepSeek Key),生成自然语言回答
  4. 引用原文出处:每条回答下方自动列出引用的文章与段落,点击直达原文位置

这意味着:

  • 「我之前在哪篇文章里写过 Postgres 索引膨胀的处理?」→ 直接拿到答案 + 原文链接
  • 「整个知识库里关于向量检索的几篇笔记,核心结论是什么?」→ 跨文章综合回答
  • 「这个项目去年的部署步骤我记过笔记,具体是哪几步?」→ 找回当时的判断

它解决的是一个很现实的问题:写得越多,越容易忘记自己写过什么。LLM Wiki 让旧笔记从”沉在数据库里”变成”随叫随到”。

技术上它复用了亮点三的「AI 配置」——同一个 API Key、同一套 AES-256-CBC 加密;向量库直接走 Supabase 的 pgvector 扩展,不需要再引入额外的向量数据库。Chunk 切分策略、检索 rerank 与 token 预算控制的细节放在第 5 篇讲。


亮点五:一键公开的博客发布层

写完一篇笔记后,要把它变成公开博客,只要一个开关

  1. 打开任意知识库文章
  2. 右上角”分享” → 勾选”公开访问”
  3. 选择你想暴露的字段(封面、摘要、标签、修改时间……)
  4. 复制公开 URL,发到任何地方

这一个开关背后,Petrichor 自动为你做了:

  • SEO 元数据:自动生成 <title> / <meta description> / og:image / og:url,让微信 / Twitter / Linux Do 上贴出来的链接卡片是好看的
  • 结构化数据:JSON-LD Article schema,帮 Google 理解这是一篇文章
  • 公开 RSS / Atom Feed/rss.xml/atom.xml 自动包含所有公开文章
  • sitemap.xml:所有公开文章自动出现在 sitemap,便于搜索引擎抓取
  • 公开缓存:通过 petrichor_public_content_cache 表预生成渲染后的 HTML,公开页访问不会重复读取大表
  • 博客首页主题:内置一个名为 Retypeset 的极简博客首页,自动列出你所有公开文章、按标签 / 时间组织

如果你想完全自定义博客的样子,也可以——所有公开页面共用 apps/web/src/features/pages/public/ 下的几个组件,改样式 / 加自定义模块都很直接。


它们如何串起来

单看每一个功能都不算革命性,但串在一起就是一个完整的工作流:

打开编辑器(亮点一)

写到一半 → 唤起 AI 助手续写 / 改写(亮点三)

写完 → 在多级目录中找到合适的位置(亮点二)

打开"公开访问"开关 → 自动获得 RSS / SEO / sitemap(亮点五)

几个月后 → 想不起某段旧笔记在哪 → LLM Wiki 对话直接问出来(亮点四)

回头打开当时的文章 → 在原地继续修改 / 续写

整个循环里,你从来不用离开 Petrichor。这就是它存在的全部意义。


下一篇我们就掀开盖子,看看为了让这五个功能跑起来,底下的架构长什么样:「架构总览:用 Vercel + Supabase 撑起一个全栈应用」