前言¶
在 DeepSeek Harness(DSH)里做智能体或日常开发时,模型往往只能依赖工具链或你口述的环境信息。真实仓库状态、构建输出、一次性的诊断命令,仍常需要你在 IDE 外开终端,再把结果复制进对话。Claude Code 一类产品用 !<command> 把命令嵌进会话;DSH 生态里需要同类能力,且要明确把「命令 + 输出」交给模型,而不是只展示给你看。
下面介绍社区插件 dsh-shell-cmd(维护者 xx529,分类为客户端)。它在输入框提供 /cmd,对标上述思路,并在对话里用终端卡片渲染执行过程与结果。
这是什么¶
dsh-shell-cmd 是 DSH 的 bundle 插件:Host 侧注册 cmd 命令与终端 RPC,客户端侧提供命令菜单、终端卡片 UI 和交互终端模态。一句话定位:先(或先在模态里)执行你输入的 shell 命令,再把命令、工作目录、退出状态与 stdout/stderr 组装成一条 user 消息发给模型,并要求模型据此回复。
项目托管于 GitHub(xx529/dsh-shell-cmd),可在 SkillHub 目录页查看条目;与 DeepSeek / 幻方无官方从属,属于 Harness「一切皆插件」生态中的社区组件。当前 package 版本为 0.3.13,许可证 MIT,依赖 dsh >=0.2.1-rc.2 <0.3.0、Node ^22.19.0 || >=24.0.0。
两种用法¶
/cmd <终端命令>:单条命令¶
在输入框输入 /,从菜单选 cmd,或直接输入 /cmd 后写命令并回车。命令在当前会话工作目录执行;结束后模型自动收到结构化说明(含「用户手动执行了此命令」、命令原文、cwd、退出状态与输出),并给出回复。对话里会出现终端卡片:等宽字体、$ 提示符、状态胶囊(执行中 / 退出码 / 超时 / 取消)、可展开长输出、复制按钮。
示例:
/cmd ls -la
/cmd git log --oneline -5
/cmd cat package.json
/cmd npm test
输入框进入 /cmd 模式时,下方会出现「终端命令模式」提示条,说明先执行再把结果发给模型。
裸 /cmd:交互终端模态¶
只输入 /cmd 并回车(不带命令),会立即打开居中模态(背景模糊,体验与 /context 类似):在模态里逐条执行命令,Enter 执行当前行,Ctrl+Enter 把整段终端内容发给模型并在对话里保留一条终端卡片;Esc 或点击遮罩关闭,未发送内容丢弃。
模态内支持 cd 跨命令保留目录、export / unset 影响后续命令;不适合 vim、top 等需要 TTY 的全屏程序。发送成功后模态关闭;若这次发送是对话的第一个动作,会话标题会按规则用第一条命令命名(见下文)。
行为与边界(使用前建议通读)¶
| 情况 | 表现 |
|---|---|
| 退出码非 0 | 卡片显示红色「退出 N」;输出仍发给模型 |
| 超时 | 默认 120s 杀进程,卡片显示「已超时」 |
| 执行器无法启动 | 卡片显示错误,不会触发模型轮次 |
| 输出过长 | 单流最多读 256 KiB;卡片与模型文本各自截断到 24k 字符并标注省略 |
| 取消 | 不向模型发送任何内容 |
| 会话正在跑 Agent | 命令照常执行;消息经 agent.followup() 排队 |
权限:默认以 danger-full-access 交给 ctx.shell,语义上等价于你在本机终端执行——不套 macOS seatbelt,可写工作区外、可联网。若要与会话沙箱策略一致,可在行配置中加 useSessionPolicy: true。
环境:由 DSH 桌面进程的 bash executor 执行,不加载 ~/.zshrc 等交互 rc,PATH 可能与日常终端不同;固定覆盖 NO_COLOR=1、TERM=dumb 等。需要登录 shell 环境时,在命令里显式 source 或使用 bash -lc '…'。
不是模型工具:仅人类通过 /cmd 触发;模型只能看到结果,不能调用此入口。
不需要「用第一条命令命名会话」时,行配置可加 nameSession: false。
安装与启用¶
资料中的安装方式为本地 bundle 目录(开发或自托管副本),示例:
plugin_manager action=install_bundle target=/Users/lzx/Documents/GitHub/dsh-shell-cmd
将 target= 换成你本机上的插件目录路径。安装后 bundle 写入当前 profile 的 package.json(dsh.profile.bundles),并通过 cordis.patch.yml 插入 Host 插件 shell-cmd(name: dsh-shell-cmd)。安装前请自行审阅仓库源码与 MIT 许可证;命令以当前 DSH 进程权限运行,与你在系统终端执行同类操作风险相当。
典型流程¶
- 安装并启用 bundle,重启或加载 profile 使 Host / 客户端注入生效。
- 在新会话输入框执行
/cmd git status --short,观察终端卡片与模型基于输出的回复。 - 需要连续试探时输入裸
/cmd,在模态里跑多条命令,确认无误后 Ctrl+Enter 一次性交给模型。 - 若权限与「模型 bash 工具」需一致,按 README 配置
useSessionPolicy: true后再测同一命令。
适用场景与注意¶
适合:希望在 DSH 对话内完成「跑命令 → 让模型读输出 → 继续推理」闭环的开发者;需要比复制粘贴更结构化、且会话里可回放终端卡片的场景。
注意:默认全权限执行;超时与输出上限会截断极端情况;交互模态不是完整 PTY。历史会话中终端卡片由 command/run 与 command/done 重建,刷新后仍在。
结尾¶
dsh-shell-cmd 把显式终端操作接进 Harness 对话:单条 /cmd 或交互模态,统一把命令与输出交给模型,并在 UI 用终端卡片留痕。目录页:https://www.skillhub.cn/plugins/xx529/dsh-shell-cmd;源码与完整说明:https://github.com/xx529/dsh-shell-cmd。