超时后把耗时分布交给模型,自主反思并调整行为
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add JularDepick/dsh-time-introspect该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 6 处,展示前 6 条)
- 读取本地文件src/archive.ts:54
for (const entry of readdirSync(profiles, { withFileTypes: true })) { - 读取本地文件src/archive.ts:58
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) as { - 写入本地文件src/archive.ts:98
await mkdir(dir, { recursive: true }) - 写入本地文件src/archive.ts:101
await writeFile(temp, JSON.stringify(payload, null, 2) + '\n', 'utf8') - 写入本地文件src/archive.ts:103
await rename(temp, file) - 删除本地文件src/archive.ts:105
await unlink(temp).catch(() => undefined)
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
dsh 插件:超时后把上一轮迭代的时间分布喂给模型,让模型自己识别并调整行为;内省开销过高时插件进入休眠状态,模型随时可以重启。
README
由 DeepSeek 最新模型翻译生成dsh-time-introspect
面向 dsh 的耗时反思插件:上一轮实际耗时超出模型预估时,把完整的耗时分布以 JSON 注入下一轮,由模型自己决定是否反思。反思的开始与结束都由模型显式调用工具,插件只负责计时与记账;插件不自动冷却,不自动休眠,是否让插件安静由模型决定。
支持 dsh 0.2.0-rc.2、0.2.1-rc.1 与 0.2.1-rc.2
特性
- 超时触发:仅当上一轮有预估记录,且实际耗时同时超过比例阈值(minOverrunRatio,默认 20%)与绝对下限(minOverrunMs,默认 5000 毫秒)时,在下一轮 step 1 注入一次
- 完整 JSON:注入内容是结构化 JSON,包含总账、工具耗时、模型自身处理与反思内部明细;全部工具逐个列出,不做 top N 合并
- PTC 兼容:run_code 程序内嵌套调用的工具同样被识别,预估、反思、休眠与工具明细都按真实工具名入账
- 显式反思边界:模型调用 time_introspect_start 开始,time_introspect_stop 结束;插件按两次调用的位置计时,模型不需要整理或上报任何耗时数据
- 反思自计费:反思窗口内的全部耗时计入反思开销,窗口内的工具单独列在 introspect 明细里,帮助模型判断反思本身是否值得
展开完整文档(README 剩余 1 节)
dsh-time-introspect
面向 dsh 的耗时反思插件:上一轮实际耗时超出模型预估时,把完整的耗时分布以 JSON 注入下一轮,由模型自己决定是否反思。反思的开始与结束都由模型显式调用工具,插件只负责计时与记账;插件不自动冷却,不自动休眠,是否让插件安静由模型决定。
支持 dsh 0.2.0-rc.2、0.2.1-rc.1 与 0.2.1-rc.2
特性
- 超时触发:仅当上一轮有预估记录,且实际耗时同时超过比例阈值(minOverrunRatio,默认 20%)与绝对下限(minOverrunMs,默认 5000 毫秒)时,在下一轮 step 1 注入一次
- 完整 JSON:注入内容是结构化 JSON,包含总账、工具耗时、模型自身处理与反思内部明细;全部工具逐个列出,不做 top N 合并
- PTC 兼容:run_code 程序内嵌套调用的工具同样被识别,预估、反思、休眠与工具明细都按真实工具名入账
- 显式反思边界:模型调用 time_introspect_start 开始,time_introspect_stop 结束;插件按两次调用的位置计时,模型不需要整理或上报任何耗时数据
- 反思自计费:反思窗口内的全部耗时计入反思开销,窗口内的工具单独列在 introspect 明细里,帮助模型判断反思本身是否值得
- 模型控制休眠:time_introspect_shut 让插件休眠,time_introspect_waken 恢复;没有自动冷却与自动休眠
- 对话内红点气泡:每次模型调用本插件工具,都在该工具调用位置显示红点;新调用展开一行简要提示,3 秒后收起,红点保留;点击红点可展开或收起详细信息
- 逐轮归档:每一轮结束都静默生成与注入 JSON 同结构的归档记录,不进入模型上下文;未触发注入的轮次 estimate_ms、overrun_ms、overrun_ratio 为 null
- 会话内 Tab:会话区域新增「耗时自省」页,上半部分逐轮展示归档,下半部分按注入展示反思结果;details 数组默认收起,点击展开
- profile 落盘:每个会话在 profile 下写一个归档 JSON,最近保留 200 轮
- 状态可查:time_introspect_status 只读返回状态、最近一轮总账与三类耗时合计
- 仅主会话:子代理会话不注入,六个工具在子代理中完全隐藏
- 可回放:状态由会话投影从官方事件折叠,进程重启自动重建;不写自定义会话事件
- 双语文案:locale 可选中文(zh-CN,默认)或英文(en-US)
模型看到什么
{
"type": "time_introspect",
"desc": "本 JSON 由 dsh-time-introspect 插件自动统计生成, 内容是上一轮任务的耗时分布报告. 是否据此反思由你决定; 如需反思, 调用 time_introspect_start 开始, 完成后调用 time_introspect_stop.", "turn": 3,
"waken": { "reason": "连续三轮工具调用冗余, 工作越来越难推进" },
"estimate_ms": 100000,
"overrun_ms": 30000,
"overrun_ratio": 0.3,
"time_consume_total_ms": 130000,
"time_consume_details": {
"tool": {
"desc": "本层是反思窗口外的工具耗时, 不含反思窗口内调用的工具; 含反思窗口外的本插件工具(包括开始与结束边界工具)的调用耗时.", "ratio": 0.0769, "total_ms": 10000,
"details": [
{ "name": "bash", "calls": 3, "ms": 4000, "ratio": 0.4 },
{ "name": "read", "calls": 2, "ms": 2000, "ratio": 0.2 },
{ "name": "write", "calls": 4, "ms": 3000, "ratio": 0.3 },
{ "name": "time_introspect_start", "calls": 1, "ms": 300, "ratio": 0.03 },
{ "name": "time_introspect_stop", "calls": 1, "ms": 700, "ratio": 0.07 }
]
},
"model": { "desc": "本层是反思窗口外的模型自身处理与等待耗时, 不含反思窗口内的模型耗时, 也不含任何工具耗时.", "ratio": 0.7693, "total_ms": 100000 },
"introspect": {
"desc": "本层是反思窗口内的全部耗时, 含窗口内调用的工具(包括本插件工具)与模型处理; 开始与结束工具本身在窗口外, 不计入本层.", "ratio": 0.1538, "total_ms": 20000,
"details": {
"tool": {
"desc": "本层是反思窗口内调用的工具耗时, 含窗口内调用的本插件工具; 开始与结束工具本身在窗口外, 不计入本层.", "ratio": 0.3, "total_ms": 6000,
"details": [json
{ "name": "bash", "calls": 10, "ms": 5000, "ratio": 0.8333 },
{ "name": "read", "calls": 2, "ms": 1000, "ratio": 0.1667 }
]
},
"model": { "desc": "本层是反思窗口内的模型处理与等待耗时, 不含窗口内工具耗时.", "ratio": 0.7, "total_ms": 14000 }
}
}
}
}
waken 只在模型重启后的第一次注入出现,之后省略。每个耗时层都带 desc,说明该层是否包含反思工具与本插件工具。每层 ratio 保留 4 位小数,缺失差值补给该层最大项。
安装 sh
dsh plugin --profile <name> add dsh-time-introspect
<name> 是目标 profile,例如 web、desktop 或专用 profile。
工具
| 工具 | 参数 | 行为 |
| time_introspect_estimate | estimateMs | 登记本轮预估,同轮以最后一次为准 |
| time_introspect_start | 无 | 开始反思;本轮必须先收到注入,已有打开窗口时报错 |
| time_introspect_stop | 无 | 结束反思;没有打开窗口时报错 |
| time_introspect_shut | reason | 休眠;已休眠时幂等返回,丢弃未闭合窗口 |
| time_introspect_waken | reason | 重启;已活动时幂等返回 |
| time_introspect_status | 无 | 只读查询状态与最近一轮总账 |
工具名统一带 time_introspect_ 前缀。插件不阻断任何工具调用,也不检查模型是否真的完成了反思。
配置 yaml
- name: dsh-time-introspect
config:
minOverrunRatio: 0.15
minOverrunMs: 3000
locale: zh-CN
| 字段 | 默认值 | 含义 |
| enabled | true | 总开关;关闭后不注册投影、工具与监听器 |
| minOverrunRatio | 0.20 | 触发注入所需的最小超出比例 |
| minOverrunMs | 5000 | 触发注入所需的最小绝对超出毫秒数 |
| maxTurnHistory | 12 | 投影保留的已完成轮数上限 |
| locale | zh-CN | 模型可见文案语言,可选 zh-CN 或 en-US |
气泡自动展开时长固定为 3 秒,历史调用自动展开窗口固定为 15 秒;归档与注入记录保留最近 200 轮;均不提供配置。
口径与判定
- 实际耗时:turn/end 事件时间减去 turn/start 事件时间
- 工具耗时:原生调用按 callId 配对 tool/call 与 tool/result;PTC 模式下的子调用按 subCallId 配对 tool/ptc-dispatch-start 与 tool/ptc-dispatch
- 嵌套调用:PTC 子调用按真实工具名入账,外层 run_code 只记扣除子调用后的净耗时,总账不重复计数
- 反思窗口:time_introspect_start 的工具结果到 time_introspect_stop 的工具调用开始
- 反思窗口内全部耗时计入反思开销;窗口内的普通工具与插件工具进入 introspect.details.tool,不再进入顶层 tool.details
- 本插件自身工具与其他工具一样进入 tool.details,不单列插件开销
- 顶层关系:time_consume_total_ms = tool.total_ms + model.total_ms + introspect.total_ms
- 每层 ratio 相对该层父级总量,4 位小数,缺失差值补给最大项
- 恢复产生的零时长轮次不参与注入判定
状态
| 状态 | 行为 | 迁入 | 迁出 |
| active | 正常判定并注入 | 初始状态,或模型重启 | 模型调用 time_introspect_shut |
| dormant | 不注入;仍归档每轮耗时 | 模型调用 time_introspect_shut | 模型调用 time_introspect_waken |
没有自动冷却,没有自动休眠。是否让插件安静由模型决定。
用户可见气泡
- 气泡做进对话记录,不覆盖输入框,不阻塞模型或用户操作,随聊天记录滚动
- 每个本插件工具调用位置都有一个红点按钮;红点只是位置标记,不表示调用失败
- 新调用出现时自动展开一行简要提示,3 秒后收起;红点保留
- 只有挂载时距调用时间不超过 15 秒的调用会自动展开;历史记录中的调用只显示红点,避免打开旧会话时同时弹出大量气泡
- 点击红点展开或收起详细信息;展开后不会自动收起,直到再次点击
- 详情包含工具名、阶段、时间、轮次、参数与结果;结束反思会显示本次反思耗时,状态查询会显示结果 JSON
- 文案跟随 Web UI 语言
归档与自省 Tab
- 归档在 turn/end 生成,每一轮一条;结构与注入 JSON 相同,但未触发注入的轮次缺失的总账字段为 null
- 归档只进入会话投影和 profile 文件,不进入模型上下文,不影响注入判定
- 文件路径:$DSH_HOME/profiles/<profile>/time-introspect/<sessionId>.json;内容为 sessionId、updatedAt、archive 数组与 injections 数组,最近 200 轮
- 注入记录逐条保存注入轮次、被统计轮次、预估、实际、超出量、是否开始反思、是否结束反思与反思耗时
- 反思状态分为:
- 已反思:start 与 stop 都完成
- 反思未完成:已 start 但轮次结束前没有 stop
- 未反思:注入后没有 start
- 已中断:反思窗口被 shut 丢弃
- 等待中 / 反思进行中:当前轮次尚未结束时的临时状态
- 会话区域的 Tab 与其他视图标签并列;归档卡片与注入记录默认收起,展开后可继续展开工具 details 数组;Tab 数据随会话投影实时更新,文件是持久化镜像
与时钟插件的关系
本插件不替代 dsh-time-context 或 dsh-time-reminder。那两者负责「让模型知道时间」,本插件负责「在超时后告诉模型时间去了哪,并让反思本身有成本」。三者可以同时挂载。
兼容性
| 项目 | 说明 |
| dsh | 0.2.0-rc.2, 0.2.1-rc.1, 0.2.1-rc.2 |
| Node.js | ^22.19.0 或 >=24.0.0 |
| 判定方式 | engines.dsh 与所有 @deepseek-ai/dsh* peer 声明同一组受支持版本;0.2.1-rc.1 起存在 engines.dsh 时以它为准 |
开发 sh
npm install
npm run typecheck
npm test
npm run build
npm run pack
构建产物在 lib/,入口为 lib/index.js,客户端入口为 lib/client.js。npm run build 同时生成 host 与 client;npm run build:client 只重建客户端。npm run pack 或直接 npm pack 的 tgz 产物都会落入 release/,根目录不保留。机制细节见 docs/mechanism.md。
目录结构: text dsh-time-introspect/ ├── .gitignore # git 忽略规则 ├── COPYRIGHT # 版权声明 ├── LICENSE # Apache-2.0 许可证 ├── README.md # 中文 README ├── README_en-US.md # 英文 README ├── client/ # 浏览器半端: 红点气泡与耗时自省 Tab ├── cordis.patch.yml # 组合包 patch 层 ├── docs/ # 项目文档与官方开发文档快照 ├── package.json # 包清单 ├── scripts/ # 辅助脚本 ├── src/ # 插件源码 ├── test/ # 单元测试 ├── tsconfig.build.json # 构建配置 ├── tsconfig.json # 类型检查配置 └── version.index.md # 版本号出现位置索引
边界
- 不定义「合理耗时」标准,只呈现分布与偏差
- 不用于考核、排名或惩罚,耗时数据只为反馈与审计
- 不修改模型权重,不训练,只做推理时的上下文干预
- 没有预估记录的轮次不触发注入,但仍进入归档
- 不自动冷却,不自动休眠
- 不写自定义会话事件,状态由官方事件日志折叠得到;profile 归档 JSON 只做持久化镜像,不参与判定
- 只对主会话生效
许可证
Apache-2.0预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
JularDepick/dsh-time-introspect
超时后把耗时分布交给模型,自主反思并调整行为
相关插件 · 桌面端
Codex 任务面板chuspeeism/dashi-taskboard
现代化可灵活嵌入的任务面板,支持 Codex、DeepSeek Harness
★ 3,409已汉化DSH
71.7
多智能体自进化开发平台Prism-Shadow/penguin-harness
统一、稳定的 Agent 自进化框架全自动优化:任意模型 · 任意算法 · 任意 Benchmark
★ 3,111已汉化DSH
71.1
桌面宠物PC2005-cloud/dsh-pet
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI…
★ 5,341已汉化DSH
71
多端 Agent 工作台GCWing/OpenBitFun
OpenBitFun 是一个高度可定制的开源 Agent 工作台,让任务按你的方式持续推进。
★ 3,449已汉化DSH
70.8
DSH Desktopanywhere-labs/dsh-desktop
为 DeepSeek Harness DSH 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34,532已汉化DSH
70.7
桌面宠物伴侣OpenPetsHQ/openpets
桌面伴侣平台,带宠物、插件,还能选配本地智能体集成。
★ 1,353已汉化DSH
70.2
这是你的仓库?认领条目