@docmd/plugin-threads 插件可在文档页面上实现协作式内联评论与文本标注。高亮与讨论线程使用自定义容器块(::: threads)原生存储在 Markdown 源码文件中。无需外部数据库。

原作者: @svallory

Alpha 版本发布

该插件目前处于 Alpha 阶段。核心 API 与存储 Schema 已稳定,UI 组件正在积极迭代中。

安装与设置

通过 CLI 安装插件:

npx @docmd/core add threads

docmd.config.json 中启用线程配置:

选项 类型 默认值 技术描述
sidebar boolean false true 时,线程在专用面板中展示;为 false 时,线程以内联形式附着在文本高亮旁边。
devOnly boolean true 将前端交互 UI 限制仅在本地开发服务器(docmd dev)运行时加载。在静态生产构建(docmd build)中自动省略。

Live 开发服务器依赖要求

Threads 讨论交互界面、高亮标注工具以及 Markdown 文件持久化写入操作,依赖本地实时运行的开发服务器(docmd dev)以及 WebSocket RPC 连接。

由于 Threads 声明了 requiresLiveServer: true

  • 本地开发运行(docmd dev:右侧停靠滑块标签、行内评论预览卡片、选区弹出框以及侧边栏面板完全正常加载并提供全量交互。
  • 静态生产构建(docmd build:自动剔除前端脚本与样式,确保公开发布的生产站点保持极致轻量、零冗余,且不会产生无效的 WebSocket 连接重试报错。文档中原有的 Markdown 语法块(::: threads==文本=={t-...})依然保持完整解析,不会产生格式错乱。
  • 手动覆盖:如果您明确希望在静态构建中打包 Threads 前端资源,可以在 plugins.threads 中显式配置 "devOnly": false

全局配置示例

docmd.config.json
{
  "plugins": {
    "threads": {
      "sidebar": true,
      "devOnly": true
    }
  }
}

工作流概览

  1. 文本选择: 在本地实时开发期间(npx @docmd/core dev)选择文本段落。
  2. 评论弹出框: 在弹出模态框中输入反馈。
  3. 锚点注入: 选中的文本段落会附带线程标识符进行高亮(==高亮文本=={t-a1b2c3d4})。
  4. Markdown 持久化: 线程结构作为 ::: threads 块追加在 Markdown 文件的底部。
  5. Git 同步: 讨论历史与文档编辑一同保存在版本控制中。

交互式预览

附带讨论的文本会接收到内联彩色高亮。线程卡片在下方渲染:

A
Alice · 2天前
This section could use a diagram to explain the architecture. What do you think?
B
Bob · 1天前
Good idea - I'll add a Mermaid flowchart. Does sequenceDiagram work here?
👍 2
🚀 1
A
Alice · 12小时前
Perfect. A simple flowchart would be ideal.

额外的高亮会自动循环使用不同的调色板

C
Charlie · 3天前
Should we mention backward compatibility here?

已解决的讨论以置灰状态展示:

A
Alice · 5天前  ✓ 已解决
Fixed the typo in the config example.

右侧贴边停靠的标签触发器 💬2 贴紧视口右边缘,显示未解决的主题计数。将鼠标悬停在任何高亮文本上时,会直接在内容中呈现内联评论预览卡片,而点击标签则会滑出讨论侧边栏抽屉。在打开和关闭抽屉时,页面主题会无缝持久保存,无需重新加载整个页面。

Markdown 存储格式

线程使用容器块语法保存在文档源码文件中:

# 引擎概览

核心架构特性包含带有附着线程的 ==高亮文本=={t-a1b2c3d4}。

::: threads
  ::: thread t-a1b2c3d4
    ::: comment c-e5f6a7b8 "Alice" "2026-04-09"
      This text requires additional technical detail.
    :::
    ::: comment c-d9e0f1a2 "Bob" "2026-04-09" reply-to c-e5f6a7b8
      Updated with extra specifications.

      ::: reactions
        - 👍 Alice
      :::
    :::
  :::
:::

核心功能

  • 文本选择: 高亮任意文本以锚定新线程。
  • 嵌套回复: 嵌套对话线程。
  • Emoji 反应: 为评论添加反应计数器。
  • 解决状态: 标记线程为已解决并带有作者归属。
  • 作者身份: 本地 Git 凭证自动解析头像与个人资料信息。

RPC Actions API

Threads 插件暴露可由 docmd.call() 调用的 WebSocket RPC 端点:

RPC 方法 技术描述
threads:get-threads 获取给定文件路径的所有解析后的线程。
threads:add-thread 锚定新线程与初始评论。
threads:add-comment 向现有线程追加回复。
threads:edit-comment 更新评论文本正文。
threads:delete-comment 移除一条评论条目。
threads:delete-thread 移除线程容器并清理正文高亮锚点。
threads:resolve-thread 切换线程解决状态。
threads:toggle-reaction 添加或移除 Emoji 反应。

作者个人资料存储

作者个人资料缓存在 <docsRoot>/.threads/authors.json 中:

.threads/authors.json
{
  "alice@example.com": {
    "name": "Alice",
    "avatarUrl": "https://gravatar.com/avatar/..."
  }
}
Git 原生版本控制

由于线程元数据完全储存在 .md 文件内部,评论天然遵循标准的 Git 分支、Pull Request 评审与提交历史工作流。