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

因果追踪器 martinm86867-ops/dsh-plugin-witr

DeepSeek Harness
martinm86867-ops17 天前有提交已提供中文文档扫描:未发现敏感能力

追踪进程端口与文件锁,一轮定位冲突根因

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · dev
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/16) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

扫描于 2026/10/31(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

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

DeepSeek Harness 插件,为模型提供 witr 因果进程、端口和锁追踪工具

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-witr 因果进程与端口追踪插件,专为 DeepSeek Harness 打造。 让自主运行的 DeepSeek 智能体一眼看清运行中的进程、端口冲突(EADDRINUSE)和卡死的文件锁,直接定位根因。 问题所在 智能体在开发或运维循环中,一旦碰上状态冲突,经常就卡住了: - 本地开发服务器起不来,报 EADDRINUSE: 3080。 - 环境命令挂住不动,因为 /var/lib/dpkg/lock-frontend 被锁了。 - 一个长期驻留的后台 worker 占着内存,可 ps aux 只显示一个没头没尾的子进程,看不出上下文。 智能体惯用的绕路办法——把 ps aux、lsof、fuser、netstat、kill -9 串起来跑——既脆弱又容易瞎编,还可能误杀父终端或 shell。 解决方案 dsh-plugin-witr 借助 Cordis 插件生命周期,把 witr 直接接进 DeepSeek Harness 的工具注册表。 智能体不用再猜,直接调用 witr_trace,一轮就能拿到完整的监管层级:从 systemd 一路往下,经过终端模拟器、shell,再到父容器。
展开完整文档(README 剩余 1 节)
dsh-plugin-witr

因果进程与端口追踪插件,专为 DeepSeek Harness 打造。

让自主运行的 DeepSeek 智能体一眼看清运行中的进程、端口冲突(EADDRINUSE)和卡死的文件锁,直接定位根因。

问题所在

智能体在开发或运维循环中,一旦碰上状态冲突,经常就卡住了:
- 本地开发服务器起不来,报 EADDRINUSE: 3080。
- 环境命令挂住不动,因为 /var/lib/dpkg/lock-frontend 被锁了。
- 一个长期驻留的后台 worker 占着内存,可 ps aux 只显示一个没头没尾的子进程,看不出上下文。

智能体惯用的绕路办法——把 ps aux、lsof、fuser、netstat、kill -9 串起来跑——既脆弱又容易瞎编,还可能误杀父终端或 shell。

解决方案

dsh-plugin-witr 借助 Cordis 插件生命周期,把 witr 直接接进 DeepSeek Harness 的工具注册表。

智能体不用再猜,直接调用 witr_trace,一轮就能拿到完整的监管层级:从 systemd 一路往下,经过终端模拟器、shell,再到父容器。

graph TD
A[DeepSeek Agent Loop] -->|witr_trace tool call| B[dsh-plugin-witr]
B -->|Cordis Effect / AbortSignal| C[witr Causal Engine]
C -->|Procfs & Netstat Inspection| D[Linux Kernel / Sockets]
D -->|Root Cause Tree + Metadata| C
C -->|Formatted Tree / Mermaid / JSON| B
B -->|Structured Result Block| A

功能

- 完整因果链路: 沿 systemd -> ptyxis -> bash -> node -> esbuild 反向追踪进程,查清是谁启动并维持着目标进程。
- 端口冲突定位: 把端口号(如 3080、8080)直接翻译成占用它的 PID、父 shell、工作目录和当前 Git 分支。
- 文件锁诊断: 找出是哪个后台进程或守护进程占着文件描述符不放。
- 多格式输出: 支持人类可读的诊断文本、紧凑的层级树、JSON,以及用于可视化文档的 Mermaid.js 流程图。JSON 输出会省略进程环境变量,所以追踪进程绝不会把它的密钥带进模型上下文。
- DeepSeek 插件管理器 UI: 完整声明的 Cordis bundle,带本地化元数据、图标,以及 Web UI 中可配置的运行时参数。
- 退出码保真: 按 witr 文档化的退出码对每条 trace 分类,而不是去抓取它的输出,所以警告、「未找到」、「权限不足」都会作为答案返回,只有真正跑挂的运行才会让调用失败。
- 取消与安全: 严格只读;把 exec.signal 转发给 witr 子进程,取消的调用报告为已取消,而不是失败。

安装

前置条件

确保 witr 二进制已装进系统 PATH(例如 /usr/local/bin/witr):

Verify witr binary
witr --version

方法 1:通过 DeepSeek 命令行添加

dsh plugin --profile web add @deepseek-ai/dsh-experimental-tool-witr

方法 2:配置档挂载(cordis.patch.yml)

在生效的配置档补丁文件(~/.dsh/profiles/<profile>/cordis.patch.yml)里加一条 - insert: 条目:

- insert:
- id: tool-witr
name: "@deepseek-ai/dsh-experimental-tool-witr"
config:
binaryPath: witr
timeoutMs: 10000

模型工具规范:witr_trace

挂载后,DeepSeek 模型即可使用以下工具 schema:

witr_trace({
target: string, // Port ("3080"), PID ("1234"), name ("node"), or file path
kind?: "port" | "pid" | "file" | "name", // Explicit discriminator; inferred when omitted
format?: "standard" | "tree" | "mermaid" | "dot" | "json",
exact?: boolean // Disable substring matching when searching by name
})

kind、format 和 target 会在 witr 运行前校验,所以超出取值范围的 kind 或 format 会被拒绝,而不是被悄悄忽略。

目标推断。 不传 kind 时,纯数字先按进程 ID 试,再按端口试;含 / 的值当作文件路径;其余一律当作进程名。非空 target 会加 -- 终止符后传给 witr,所以以 - 开头的进程名绝不会被误读成命令行参数。

工作目录。 相对 file target 按发起调用的会话工作目录解析,而不是按启动 harness 进程时所在的目录。智能体调用拿不到该目录时,相对 file target 会被拒绝,而不是悄悄按 harness 进程目录解析——请改用绝对路径重试。

并发。 该工具只读,因此标记为并发安全,多条 trace 可以共用一个工具批次。

结果

插件读取 witr 的退出码,而不是匹配输出文本——witr 把退出码当作契约,并明确把人类可读输出的措辞排除在契约之外。只有不携带答案的结果才会让工具调用失败:

| witr 退出码 | 含义 | 工具结果 |
| 0 | 找到,干净 | 回答 |
| 1 | 找到,有警告 | 回答 —— 警告就是诊断载荷 |
| 2 | 未找到 | 回答;同时驱动 PID → 端口回退 |
| 3 | 权限不足 | 回答 —— witr 自己的输出会说明如何提权 |
| 4 | 输入无效,或名称有歧义 | 错误;用 exact: true 或更完整的名称重试 |
| 5 | 内部错误 | 错误 |
| 6 | 找到,但原因无法追溯 | 回答 |
| — | witr 完全无法启动 | 错误,并指明 binaryPath |
| 其他任何非零值 | 无法识别的状态(信号、超时,或未来版本的 witr 退出码) | 错误 —— 绝不当作回答 |

规范结果是结构化的 —— { output, format, exitCode, warnings? } —— 其中 output 是面向模型的那一层投影。当 format: "json" 给出 witr 文档中说明的 Warnings 数组时,warnings 会被填充;退出码和警告数量作为展示元数据传到 UI。

智能体交互示例

1. 诊断被占用的端口

智能体调用: {
"name": "witr_trace",
"arguments": {
"target": "3080",
"kind": "port"
}
}

工具输出: Target : node Process : node (pid 9056) {forked} User : martin Command : node --import tsx/esm apps/cli/src/bin.ts web Started : 1 hour ago (Wed 2026-10-14 10:05:05 +01:00)

Why It Exists :
systemd (pid 1) → systemd (pid 4297) → ptyxis (pid 6407) → ptyxis-agent (pid 6421) → bash (pid 9030) → node (pid 9040) → sh (pid 9055) → node (pid 9056)

Source : sh (shell)
Working Dir : /home/martin/deepseek
Git Repo : deepseek (master)
Sockets : 127.0.0.1:3080 (TCP | LISTENING, 2 connections)

2. 生成可视化的 Markdown 架构图

智能体调用: {
"name": "witr_trace",
"arguments": {
"target": "3080",
"format": "mermaid"
}
}

工具输出:
graph TD
p1["systemd (pid 1)"]
p4297["systemd (pid 4297)"]
p1 --> p4297
p6407["ptyxis (pid 6407)"]
p4297 --> p6407
p6421["ptyxis-agent (pid 6421)"]
p6407 --> p6421
p9030["bash (pid 9030)"]
p6421 --> p9030
p9056["node (pid 9056) :3080"]
p9030 --> p9056
style p9056 fill:#2ecc71,stroke:#27ae60,stroke-width:2px,color:#ffffff

配置 Schema

通过 Cordis YAML 或 DeepSeek Web 设置界面配置:

| 选项 | 类型 | 默认值 | 说明 |
| binaryPath | string | "witr" | witr 二进制的路径。留空则回退到 "witr"。 |
| timeoutMs | number | 10000 | 子进程执行超时,单位毫秒(最小 1;不可用的值回退到 10000)。 |

开发与构建

Install dependencies
pnpm install

Typecheck the source and test suite
pnpm run typecheck

Compile TypeScript
pnpm run build

Run unit tests (Vitest)
pnpm run test

许可证

MIT © 2026 Martin M
预览分享卡片长什么样 ↓martinm86867-ops/dsh-plugin-witr
分享 · DeepSeek Harness Hub
martinm86867-ops/dsh-plugin-witr

追踪进程端口与文件锁,一轮定位冲突根因

回到顶部