dshX:一条命令启动的 deepseek-harness 终端编程应用

前言

用 deepseek-harness(下称 DSH)搭一个终端编程智能体,装完核心的 dsh 只是第一步:还需要挑一个终端前端、选一个 preset,再逐项确认首请求暴露哪些工具、自动注入哪些上下文。这些组件分散在不同的包里,组合与调配置要花时间,稍不注意改动还会落到 DSH 核心上。

社区项目 dshX 针对的就是这个组合问题:它把 DSH 核心、一个分叉的终端前端和一个内置 preset 打包成一个 npm 包,用一条 dshx 命令启动,全程零 DSH 核心改动。下面介绍它的定位、核心行为、安装与使用。

这是什么

dshX 由 NoNshiranai 维护,MIT 协议,npm 包名 @dshx/dshx,当前版本 0.2.4,依赖 @deepseek-ai/dsh 0.1.0-rc.7 与 @dshx/tui 0.1.5。需要说明:这是社区项目,与 DeepSeek 官方无关联、未获背书;基于 deepseek-harness(MIT)开发,遵循官方插件生态指南,仓库带 dsh-plugin topic。

一句话定位:基于 deepseek-harness + @dshx/tui(dsh-TUI 的分叉)、内置 prefab-anchored-standard 的 Claude Code / opencode 风格终端编程应用。

实现上,dshX 不是 fork,而是一个「profile bundle + launcher + 内置 preset」分发层。dshx 命令等价于 dsh --profile dshx,组合三部分:

  • dsh-base:deepseek-harness 核心;
  • @dshx/tui:dsh-TUI 的分叉终端前端;
  • dshx patch:把默认 preset 设为 prefab-anchored-standard。

核心能力由 deepseek-harness 提供,dshX 只做组合,零 deepseek-harness 核心改动。

核心功能

默认 preset:prefab-anchored-standard

dshX 内置默认 preset prefab-anchored-standard,思路是先把新会话预填充成一段已验证的轨迹,再把首请求的工具目录和注入上下文收窄到最小集合,之后逐步恢复。

1、会话预填充:新会话用 compact prefab 模板预填充已验证的 anchored 轨迹(prefab-session-seed);

2、首请求仅暴露官方 Minimal preset 的 REAL 工具对(持久 bash + str_replace_editor),输出预算为 adapter 默认(无 1024 cap);

3、context-gate:首请求剥离技能目录、AGENTS.md、时间/tmux、hooks 等自动注入,只放行用户主动的 / 技能手势。

晋升与发现工具

preset 采用 promoteOn: either:首个持久工具调用或首个助手回复之后,目录收窄为 Minimal 对 + 三个发现工具(dev_tool_search / skill_search / skill_load)+ 显式解锁的工具。

也就是说,晋升后目录仍是小的,其余工具经发现工具按需解锁。

skill-catalog-gate 与内置 j-space skill

skill-catalog-gate:prefab 会话不广播 host skill catalog。j-space 经 skill_search + skill_load/j-space 手势按需加载。

dshX 随包内置 j-space skill(J-Space Cognition Suite V3.6)。launcher 以 marker+checksum 幂等同步到 $DSH_HOME/skills/j-space,绝不覆盖用户目录。

子代理、compaction 与 resume

这套策略同样作用于子代理(includeSubagents: true)。compaction 之后,会话回到受控相位;resume/reload 保持相位。

安装与启用

前置条件:Node ^22.19 || >=24、pnpm 10+(首次初始化 profile 需要)、DEEPSEEK_API_KEY。dsh CLI 已随包内置,无需单独安装 @deepseek-ai/dsh;装了 dshx 之后再单独装官方 dsh 会冲突,不要这么做。

npm install -g @dshx/dshx

全局安装 dshx,自动带上内置 dsh、TUI、preset 和 j-space skill。

dshx

启动应用。首次运行会自动初始化 dshx profile 与内置 preset:执行 dsh plugin --profile dshx add @dshx/tui@<v> @dshx/dshx@<v><v> 为对应包版本),并幂等同步内置 preset 与 j-space skill。

典型用法

先做环境自检,再按需恢复会话:

# 环境自检
dshx doctor

# 恢复上次会话
dshx --resume

dshx 会透传内置 CLI,dsh plugin --profile X add <pkg>dsh --version 等命令可直接使用。

preset 切换

会话内用 /preset 可切换官方 standard / code / minimal / cordis。优先级为:CC_TUI_PRESET 环境变量 > 持久化选择 > roster default。

注意:minimal 仅 Linux 可用——Windows 上 persistent-bash 无法创建。dshX 默认的 prefab-anchored-standard 在 Windows 用 custom-bash(Git Bash 路径),无此问题。

从 dsh-TUI 迁移

dshX 的终端前端 @dshx/tui 是 dsh-TUI 的分叉,与 dsh-TUI 共享 $DSH_HOME/sessions 会话库与 ~/.dsh-cc 偏好目录。从 dsh-TUI 迁移无需搬数据,已有会话和偏好直接可见。

适用场景与注意

适合这些场景:

  • 想要 Claude Code / opencode 风格的终端编程体验,且基于 deepseek-harness;
  • 不想自己组合 dsh、终端前端与 preset;
  • 已在用 dsh-TUI,希望默认获得 prefab-anchored-standard 且不搬数据。

使用前注意以下几点:

1、沙箱默认 workspace-write + ask,写入操作会弹审批。workspace-write 只限制写入,不限制读取、网络与进程可见性,Linux 与 Windows 皆然;Windows 的写边界更弱(windows-acl 部分约束、NTFS 硬链接可 alias 外部路径、可写目录须 caller-owned)。

2、可信环境可用 DSHX_SANDBOX_MODE=danger-full-access 进入完整访问(无审批),但默认永远是 workspace-write + ask。

3、遥测默认关闭(session-telemetry-otel 行禁用,无端点)。

4、preset 安装在用户根 $DSH_HOME/.agent-presets(trust: user),安装前可自行审阅 preset/ 下的文件。

5、从 dshX ≤ 0.2.1 升级:旧默认 preset anchored-standard 不会被删除,会留在 /preset 列表;已有 agent-preset 会覆盖 roster default,想用新默认请先 /preset 切回。

6、已知问题见仓库 KNOWN_BUGS.md

最后是通用提醒:插件以当前 dsh 进程权限运行,dshX 是社区项目,安装前建议检查源码与许可证。协议为 MIT;preset/ 派生自 dsh-anchored-standard 的 prefab 模式(含 DeepSeek Harness Standard preset 改编),原始版权与 MIT 声明保留在 NOTICE。

小结

dshX 的价值在于把「DSH 核心 + 终端前端 + preset」的组合固化成一条 dshx 命令:零核心改动、不覆盖用户数据、默认沙箱与遥测关闭,并内置一套首请求收窄的 prefab-anchored-standard preset。如果你在用 deepseek-harness 做终端编程,可以先跑 dshx doctor 检查环境,再决定是否采用。

仓库与目录页:

  • GitHub:https://github.com/NoNshiranai/dshX
  • 插件目录页:https://www.skillhub.cn/plugins/NoNshiranai/dshX (社区独立目录,与 DeepSeek / 幻方无官方从属关系)
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye