发送时间戳 guo120629-dotcom/dsh-send-timestamp
DeepSeek 客户端给每条消息附上隐藏的本地发送时间,方便模型掌握时序
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 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 18 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。开关本身就在输入框工具栏里,不需要卡片。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
guo120629-dotcom/dsh-send-timestamp
给每条消息附上隐藏的本地发送时间,方便模型掌握时序
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1
这是你的仓库?认领条目