dsh-study-note:DeepSeek Harness 的按需对话笔记与索引管理

前言

在使用 DeepSeek Harness(DSH)时,对话内容很容易在会话结束后散落。如果不做记录,后续查找和整理会很麻烦。现有的做法通常是手动复制粘贴到文档,既耗时又容易遗漏。

dsh-study-note 是一个 DeepSeek Harness 插件,它让对话按需自动生成结构化的 Markdown 笔记,并维护一个根目录索引。每个对话在开始时默认关闭记录,你需要显式启用,这样不会影响其他对话。

是什么

dsh-study-note 是 WaterFountain-Jack 维护的 DeepSeek Harness 插件。它将显式开启的对话转化为 Markdown 学习笔记,并为每个笔记创建单独的文件,同时维护一个根目录的 README.md 索引。

插件通过 /note 命令集控制记录开关、同步、状态查看和主题管理。笔记内容包含问题、结论、解释、公式/代码/示例、AI 起草的理解、未解问题和源轮次编号等区域。后续相关追问会更新同一区域,不相关追问则新增区域。

安装与启用

安装前请确保已安装 Node.js 22.19+,并有一个提供 commands、sessions 和 llm 的 DSH 配置文件。插件依赖 DSH 0.1.0-rc.8、0.1.1-rc.2 或 0.2.0-rc.2。

  1. 克隆插件仓库,安装依赖,打包成安装包:
git clone https://github.com/WaterFountain-Jack/dsh-study-note.git
cd dsh-study-note
npm install
npm pack
  1. 将打包后的 .tgz 文件安装到你指定的 DSH 配置文件中。示例中假设配置文件名为 desktop:
dsh plugin --profile desktop add "$PWD/dsh-study-note-0.1.1.tgz"
dsh --profile desktop --dump-config
  1. 如果 DSH 没有热加载插件,请重启该配置文件。

  2. 在对话中依次发送以下命令,然后提出学习问题并等待回答:

/note on Cordis
/note status
  1. 录制会在回答结束后在后台运行。使用以下命令检查和同步:
/note sync
/note status

查看生成的文档和根目录索引。完成后使用 /note off 关闭当前对话的记录。

卸载时保留笔记和本地状态:

dsh plugin --profile desktop remove dsh-study-note

命令参考

命令 行为
/note on [topic] 开启当前对话的记录,仅处理开启后开始的完整轮次。重复使用不会重置检查点。
/note off 取消并等待后台工作完成,保留已有文件。成功后不再对新轮次写入。
/note status 显示开关状态、目录、主题、文件、待处理工作和最新错误。
/note sync 立即处理所有符合条件的已完成轮次。需要在开启状态下运行,不会回填关闭期间的轮次。
/note topic <topic> 固定主题并移动当前对话的笔记,重建索引。
/note reindex 重建插件拥有的根索引,无需模型调用。可在关闭时使用。
/note new 清除关联,需在旧笔记删除或移出根目录后使用。会自动关闭记录。

主题命名规则:1–64 个字符,允许字母、数字、下划线、连字符或中文字符,必须以字母或数字开头。固定主题可以创建目录,自动主题选择仅使用现有目录,否则使用 inbox。子代理对话无法开启记录。

笔记与索引结构

笔记保存在配置的 notesDir 目录下,结构如下:

~/.dsh/study-notes/
├── README.md
├── Cordis/
│   └── 2026-10-15-Cordis-学习-<session-hash>.md
├── inbox/
└── .study-note/
    ├── state.json
    ├── writer.lock
    └── requests/

每个文档对应一个对话。相关问题时一个包含问题、结论、解释、公式/代码/示例、AI 起草理解、未解问题和源轮次编号的区域。后续相关追问会更新同一区域,不相关追问则新增区域。手写区域不会被替换,相关追问会追加补充区域。索引只维护 README.md 中 <!-- dsh-study-note:index:start --> 和 <!-- dsh-study-note:index:end --> 之间的内容,外部手写条目保持不变。插件仅索引自己的文档,不会自动整理无关笔记。

配置说明

插件条目 ID 为 study-note,可选通过覆盖层指定不同的根目录:

- id: study-note
  config:
    notesDir: '~/study-notes'

保存覆盖层并在启动时传入 --patch <绝对覆盖路径>,或者将条目合并到你的配置覆盖中。项目不会修改活动配置或现有知识库。

字段 默认值 含义
notesDir ~/.dsh/study-notes 绝对路径或 ~/ 路径,每个同时运行的 DSH 进程建议使用独立目录。
debounceMs 1500 完成轮次后延迟多少毫秒开始后台处理。
timeoutMs 60000 辅助请求截止时间,包括审计写入。
provider、model 缺失 同时提供非空字符串以覆盖,否则复用已完成回答的路径。
maxInputBytes 98304 整个分帧辅助请求的 UTF-8 限制,超大会导致明显失败。
maxOutputBytes 65536 序列化流块的限制,不仅包括最终文本。
maxOutputTokens 4000 辅助输出 token 上限。
recentSections 6 作为后续上下文提供的最近笔记区域数量。
maxMessageChars 12000 每个问题、回答或区域文本的限制,截断会明确标记。

隐私、成本与故障处理

从未开启的对话不会产生记录文件或辅助模型调用。录制只选择人类源文本和未来已完成轮次的最后一个完整助手文本,排除推理块、工具结果、图像、注入用户消息和中断输出。本地过滤掉确切确认消息和进度问题,其他无关轮次仍可能需要模型调用以决定是否跳过。

每个符合条件的轮次可能触发对配置提供者的额外付费请求,包括被跳过的内容。同一对话同一时间只运行一个请求,不同对话可并发运行。先前的笔记区域,包括你在这些区域中的编辑,可以进入这些请求。插件不会读取 API 密钥或环境值,但对对话文本中输入的密钥不会进行脱敏。

请求分派前,系统提示、消息路由、token 限制和源事件编号会写入 .study-note/requests/。这些本地审计文件会保留选定的对话文本,即使模型跳过该轮次或随后关闭记录。新文件所有者权限,未加密,现有父目录权限不会收紧。关闭或卸载不会删除文件,没有自动保留清理。

辅助请求不会插入到主模型历史或 DSH 会话日志中。测试过的宿主无法安全注册外部信息会话事件,因此重放需要将插件审计目录与 DSH 对话日志放在一起。录制期间没有 shell 命令或模型工具执行。

模型错误、无效 JSON、截断完成、文件缺失、标记损坏和权限错误通过 /note status 和运行时日志报告。修复原因后使用 /note sync,失败模型工作重试时可能会再次计费。状态、索引和笔记是独立的原子文件替换,不是一次性事务;索引失败可能留下已保存笔记,同步重建不会重新生成已提交轮次。崩溃可能导致重复模型计费,但笔记元数据会在恢复时防止重复提交区域。

适用场景与注意事项

适合需要长期保存对话内容、按主题组织学习笔记、希望自动维护索引的开发者和学习者。插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。

敏感对话请谨慎开启记录,除非你对提供者的本地保留策略可以接受。插件不会自动清理历史数据,卸载不会删除已生成的笔记和审计文件。建议定期手动整理和备份笔记目录。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜