DeepSeek Harness 插件

dsh-seismicx

DeepSeek Harness plugin exposing the SeismicX earthquake-catalog skill as typed, model-facing tools(英文原文)

跳到安装方式

来源信息

GitHub 仓库
MOLAaaaaaaa/dsh-seismicx
最近更新
2026年8月16日
分类
插件市场与管理
GitHub stars
2
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/MOLAaaaaaaa/dsh-seismicx
插件名:dsh-seismicx
作者:MOLAaaaaaaa

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-seismicx

A DeepSeek Harness plugin that exposes the SeismicX earthquake-catalog skill as typed, model-facing tools.

The skill's SKILL.md stays the portable workflow document — it runs unchanged on Claude Code, Codex, and OpenCode. This plugin is the DSH-only enhancement layer over it, and it exists for three things a skill cannot do:

As a skillAs this plugin
ArgumentsA bash string; a bad --real-R tuple fails minutes inValidated at the call boundary, before the process starts
Resultsstdout prose the model re-parses for pathsA typed JSON value with picks_path, map_path, exit_code
Hour-long picksA blocking bash call that floods the context windowA background job with an id, job_status, and job_kill

Install

Requires a working seismicx-catalog-skill checkout and its Python environment.

From a local checkout (simplest)

lib/ is not committed, so build once, then install the directory:

git clone https://github.com/MOLAaaaaaaa/dsh-seismicx && cd dsh-seismicx && npm install && npm run build
dsh plugin --profile <name> add /absolute/path/to/dsh-seismicx

pnpm links the checkout, so it uses the lib/ you just built and needs no build permission.

From GitHub

A git install fetches sources, not build output, so pnpm has to run this package's prepare script — and pnpm ≥10 refuses to do that until you allow it by name. The first add fails and prints the key; put it in the profile's pnpm-workspace.yaml:

allowBuilds:
  dsh-seismicx: true

then re-run, pinning a commit so a later push cannot silently change what executes:

dsh plugin --profile <name> add github:MOLAaaaaaaa/dsh-seismicx#<sha>

That allowance is permission to execute this package's code on your machine at install time, outside any sandbox the agent runs under. prepare here is transpile-only (tsc --noCheck), so it cannot fail from peer-version drift the way a type-checking build would.

Configure

Point the plugin at the skill in the profile's cordis.patch.yml:

- id: seismicx
  config:
    skillRoot: /absolute/path/to/seismicx-catalog-skill
    python: /path/to/.venv/bin/python
    workdir: /path/to/your/project

The shipped cordis.patch.yml reads SEISMICX_SKILL_ROOT and SEISMICX_PYTHON from the environment instead, if you would rather not write the path into a file.

Verify the wiring without touching any data:

dsh --profile <name> --dump-config   # the seismicx row should appear

then ask the agent to call seismicx_list_models.

Config

FieldDefaultDescription
skillRoot— (unset ⇒ inert)Absolute path to the skill checkout
pythonpython3Interpreter used for every subcommand
workdir.Directory relative output paths resolve against
listModels / scan / pick / plotMaptrueRegister the corresponding tool
allowBackgroundtrueLet seismicx_pick publish background jobs
quickTimeoutMs120000Budget for metadata subcommands
pickTimeoutMs3600000Budget for a foreground pick
plotTimeoutMs600000Budget for map rendering

Unconfigured and misconfigured behave differently, on purpose:

  • skillRoot unset — the plugin logs one line and registers no tools. Installing this bundle

can never stop the harness from booting; an installed-but-not-yet-pointed-at plugin is unconfigured, not broken.

  • skillRoot set but relative — fails loud at load, naming the offending row. That is genuine

misconfiguration, and the error belongs where it identifies the row rather than inside a tool call the model has to interpret.

Existence is deliberately not checked — the path may live in a sandbox or remote execution world this process cannot stat, and ctx.subprocess is what resolves it.

The profile's cordis.patch.yml is watched, so correcting skillRoot or python takes effect without restarting dsh web.

Tools

ToolShapeNotes
seismicx_list_modelsforeground, concurrency-safeCall it first to verify skillRoot/python
seismicx_scanforeground, concurrency-safeWaveform inventory; confirms the archive is readable
seismicx_pickforeground or backgroundSet run_in_background for continuous data
seismicx_plot_mapforeground, concurrency-safeReturns map_path; carries presentationMeta for a UI card

seismicx_pick exposes no filtering argument, on purpose: the skill's standing rule is that continuous waveforms reach the PNSN picker unfiltered.

A background pick is owned by the calling agent, so agent disposal cancels and awaits it. A call with no agent behind it (a direct service invocation rather than a model turn) is refused rather than leaking a multi-hour unowned run.

Design notes

Everything goes through ctx.subprocess, never node:child_process. The seam is what carries the deployment's sandbox and remote-execution choices, so a composition that points subprocess at a remote runner moves these tools with it, unchanged.

argv is an array and is never shell-interpreted. A station code or path containing shell metacharacters cannot escape into a command line.

A non-zero exit is a domain outcome, not a throw. It is represented in the canonical value (exit_code, stderr_tail) so callers can branch on it. Only spawn-level failures reject.

The Python process is not confined. Confinement is a consumer responsibility in this architecture — ctx.shell's sandbox providers wrap argv before handing it to ctx.subprocess, and this plugin does not do that wrapping. Treat these tools as carrying the same trust level as the bash tool: they run the interpreter you configured, with your ambient filesystem and network access. Routing argv through a ctx.sandbox backend is listed below as deferred work.

Not done yet

  • The remaining nine subcommands. polarity, associate, locate, magnitude-ml,

mechanism, analyze, build-tools, init-config, and the end-to-end catalog follow the same shape as seismicx_scan; adding one is mechanical.

  • Structured returns are shallow. Tools report the paths they were given plus exit facts, not

row counts or residual statistics, because the CLI prints prose. The clean fix belongs upstream: a --json summary flag on the Python subcommands, which this plugin would then surface as typed fields instead of stdout_tail.

  • No browser half. seismicx_plot_map already persists presentationMeta.mapPath, which is

what a tool.call.toolview entry keyed seismicx_plot_map needs to render the map inline in the conversation instead of leaving a path to open. A GMT/PyGMT renderer and a shell.overlay control panel (region, projection, depth slice, beachballs) are the intended next step.

  • No sandbox wrapping. ctx.subprocess is called directly, so the interpreter runs unconfined

(see the design note above). Wrapping argv through a ctx.sandbox backend would confine it, at the cost of having to widen the policy for the GPU, model cache, and build-tools network access the pipeline legitimately needs.

  • No capability seams. The picker, associator, locator, and mechanism engines are still CLI

flags rather than swappable ctx.* providers. Seam-ifying them is what would let a freshly fine-tuned checkpoint become a plugin row instead of a code change.

License

GPL-3.0-only — see [LICENSE](LICENSE).

This plugin is distributed under GPL-3.0 because the skill it wraps is GPL-3.0. DeepSeek Harness itself is MIT and is not covered by this license; MIT is one-way compatible with GPL, so a GPL plugin may run on an MIT harness, but this plugin's code cannot be relicensed into the harness repository.

The bundled model checkpoints in the skill carry their own separate terms; see the .LICENSE files beside them in assets/models/.