插件目录 / UI & Skins / dsh-node-repl
dsh-node-repl
已验证 · 实测可装 idkidknow
功能简介
Per-session Node REPL terminal in the DSH web UI: a session-local floating terminal (ghostty-web) bridged over WebSocket to an in-process node:repl that has the live agent Cordis Context (agent.ctx) in scope.
可用 — 实测通过,早期项目
Per-session Node REPL terminal in the DSH web UI: a session-local floating terminal (ghostty-web) bridged over WebSocket to an in-process node:repl that has the live agent Cordis Context (agent.ctx) in scope. 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-node-repl
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.
Features
- A REPL button in every session header opens a floating terminal window,
local to that session (no global overlay, no conversation space taken). - A real
node:replprompt — Tab completion, up/down history, top-levelawait,
ANSI colors,.help/.editor. - The live agent context is in scope:
ctx(=agent.ctx) andagent, soctx.plugin,ctx.effect,ctx.get,ctx.on,ctx.provideall work — plus
the usual Node globals (require,process,console,fetch, …). - Draggable and resizable window; collapse keeps the REPL alive, close kills it.
Install
dsh plugin --profile web add dsh-node-repl
Restart dsh web, and the REPL button appears in each session header.
Usage
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
Window controls
| 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).
Notes
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.
Development
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
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-node-repl」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:idkidknow/dsh-node-repl Headless(CLI)profile:
dsh plugin --profile headless add github:idkidknow/dsh-node-repl 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。