🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

可续会话命令行 ghbhiee/dsh-plugin-cli-session

DeepSeek Harness
ghbhiee74 天前有提交已提供中文文档扫描:含敏感能力

运行无头命令行会话,随时恢复上次进度

24.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ghbhiee/dsh-plugin-cli-session
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · security
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 74 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
  • 写入本地文件
    lib/startup.js:59
    mkdirSync(dir, { recursive: true });
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-theme@deepseek-ai/dsh-client-web-react
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

可续跑的无头命令行会话运行器,用于 DeepSeek Harness

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-cli-session 一个支持恢复会话的命令行运行器,用于 DeepSeek Harness。它替换了自带的单次无头运行器,新运行器可以继续之前的会话,并且在需要时输出机器可读的信封格式,而不是散文。 它是两个手工复制的配置档运行器的合并产物(一个用于对话,一个仿 claude -p 风格),两者的 runner.js/startup.js 已经漂移成了几乎重复的代码。它们真正共享的部分——会话解析、驱动循环、摘要、退出处理——现在只有一份实现;不同的只是配置。 安装 还没上 npm。构建产物 lib/ 已经提交,所以可以直接从 GitHub 安装——不用下载,不用构建步骤: dsh plugin --profile chat add github:ghbhiee/dsh-plugin-cli-session 或者从本地克隆安装(用 link:,这样本地重新构建会被识别): git clone https://github.com/ghbhiee/dsh-plugin-cli-session.git dsh plugin --profile chat add ./dsh-plugin-cli-session
展开完整文档(README 剩余 1 节)
dsh-plugin-cli-session

一个支持恢复会话的命令行运行器,用于 DeepSeek Harness。它替换了自带的单次无头运行器,新运行器可以继续之前的会话,并且在需要时输出机器可读的信封格式,而不是散文。

它是两个手工复制的配置档运行器的合并产物(一个用于对话,一个仿 claude -p 风格),两者的 runner.js/startup.js 已经漂移成了几乎重复的代码。它们真正共享的部分——会话解析、驱动循环、摘要、退出处理——现在只有一份实现;不同的只是配置。

安装

还没上 npm。构建产物 lib/ 已经提交,所以可以直接从 GitHub 安装——不用下载,不用构建步骤:

dsh plugin --profile chat add github:ghbhiee/dsh-plugin-cli-session

或者从本地克隆安装(用 link:,这样本地重新构建会被识别):

git clone https://github.com/ghbhiee/dsh-plugin-cli-session.git
dsh plugin --profile chat add ./dsh-plugin-cli-session

同系列插件安装方式相同:dsh-plugin-workbench、 dsh-plugin-mobile-shell、 dsh-plugin-cli-session。

开发

pnpm install
pnpm run check # typecheck → vitest → tsdown build

因为 lib/ 是纳入版本管理的(git 安装提供的正是它),每次改源码都要重新构建并提交。

两种风格,一个插件

对话式(~/.dsh/profiles/chat/cordis.patch.yml):

- id: cli-runner
config:
request: !!js ctx.cliStartup
sessionTag: chat-cli
announceSessionId: true

机器可读(~/.dsh/profiles/api/cordis.patch.yml):

- id: cli-runner
config:
request: !!js ctx.cliStartup
sessionTag: api
announceSessionId: false

补丁会替换目标行的整个 config,所以 request 在两处都必须重新声明。

| 字段 | 默认值 | 含义 |
| sessionTag | cli | 写入每个会话的 agentPreset;同时限定 --list 和 --resume 的范围,所以同一目录下的两个配置档永远不会看到彼此的会话 |
| announceSessionId | false | 把 session: <id> 写到 stderr(stdout 保持干净,只放答案) |
| exitGraceMs | 1500 | 等待优雅退出的时长,超时后强制退出;必须是非负数 |

用法

dsh --profile chat "explain this file" # new session
dsh --profile chat -r "follow-up" # resume the newest session here
dsh --profile chat -s <id> "follow-up" # resume a specific session
dsh --profile chat -w ./scratch "start here" # new session in another directory
dsh --profile chat -l # list this profile's sessions here
dsh --profile api -o json "summarize this" # {"type":"result",…}
dsh --profile api -o stream-json "summarize" # init line, then the result line

| 参数 | 含义 |
| -o, --output-format <text\|json\|stream-json> | 打印内容的形态;text 是对话式的那种 |
| -n, --new | 开一个新会话(默认行为) |
| -r, --resume | 在这个目录里继续此配置档最新的会话 |
| -s, --session <id> | 继续指定名称的会话 |
| -w, --workdir <dir> | 开新会话前先创建并进入某个目录 |
| -l, --list | 列出此配置档在此处的会话,然后退出 |
| --json-schema <schema> | 让模型按这个形状输出 JSON(只是提示词,不是约束) |

-o json / -o stream-json 会输出 {type, subtype, is_error, duration_ms, num_turns, result, session_id, usage?}。stream-json 会在前面加一行 {type:"system",subtype:"init",…},带上会话 id、cwd、服务商和模型。

配置写错,启动就失败

这一行的 request 来自 !!js ctx.cliStartup。接错了,配置 schema 的默认值会悄悄产出 action: 'new' 加一个空任务——会话建起来了,模型调用也花掉了,却什么都没干。runner 会在加载时直接拒绝,并告诉你该怎么写:

cli-runner: no task to run. The row's config.request should be wired to the
startup service, as in request: !!js ctx.cliStartup.

空的 sessionTag(--list 和 --resume 用来划定范围的标签)和负数的 exitGraceMs 也会被同样拒绝。

测试

pnpm test 不用 API key 就能覆盖两半:runner 的纯核心(返回哪条助手消息、会话如何按标签划定范围、--json-schema 是提示词文本),以及命令行契约(每种接受的形状、每种被拒的组合,还有 --workdir 是在发布之前 chdir,好让沙箱根目录跟着走)。

已知限制

- --json-schema 是提示词,不是约束。 schema 会追加到任务文本后面,要求模型输出符合它的 JSON;它不是服务商的结构化输出模式。模型照样可能用代码围栏或解说文字来回答,所以解析时要防一手。
- 只返回最后一条助手消息。 中间轮次在会话日志里,不在 result 里。
- is_error 覆盖任何非 completed 的轮次原因,包括压根没启动的轮次。
- sessionTag 存在 agentPreset 里,这是 harness 给智能体预设定义的字段。它今天能当会话标签用,但这是借来的字段,不是有文档的扩展点。
- 硬退出是兜底,不是设计。 发出优雅退出请求后,过了 exitGraceMs 进程就被杀掉,这可能会截断一次非常慢的 flush。
预览分享卡片长什么样 ↓ghbhiee/dsh-plugin-cli-session
分享 · DeepSeek Harness Hub
ghbhiee/dsh-plugin-cli-session

运行无头命令行会话,随时恢复上次进度

回到顶部