dsh-shell-cmd:在对话里执行终端命令并把结果交给模型

前言

在 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 进程权限运行,与你在系统终端执行同类操作风险相当。

典型流程

  1. 安装并启用 bundle,重启或加载 profile 使 Host / 客户端注入生效。
  2. 在新会话输入框执行 /cmd git status --short,观察终端卡片与模型基于输出的回复。
  3. 需要连续试探时输入裸 /cmd,在模态里跑多条命令,确认无误后 Ctrl+Enter 一次性交给模型。
  4. 若权限与「模型 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。

羽毛球分组比赛记分
小程序二维码

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

小夜