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

进程死亡黑匣 shenhuanageshei/dsh-death-forensics

DeepSeek Harness
shenhuanageshei63 天前有提交已提供中文文档扫描:含敏感能力

记录宿主崩溃前的心跳与堆栈,供下次启动排查

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add shenhuanageshei/dsh-death-forensics
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么[目录]—
dsh 原生插件 · dev
暂无时间戳·判据 →
装得上吗[实装验证]—
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
数据截至 2026/10/07·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 63 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

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

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 10 处,展示前 10 条)
  • 写入本地文件
    lib/index.js:23
    mkdirSync(dir, { recursive: true });
  • 读取本地文件
    lib/index.js:31
    const v = JSON.parse(readFileSync(statePath, 'utf8'));
  • 写入本地文件
    lib/index.js:42
    writeFileSync(statePath, JSON.stringify(s, null, 2));
  • 写入本地文件
    lib/index.js:50
    appendFileSync(crashPath, JSON.stringify(record) + '\n');
  • 写入本地文件
    lib/index.js:74
    appendFileSync(heartbeatPath, heartbeatLine(new Date(), state.bootId, state.pid) + '\n');
  • 读取本地文件
    lib/index.js:79
    const lines = readFileSync(heartbeatPath, 'utf8').split('\n').filter(Boolean);
  • 写入本地文件
    lib/index.js:82
    writeFileSync(heartbeatPath, kept.join('\n') + '\n');
  • 读取本地文件
    lib/index.js:148
    for (const line of readFileSync(heartbeatPath, 'utf8').split('\n')) {
  • 读取本地文件
    lib/index.js:184
    const recs = readFileSync(crashPath, 'utf8').split('\n').filter(Boolean).slice(-config.reportTailLines);
  • 读取本地文件
    lib/index.js:194
    const tail = readFileSync(deathLog, 'utf8').split('\n').filter(Boolean).slice(-config.reportTailLines);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 记录崩溃前心跳
  • 保存崩溃堆栈
  • 结束类型自检

README

由 DeepSeek 最新模型翻译生成
dsh-death-forensics 用于 DeepSeek Harness(dsh)宿主的进程内死亡黑匣子。一个 Cordis 插件(bundle 格式),记录宿主死亡之前发生了什么——心跳窗口、崩溃堆栈,以及下次启动时的结束类型自检。 为什么 dsh web 进程可能毫无痕迹地死亡(外部杀死、事件循环冻结、 崩溃)。外部启动器可以记录进程如何死亡(退出码 / stderr / 运行时长),但只有进程内部的东西才能记录之前发生了什么:最后一次心跳是什么时候、崩溃堆栈是什么,以及上一次启动是否优雅结束。 本插件是进程内的那一半。将其与外部启动器配对(参见 DESIGN.md)以获得完整图景。
展开完整文档(README 剩余 1 节)
dsh-death-forensics

用于 DeepSeek Harness(dsh)宿主的进程内死亡黑匣子。一个 Cordis 插件(bundle 格式),记录宿主死亡之前发生了什么——心跳窗口、崩溃堆栈,以及下次启动时的结束类型自检。

为什么

dsh web 进程可能毫无痕迹地死亡(外部杀死、事件循环冻结、
崩溃)。外部启动器可以记录进程如何死亡(退出码 / stderr / 运行时长),但只有进程内部的东西才能记录之前发生了什么:最后一次心跳是什么时候、崩溃堆栈是什么,以及上一次启动是否优雅结束。

本插件是进程内的那一半。将其与外部启动器配对(参见 DESIGN.md)以获得完整图景。

功能

| 功能 | 机制 |
| 心跳 | 每 heartbeatIntervalMs(默认 15 秒,文件有界)向 /death-forensics/heartbeat.log 追加 JSONL |
| 结束类型自检 | SIGTERM/SIGINT 记录 graceful;exit 事件记录中性的 exit;崩溃/被杀留下 running → 下次启动检测到非优雅结束并向 crash.log 追加一条记录 |
| 崩溃堆栈 | uncaughtException(包括通过 Node 默认抛出链产生的未处理 rejection)记录完整堆栈,然后重新打印并 exit(1) —— 宿主行为与无插件情况逐字节一致 |
| 报告工具 | death_forensics_report —— 当前启动、上一次结束类型、死亡窗口(最后一次心跳 → 下次启动)、崩溃日志尾部、外部启动器日志尾部(如果存在) |

数据文件(/death-forensics/)

- state.json —— 当前启动身份 + 上次结束类型(单一事实来源)
- heartbeat.log —— 仅追加的 JSONL,在 maxHeartbeatLines 处截断
- crash.log —— 仅追加的 JSONL 记录(崩溃 + 检测到的非优雅结束)

安全契约

- 零子进程 —— 从不生成任何东西;只进行文件写入。
- 热路径是带 try/catch 降级的同步写入 —— 失败会禁用黑匣子,而绝不会禁用宿主。
- 钩子仅为附加监听器,在插件 dispose 时清理。
- 不对宿主服务进行 monkey-patching。

安装

添加到 dsh profile(例如 profile/profiles/web/package.json):

"dependencies": {
"dsh-death-forensics": "link:/path/to/dsh-death-forensics"
},
"dsh": {
"profile": {
"bundles": [ ..., "dsh-death-forensics" ]
}
}

然后重启 dsh。bundle 补丁会插入条目 id death-forensics。

或者,通过 CLI:dsh plugin --profile web add /path/to/dsh-death-forensics。

构建

需要一个携带 @deepseek-ai/* 包的 dsh checkout 或 profile 安装(通过 $DSH_CHECKOUT,或 $HOME/dsh-harness、$HOME/dsh、 $HOME/.dsh/dsh-harness 解析),外加 typescript:

离线安装 devDependency(来自任意 pnpm store)
node install --store-dir= --prefer-offline \
--config.node-linker=hoisted --config.auto-install-peers=false
编译 src/ → lib/ bash scripts/build.sh # Windows 上的 Git Bash;node 必须在 PATH 中
node lib/selftest.js # 17 个纯逻辑断言

已发布的 lib/ 已提交,因此该插件可直接从普通克隆中运行。

配置

| 键 | 默认值 | 描述 |
| heartbeatIntervalMs | 15000 | 心跳间隔(最小 5000) |
| maxHeartbeatLines | 20000 | 心跳文件行数上限 |
| reportTailLines | 40 | 报告工具显示的尾部行数 |
| dataDir | /death-forensics | 数据目录覆盖 |

文档

- DESIGN.md — 完整设计(中文):状态机、钩子语义、验收标准。
- 死亡窗口解释:[上一次启动的最后一次心跳,本次启动的开始]。

许可证

MIT — 参见 LICENSE。
预览分享卡片长什么样 ↓shenhuanageshei/dsh-death-forensics
分享 · DeepSeek Harness Hub
shenhuanageshei/dsh-death-forensics

记录宿主崩溃前的心跳与堆栈,供下次启动排查

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部