dsh-doctor
asdf17128
Find what your DeepSeek Harness (dsh) patches silently broke — dead patches, config fields dropped by whole-config repla…
PROJECT TOPICS
PROJECT README
Per-session Node REPL terminal for the DSH web UI. Open a real Node.js REPL
inside any conversation — with the live agent context (ctx, agent) in scope.
node:repl prompt — Tab completion, up/down history, top-level await,
ANSI colors, .help / .editor.ctx (= agent.ctx) and agent, so
ctx.plugin, ctx.effect, ctx.get, ctx.on, ctx.provide all work — plus
the usual Node globals (require, process, console, fetch, …).dsh plugin --profile web add dsh-node-repl
Restart dsh web, and the REPL button appears in each session header.
Open a session, click REPL, and type JavaScript. Top-level await works:
> 1 + 1
2
> await Promise.resolve(42)
42
> ctx.get("webServer") // any service the agent can reach
> agent.id // the session id
| Control | Effect |
|---|---|
Header REPL button |
open / restore / collapse |
Title bar – |
collapse (keep the REPL alive) |
Title bar ✕ |
close (kill the REPL) |
| Drag the title bar | move the window |
| Drag the bottom-right corner | resize |
The REPL belongs to its session: refreshing the page, dropping the WebSocket, or disposing the agent kills it (reopen to start fresh).
The REPL runs inside the DSH host process (not in a child), which is how it
reaches the live agent.ctx. That also makes it a fully-trusted local tool: code
runs unsandboxed and can hang the process — treat it like a shell on that process.
Requires pnpm and Node ≥ 22. Build outputs (lib/) are
generated, not committed.
pnpm install # installs deps and builds (prepare)
pnpm build # rebuild host (tsc) + client bundle (esbuild)
pnpm test # PTY/REPL bridge smoke test
pnpm lint # eslint
pnpm format # prettier --write CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。