← Back to home@2522669008-zcy

dsh-time-prefix

在每条用户消息前自动插入 【2026/08/23,22:36】 这样的时间文本

Stars
1
Language
JavaScript
Created
Aug 24, 2026
Updated
Oct 4, 2026
GitHub repo

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,让它替你下载、解压并安装:

从 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