dsh-atuin:把 DSH 里的每条 prompt 记入 atuin 历史

前言

用 DeepSeek Harness(dsh)干活时,prompt 都是在会话里输入的,不经过 shell。想回溯“这个问题当时我是怎么问的”“那段调优提示词的原文是什么”,只能一条条翻会话记录。如果你平时已经用 atuin 管理 shell 历史,一个自然的想法是:这些 prompt 也能进同一个历史库,用 atuin search 和 Ctrl-R 直接搜。

dsh-atuin 做的就是这件事。下面介绍它的原理、安装和配置。

这是什么

dsh-atuin 是一个 DSH 插件,由 RealAlexantuereAI 维护——更正:作者是 RealAlexandreAI,当前版本 0.1.1,MIT 许可证。它把你在 dsh web 界面中输入的每条 prompt 追加进 atuin 的 shell 历史,之后可以用 atuin search 和 shell 集成(Ctrl-R)搜索。

它是 pi-atuin 的移植版。dsh 没有终端 UI,这个插件就是 dsh 与 atuin 之间的桥接。

工作原理

插件监听 session/eventuser/message 事件,对每条用户输入执行两条 atuin 命令:

atuin history start -- "<prompt>"
atuin history end --exit 0 <ID>

start 启动一条历史记录并返回 ID,end 以退出码 0 结束这条记录。

两点值得注意:

  • 只记录你自己输入的 prompt,回复、工具调用、文件内容一律不记录。
  • 缺少 atuin 或 daemon 没在运行时,插件静默跳过,会话永远不会因此中断。

安装与启用

先确认本机装好 atuin,并且 daemon 在运行(标准 atuin 安装的一部分)。然后在 dsh 中执行:

dsh plugin --profile web add dsh-atuin

--profile web 表示安装到 web profile。

配置

插件提供四个配置项,示例写法如下:

- id: atuin
  name: dsh-atuin
  config:
    # atuin_bin: /opt/homebrew/bin/atuin
    # deny: "^/clear$,password"
    # max_len: 2000
    # session_match: "project-x"
配置项 作用
atuin_bin atuin 二进制路径,默认取 PATH 上的 atuin
deny 逗号分隔的正则,匹配的 prompt 不记录,例如上例会屏蔽以 /clear 开头的输入和含 password 的输入
max_len 长 prompt 的截断长度,默认 2000,设为 0 关闭截断
session_match 逗号分隔的正则,只记录标题匹配的会话,留空表示全部记录

隐私与数据存放

  • 只记录你输入的 prompt;回复、工具调用、文件内容从不写入。
  • deny 可以屏蔽敏感 prompt,比如包含密码、密钥的输入。
  • 条目保存在本地 atuin 数据库 ~/.local/share/atuin/history.db,数据不离开本机。

开发与测试

如果要改代码或自己构建,仓库提供了标准流程:

npm install
npm run typecheck
npm test          # 覆盖文本提取、deny 规则、截断
npm run build

针对真实 atuin 数据库做实测(需要 daemon 在运行):

node --import tsx tests/real/real-atuin.mjs

适用场景与注意事项

适合同时使用 dsh(web profile)和 atuin 的开发者:想把散落在 dsh 会话里的 prompt 沉淀进一个可搜索的本地历史库,方便复用和回溯。使用前注意以下几点:

  1. 插件以当前 dsh 进程的权限运行。安装任何第三方插件前,建议先读一遍源码和许可证(本插件为 MIT)。
  2. 插件包要求 Node.js >= 20.0.0(package.json 的 engines 字段)。
  3. 依赖标准 atuin 安装和运行中的 daemon。atuin 缺失或 daemon 停止时插件会静默跳过——不报错,但也不会有记录,排查时先确认 daemon 状态。
  4. 默认 max_len: 2000 会截断长 prompt,需要完整原文就把值调大或设为 0

结尾

dsh-atuin 解决的问题很具体:让 dsh 里的 prompt 和 shell 命令共用同一份 atuin 历史,搜索、复用都在熟悉的 atuin search 和 Ctrl-R 里完成。实现克制,隐私边界清楚,坏环境下也不影响会话本身。

最后提醒:社区目录是独立站点,与 DeepSeek、幻方无官方从属关系。DSH 的理念是「一切皆插件」,dsh-atuin 是这个思路下一个小而完整的例子。

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

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

Xiaoye