dsh-time-prefix
在每条用户消息前自动插入 【2026/08/23,22:36】 这样的时间文本
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 24, 2026
- Updated
- Oct 4, 2026
Introduction
dsh-time-prefix
在 dsh 中为每条用户消息自动添加当前时间前缀(【2026/10/05,00:14】,精确到分钟)的小插件。
本仓库同时装着两个版本,只装其中一个:
desktop/ | web/ | |
|---|---|---|
| 面向 | dsh 桌面版 | dsh Web 版(以及需要插件自带设置页的场景) |
| 开关位置 | 插件管理页里自带的启用/停用开关 | 设置页里的「时间前缀」卡片 |
| Config schema | 没有 | 有(enabled + .volatile()) |
| 客户端半侧 | 没有 | 有(注册 settings.section) |
| 运行时依赖 | 零依赖 | @deepseek-ai/schemastery |
为什么桌面版不需要自己的开关:dsh 桌面版官方自带对所有第三方插件的启用/停用开关,它作用在 loader 行上(加/删 entry),跟插件配置无关。
⚠️ 不要用仓库地址安装
dsh 的插件安装器支持三种输入:包名、GitHub 仓库地址、本地目录路径。本插件没有发布到 npm,而这个仓库也不适合用仓库地址安装:
用仓库地址(例如 https://github.com/2522669008-zcy/dsh-time-prefix)安装时,dsh 会把整个仓库当作一个包,去读仓库根目录的 package.json。而本仓库根目录没有 package.json——两个版本分别在 desktop/ 和 web/ 子目录里,根目录只有说明和许可文件。所以这样装会报「不是可安装的包」之类的错误(早期版本还曾因此静默装到根目录里的旧版插件)。
正确做法是用本地目录路径安装,也就是先下载并解压,然后把安装路径指到 desktop/ 或 web/ 目录。完整步骤见各版本自己的 README:
- dsh 桌面版 →
desktop/README.md - dsh Web 版 →
web/README.md
想省事的话,可以把这段话直接发给你的 dsh,让它替你下载、解压并安装:
从 https://github.com/2522669008-zcy/dsh-time-prefix 下载 zip 解压,然后用解压出来的
desktop/目录安装这个插件注意路径必须是绝对路径——dsh 的安装器不接受
./开头的相对路径。
仓库结构
dsh-time-prefix-main/ ← Code → Download ZIP 解压后的目录(main 是默认分支名)
desktop/ ← 桌面版,装它
package.json ← 安装路径要指到这一层
cordis.patch.yml
lib/
locale/
README.md ← 桌面版安装说明
web/ ← Web 版,装它
package.json ← 安装路径要指到这一层
cordis.patch.yml
lib/
locale/
README.md ← Web 版安装说明
README.md ← 就是本文件
要填的安装路径永远是含 package.json 的那一层,即 desktop/ 或 web/ 目录本身,不是仓库根、也不是它的上一层。
装完之后插件就从那个目录加载,别挪走或删掉,否则插件失效。
实现(两版共用)
插件只提供宿主侧行为:在 agent/pre-step 这个 waterfall 上,给本步要提交的用户消息文本前面拼上当前时间。
agent/pre-step 返回的消息就是 agent loop 会写进会话的 user/message,所以聊天记录、会话日志和模型看到的请求三者完全一致——不是只在浏览器里改写发送文本。
-
前缀里只有时间读数本身,不带任何隐藏标记:写进
text的每个字符都会被看到、也会发给模型。 -
读数是直接拼在你写的文字前面的,并且后面跟一个换行,所以整条消息读起来清爽(时间单独一行,你的话另起一行):
【2026/10/05,01:40】 你的话消息里的图片不影响这一点——只要有文字,读数就贴在文字上。
-
只发图片、没有任何文字时,读数会作为一个独立的文本块放在图片前,且不带尾随换行(那种情况没有文字可拼,多一个换行只会平白空一行)。
-
已经带前缀的消息,旧前缀会被剥掉换成当前时间,而不是让开。这一条是为桌面版输入框持久化草稿准备的:草稿里带着上一次的前缀时,如果直接跳过,那个旧前缀(以及 0.1 版写在里面的隐形标记)就会被永久固化到之后每一条消息里。
-
只处理
role === 'user'的消息;其他插件追加的上下文消息原样通过。 -
原消息对象不被修改(事件契约里它是不可变的)。
升级提示(0.1 → 0.2):0.1 版把隐形标记
U+2063dsh-time-prefix写进了消息文本,并依赖@deepseek-ai/dsh-settings里已被删除的installSettingsSection(导致宿主半边无法加载)。0.2 版修掉了这两点。如果你的输入框草稿里还残留着那个标记,不用手动清理——发一次就会被剥掉。
许可
MIT