前言¶
用 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/event → user/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 沉淀进一个可搜索的本地历史库,方便复用和回溯。使用前注意以下几点:
- 插件以当前 dsh 进程的权限运行。安装任何第三方插件前,建议先读一遍源码和许可证(本插件为 MIT)。
- 插件包要求 Node.js >= 20.0.0(package.json 的 engines 字段)。
- 依赖标准 atuin 安装和运行中的 daemon。atuin 缺失或 daemon 停止时插件会静默跳过——不报错,但也不会有记录,排查时先确认 daemon 状态。
- 默认
max_len: 2000会截断长 prompt,需要完整原文就把值调大或设为0。
结尾¶
dsh-atuin 解决的问题很具体:让 dsh 里的 prompt 和 shell 命令共用同一份 atuin 历史,搜索、复用都在熟悉的 atuin search 和 Ctrl-R 里完成。实现克制,隐私边界清楚,坏环境下也不影响会话本身。
- GitHub:https://github.com/RealAlexandreAI/dsh-atuin
- 社区插件目录:https://www.skillhub.cn/plugins/RealAlexandreAI/dsh-atuin
最后提醒:社区目录是独立站点,与 DeepSeek、幻方无官方从属关系。DSH 的理念是「一切皆插件」,dsh-atuin 是这个思路下一个小而完整的例子。