dsh-pty-session

DSH PLUGIN开发与运行时

仓库 ch1bug/dsh-pty-session

开发与运行时 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 提供 owner-scoped PTY 会话能力,通过 pty_open/send/tail/close 四个协议无关工具管理持久终端,并暴露 ctx.pty 供消费插件注入复用。

一句话选型结论

按资料字段整理

dsh-pty-session 是开发与运行时类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类开发与运行时 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 未标注
最近更新 2026-10-03 创建于 2026-10-02
README 4.9 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:ch1bug/dsh-pty-session#dsh-v0.2.1-alpha.1-r1
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.0-rc.2;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.0-rc.2版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-pty-session:DeepSeek Harness 的持久 PTY 终端会话能力

  • 四个协议无关 PTY 工具
  • 会话跨轮次存活
  • 增量游标读取输出
  • 按 agent 归属鉴权
  • ctx.pty 服务供插件注入

适用场景

终端命令

上游标签

deepseek-harnessdsh-pluginptyterminal

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.0-rc.2),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在开发与运行时场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-pty-session当前 L5 · 运行验证通过 低风险 0 0.2.0-rc.2 有
deepseek-harness L3 · 安装规范通过 低风险 24.6 万 未标注 无
rea L4 · 沙盒安装通过 低风险 2.6 万 0.1.1-rc.2 有
dsh-TUI L4 · 沙盒安装通过 中风险 4,292 0.1.7-rc.2 等 5 个 有
mirage L3 · 安装规范通过 低风险 3,681 未标注 无
dashi-taskboard L4 · 沙盒安装通过 低风险 3,311 0.1.1-rc.2 有

仓库档案

开发与运行时
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方ch1bug仓库 dsh-pty-session · 默认分支 未标注
分类开发与运行时terminal
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证NOASSERTION商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 未标注收录时的数值,非实时
创建 / 更新2026-10-02 · 2026-10-03最后推送 未标注
本站收录2026-10-03首次进入本站目录的时间

README 全文

4.9 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-pty-session

DSH plugin exposing the harness's owner-scoped PTY seam (ctx.terminals
— the same seam @deepseek-ai/dsh-tool-bash-persistent runs on) as four
protocol-agnostic tools: pty_open / pty_send / pty_tail / pty_close.

Layer 0 core: byte-stream sessions with zero protocol knowledge. Line
framing, REPL prompts, and protocol parsing (gdb/MI, ssh banners) belong to
consumer-layer plugins built on top of this surface.

API

Tool Args Returns Notes
pty_open command (required), cwd?, env? sessionId, pid?, status, initialOutput Spawns on a PTY; env vars are exported (POSIX quoting) before the command on shell-type backends. Session survives turns.
pty_send id, data (required), submit? (default true) delta, status Writes bytes; returns output read while the write settled.
pty_tail id (required), lines? text, lines, truncated Incremental cursor: returns only new output since the last tail — repeated tails never resend. Backlog beyond lines returns the newest lines and sets truncated: true.
pty_close id (required) closed Clean termination + reclaim. Idempotent per close.

Lifetime & ownership

  • Every call is authorized against the calling agent (exec.agent); another
    agent touching your session gets FOREIGN_SESSION.
  • Sessions live with the plugin instance, not the turn: a fresh turn on
    the same agent sees all its open sessions.
  • The owner-scoped registry closes all sessions when the owning agent
    disposes; the plugin additionally installs a dispose effect that closes
    every session it opened.

Semantics worth knowing

  • Lines, not bytes: pty_tail inherits the seam's line-based scrollback
    contract (totalLines/lineBegin/lineEnd). Output without a trailing
    newline (a REPL prompt, a password prompt) becomes visible once its line
    completes. Byte-exact tail is the consumer layer's job if a consumer ever
    needs it.
  • pty_send submit: defaults to true (backend Enter after the data) so
    interactive sessions behave; pass submit: false for byte-exact writes.
  • pty_close delegates termination to the seam's awaited, idempotent
    cleanup (process-tree kill + quiescence) — the seam owns the mechanics.
  • env is best-effort POSIX export lines and only meaningful on
    shell-type backends (the seam's spawn request has no env field); don't
    pass env against non-shell backends.

Configuration

backendType: shell   # registered PTY backend type passed to terminals.spawn
tailLines: 200       # default pty_tail budget

Consumer-plugin facade (ctx.pty)

Consumer plugins (dsh-embedded-debug T5, later ssh) do not shell out through
the four tools — they inject the same core as a cordis service:

const inject = ["tools", "pty"];          // add "pty" to the plugin's inject
// inside apply(ctx): ctx.pty is provided by dsh-pty-session
const opened = await ctx.pty.open(exec.agent, { command: "gdb -q -i=mi2" }, exec.signal);
await ctx.pty.send(exec.agent, opened.sessionId, { data: "-gdb-exit" });
const page = await ctx.pty.tail(exec.agent, opened.sessionId, 100);
await ctx.pty.close(exec.agent, opened.sessionId);

The facade exposes open/send/tail/close/dispose with EXACTLY the tool
semantics (same cursors, same seam reads — one core, two surfaces). The
owner is passed explicitly and must be the consumer's own exec.agent;
the seam enforces ownership (FOREIGN_SESSION). close is idempotent
(closed:false for an already-gone session). Loading this plugin becomes a
hard startup dependency of any consumer that injects "pty".

Instance matrix

Consumer Status Why
gdb (dsh-embedded-debug T5/T6) first consumer — injects ctx.pty MI framing lives in the consumer; API shape is being pressed out by gdb's needs.
ssh planned — second consumer Validates the abstraction once a second consumer exists.
serial (tio) / probe server / RTT explicitly excluded Non-PTY long-running processes: job + tail is already the correct pattern.

Development

npm install        # vitest
npm test           # vitest run

Tests are the reference implementation: they drive the real tool surface
against a fake terminals registry whose backend runs real interactive
child processes
(echo round-trips, no protocol parsing).

Harness deps (important)

@deepseek-ai/dsh-tools, @deepseek-ai/schemastery, and @deepseek-ai/cordis
must be junctions/symlinks into the installed harness's node_modules
(never copies): duplicated module instances make the DSH plugin loader fail
the entry with failed to import. On Windows:

New-Item -ItemType Junction -Path node_modules/@deepseek-ai/dsh-tools -Target \node_modules\@deepseek-ai\dsh-tools
# same for schemastery and cordis

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-pty-session 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:ch1bug/dsh-pty-session#dsh-v0.2.1-alpha.1-r1` 即可。

dsh-pty-session 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-pty-session 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-pty-session 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-pty-session 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2。

dsh-pty-session 用的是什么许可证?

上游标注为 NOASSERTION。商用或二次分发前请到仓库确认许可证原文。

dsh-pty-session 有哪些功能?

四个协议无关 PTY 工具、会话跨轮次存活、增量游标读取输出、按 agent 归属鉴权、ctx.pty 服务供插件注入。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

开发与运行时
按星标排序,可作替代方案

rea

rea

L4 · 沙盒安装通过 2.6 万 星

dsh-TUI

dsh-TUI

Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

L4 · 沙盒安装通过 4,292 星

mirage

mirage

把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Sla

L3 · 安装规范通过 3,681 星

dashi-taskboard

dashi-taskboard

把当前已安装并运行中的 Codex Taskboard 嵌入 DeepSeek Harness 侧边栏,并通过 Launcher 运行时描述

L4 · 沙盒安装通过 3,311 星

ch1bug 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。