Back to home@EvieHe

dsh-resume-headless

DeepSeek Harness (dsh) bundle: headless one-shot session resume. `dsh --profile headless --resume <session-id> "task"` continues a persisted session (history and turn numbering carry on), prints and exits. Overrides the official headless runner via ctx.agents.resume(); install with `dsh plugin add github:EvieHe/dsh-resume-headless#v0.1.1`.

Stars
0
Language
TypeScript
Created
Aug 24, 2026
Updated
Aug 24, 2026
GitHub repo

Introduction

dsh-resume-headless

给 DeepSeek Harness 官方 headless profile 加一次性会话恢复(one-shot resume)能力的 bundle:

dsh --profile headless --resume <session-id> "继续任务"   # 恢复历史会话,跑完即退出
dsh --profile headless "新任务"                           # 无 --resume 时行为与官方 headless 完全一致

原理:--resume 时走核心 API ctx.agents.resume({ resumeSessionId })——从持久化 (默认 $DSH_HOME/sessions)加载会话、重建历史、轮次编号接着上次;否则退回官方 agents.create() 新建随机会话。恢复路径、输出契约(stdout 最后一条 assistant 文本、 completed → 0 / 其他 → 1)与官方 headless 一致;会话 id 打印到 stderr(dsh-session: <id>) 方便脚本续接。

安装

先安装 dsh CLI(npm i -g @deepseek-ai/dsh),然后任选一种:

# npm(推荐)
dsh plugin --profile headless add dsh-resume-headless

# git(源码构建,首次会因 pnpm ≥10 拦截 prepare 失败:
# 把提示的 allowBuilds 键加进 ~/.dsh/profiles/headless/pnpm-workspace.yaml 后重跑)
dsh plugin --profile headless add github:<you>/dsh-resume-headless#v0.1.0

# 本地 checkout
dsh plugin --profile headless add file:.

要求:Node ^22.19 || >=24;只适用于叠加了 @deepseek-ai/dsh-headless 的 profile。

配置

模型与官方 headless 一样配置:DEEPSEEK_API_KEY 环境变量 / $DSH_HOME/settings.yamlllm-deepseek.baseURL)或 OpenAI 兼容网关(patch llm-pi-ai 行)。

使用

# 新建会话
dsh --profile headless "run the tests"

# 恢复并继续(会话 id 从上次运行的 stderr `dsh-session:` 行提取)
dsh --profile headless --resume session-xxxx "continue where you left off"

# 恢复不存在的会话 → 响亮失败(exit 1),不会静默新建

开发 / 发布

pnpm install
pnpm build        # tsdown: src/ → lib/
pnpm typecheck
pnpm pack         # 本地产物检查
pnpm publish      # 发布到 npm(lib/ 已构建)

lib/ 随仓库提交:git 安装直接使用提交的构建产物,无需 prepare/allowBuilds 等任何构建权限; 改动 src/ 后记得先 pnpm build 再提交。发布后给仓库打上 GitHub dsh-plugin 话题便于被发现。

许可

MIT。