🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

发送时间戳 guo120629-dotcom/dsh-send-timestamp

DeepSeek 客户端
guo120629-dotcom18 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

给每条消息附上隐藏的本地发送时间,方便模型掌握时序

29.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/guo120629-dotcom/dsh-send-timestamp.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 18 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

dsh Web 输入框的按会话时间戳开关:每条提交的消息后面跟一条隐藏的上下文消息,带上当前本地时间。

README

由 DeepSeek 最新模型翻译生成
@local/dsh-send-timestamp 在 dsh Web 客户端的聊天输入框工具栏右侧加一个「时间戳」开关。开启后,你提交的每条消息后面会跟一条只带时间戳的隐藏消息:对话界面里看不到它,但会话记录里存着、送交模型时也在。 对话界面: 你: 帮我看下这个报错 会话记录与模型收到:你: 帮我看下这个报错 (隐藏)[10-16 10:23:45] 行为 | 规则 | 取值 | | 默认格式 | [MM-DD HH:mm:ss](月-日 + 时:分:秒,24 小时制,本地时间,各段补零) | | 预设 time | [HH:mm:ss](纯时间) | | 预设 datetime | YYYY-MM-DD HH:mm:ss(带年份,不带方括号) | | 预设回落 | 非法/缺省的 preset 一律归一化为默认的 monthday | | 开关粒度 | 逐会话。sessions[sessionId] 优先;该会话从没被用户动过开关时,回落到全局 enabled。
展开完整文档(README 剩余 1 节)
@local/dsh-send-timestamp

在 dsh Web 客户端的聊天输入框工具栏右侧加一个「时间戳」开关。开启后,你提交的每条消息后面会跟一条只带时间戳的隐藏消息:对话界面里看不到它,但会话记录里存着、送交模型时也在。

对话界面: 你: 帮我看下这个报错

会话记录与模型收到:你: 帮我看下这个报错
(隐藏)[10-16 10:23:45]

行为

| 规则 | 取值 |
| 默认格式 | [MM-DD HH:mm:ss](月-日 + 时:分:秒,24 小时制,本地时间,各段补零) |
| 预设 time | [HH:mm:ss](纯时间) |
| 预设 datetime | YYYY-MM-DD HH:mm:ss(带年份,不带方括号) |
| 预设回落 | 非法/缺省的 preset 一律归一化为默认的 monthday |
| 开关粒度 | 逐会话。sessions[sessionId] 优先;该会话从没被用户动过开关时,回落到全局 enabled。⇒ 在一个对话里关掉不会影响其他对话 |
| 会话 id 来源 | Host 侧 agent.session.id(Session.id 取 header.id);Client 侧取自槽位 standard props 的 sessionId |
| 开关落盘 | settings 路径写 sessions dict(Host 端 Schema.dict(Schema.boolean()) + .volatile());兜底路径写 localStorage 的 dsh-send-timestamp:sessions JSON 表 |
| 预设粒度 | 全局(格式偏好,不逐会话) |
| 注入形态 | 不改写用户原文:时间戳作为一条独立合成消息追加在批次末尾 |
| 是否显示 | 不在对话框显示。合成消息的 source.kind !== 'user',Chat 侧经 contextMessage() 归为 context 节点;而 isVisibleChatNode() 会隐藏不含 tool-addition/tool-removal 块的 context 节点。用户气泡里只有原话,模型与持久会话记录里照样有时间 |
| 去重 | 末尾已是当前预设同格式的时间戳时不追加 |
| 斜杠命令 | / 开头(含前导空白)不追加 |
| 取时间时机 | agent/pre-step 回调里 new Date(),绝不在模块加载时取 |
| 触发条件 | 仅当这一批消息里存在 role === 'user' && source.kind === 'user' 的那条时才注入(纯插件上下文步骤不注入) |
| 消息身份 | 合成消息 id 用 crypto.randomUUID(),发布前 deepFreeze(@deepseek-ai/dsh-brand 的 brandString 是编译期空操作,故与官方 createUserMessage 等价) |
| 空文本 | 无 text 片段的纯附件消息不追加 |

结构

package.json bundle 声明:dsh.bundle.patch + dsh.client cordis.patch.yml - insert: 一行插件行;id send-timestamp 同时是设置命名空间 src/timestamp.ts 纯函数:格式化 / 追加 / 去重 / 斜杠判定(host 与 client 共用) src/index.ts host:Config(volatile)+ agent/pre-step 监听 src/client/index.tsx client:槽位注册 + 按钮组件 src/client/toggle.ts 开关持久化的唯一接缝 src/client/styles.ts 主题 token 样式 scripts/build.mjs esbuild 构建 test/ node --test 单元测试与冒烟测试 lib/ 构建产物(index.js / client.js / timestamp.js)

构建与测试

npm install
npm run build # → lib/index.js、lib/timestamp.js、lib/client.js
npm test # → node --test "test/.test.mjs"

构建产物形态:

- lib/index.js:ESM,platform: node,@deepseek-ai/schemastery 保持 external(profile 内已存在)。
- lib/client.js:esbuild 的 CJS 产物(external: ['react'],classic JSX)包进官方 window.__ModuleLoader__.load({ id: '<npm 包名>', factory }) 外壳。
- lib/timestamp.js:纯函数层的独立 ESM 产物,供测试直接 import。

持久化

开关与预设走 dsh 插件设置(profile 配置):Host 端 Config 用 @deepseek-ai/schemastery 声明,两个字段都 .volatile()——设置子系统只把 volatile 字段投影成条目表单,没有 volatile 字段的条目会被 describe() 整体跳过。Client 端通过 ctx.configForms.get('send-timestamp') 读取与写入(entryId 就是 cordis.patch.yml 里那一行的 id)。

src/client/toggle.ts 是唯一接缝:优先 configForms,其次第三方 settingsScope(@linxin666/dsh-client-ui-web-ui-settings 的兼容面),都不可用时退回 localStorage(键 dsh-send-timestamp:enabled / dsh-send-timestamp:preset)。任何一步失败都只降级、不抛错——组件抛错会让整条槽位条目变空白。

手动改默认值可直接编辑 profile 的 cordis.patch.yml:

- id: send-timestampyaml
name: '@local/dsh-send-timestamp'
config: { enabled: true, preset: 'datetime' }

为什么改写发生在 Host 端

客户端没有任何 pre-submit 拦截点:Enter、发送按钮、inputActions.submit() 三条入口全部汇入 SessionInputShell.submit(mode, source),且 inputActions 只暴露 captureInsertion / insertText / setDraft / addAttachments / removeAttachment / pruneAttachments / submit 七个方法,没有 send / steer。

唯一官方改写点是 agent/pre-step waterfall 的 decision.messages——它就是即将落库并送交模型的消息数组。改写时必须:

1. 先 await next(),并且不拥有决策;
2. reject / signal.aborted 原样放行;
3. spread 决策对象({ ...decision, messages }),否则 startsRequestSeries 等字段会丢;
4. 消息对象是深冻结的且新铸了 id,所以只做浅拷贝并替换 content:{ ...structuredClone(m), content },保留 id / role / source。

本插件不 import 任何 @deepseek-ai/ 包(schemastery 除外),也不 import dsh-llm——那些包不在 profile 的 node_modules 里。

已知边界

- 时间戳追加在 decision.messages 上,而该数组正是随后 session.append("user/message", ...) 落库并送交模型的内容,因此落库的与模型看到的都是带时间戳的版本;输入框在提交后立即清空,所以界面上不会出现「你输入原文 vs 会话里带时间戳」的分叉。
- 未在真实浏览器里验证的部分:按钮的实际渲染位置与外观、configForms 写入是否真能落到 Host 的 profile 文档(依赖运行时服务在场)。
- 设置卡片刻意未实现:官方 settings.plugin.item 槽位在 0.2 已删除,现役落点是 plugins.bundle.config(key = 包名)或 settings.plugins.tab。开关本身就在输入框工具栏里,不需要卡片。
预览分享卡片长什么样 ↓guo120629-dotcom/dsh-send-timestamp
分享 · DeepSeek Harness Hub
guo120629-dotcom/dsh-send-timestamp

给每条消息附上隐藏的本地发送时间,方便模型掌握时序

这是你的仓库?认领条目

回到顶部