4.3 命令与引用
本节目标
学会用斜杠命令执行内置命令、调用技能,把子代理由主智能体委派出去执行子任务的子智能体,可并行工作、结果汇总回主会话。带进会话,并搞懂技能是什么、怎么装、怎么写,让输入框的效率翻倍。
输入框里藏着的两个快捷键
dsh 的输入框不只是打字的地方。在输入框里敲两个符号,会弹出两个快捷面板:
- 敲 /,弹出命令与技能列表
- 敲 @,弹出引用列表
先混个脸熟,然后逐个说。
斜杠命令:内置命令
在输入框里点 + 或敲 /,弹出命令与技能列表。0.1.5-rc.2 起,菜单按使用频次分两组:
- 添加:
文件、目标、计划、反馈。新文件入口不再以单独的「回形针」按钮出现,而是合并到这条菜单的第一行 - 指令:
压缩、权限、模型、导出
每行带图标、本地化标题 + 说明(英文下首字母大写),中文界面下标题是中文、说明也是中文,但都能搜到对应的英文命令名;如果本地化标题与原名不同,还会把原命令名作为尾随别名显示出来。
| 命令 | 作用 | 章节 |
|---|---|---|
/plan | 进入计划模式(/plan off 退出,/plan 消息 顺带提交任务) | 4.6 |
/goal | 设定或查看当前任务的目标 | 4.5 |
/model | 选择本会话使用的模型提供智能的大模型服务,dsh 负责调度它来思考与生成。 | 4.1 |
/permission | 切换权限预设(沙箱限制命令文件系统效果的隔离机制,可设为只读、工作区写或完全访问。 + 审批的组合) | 4.4 |
/compact | 压缩较早的对话历史,给上下文腾地方 | 4.8 |
/export | 把会话一次独立的对话记录,有自己的上下文,互不干扰。日志导出成 ZIP 归档,方便备份或分享 | 5.1 |
/feedback | 打开当前会话的反馈对话框 | - |

敲了不在列表里的命令会被直接拒绝,不会当作普通消息发给模型提供智能的大模型服务,dsh 负责调度它来思考与生成。,所以放心试。
模糊搜索
列表支持模糊匹配:不用打全名,敲几个字母就能筛出想要的命令或技能。比如想找 compress-images,敲 /ci 就能定位到它。0.1.3-alpha.1 起,候选按命令与技能共享的子序列 ranker 排序:输入被切成空白分隔的 token,每个 token 按子序列在前缀和分段边界(-、_、空格等)拿到额外权重。所以 compimg 能同时命中 compress-images、compress-image-pdf、img-compress 这类名字。0.1.5-rc.2 起,本地化命令的中文短名(如「目标」「计划」「压缩」「权限」等)也走同一条 ranker,输入「目标」能直接定位到 /goal、输入「计划」能定位到 /plan,空格或回车之后发送时会被翻译回目录里的英文命令名执行。
添加文件现在走菜单
0.1.5-rc.2 起,单独的「回形针」按钮被合并进 + 菜单的第一行(文件)。点它或者选中它回车,会打开隐藏的文件选择器,行为跟以前拖拽或回形针点出来的窗口一致;按钮的无障碍名和 tooltip 都是「添加文件或运行命令」。
技能:agent 的"能力说明书"
内置命令之外,/ 菜单里剩下的就是技能告诉 agent 如何完成某类任务的说明书,在会话里用斜杠命令调用。。技能是什么、怎么用、怎么装,这一节一次讲透。
技能是什么
技能告诉 agent 如何完成某类任务的说明书,在会话里用斜杠命令调用。是给 agent 看的"说明书":一份写好的操作指南,告诉 agent"遇到这类任务该按什么步骤做"。装好一个技能,agent 就多会一类活。
技能是可选的。不装技能,dsh 也能正常干活;装了技能,某些任务会干得又快又规范。
怎么用技能
用技能最直接的方式就是斜杠命令:
- 输入框里点
+或敲/,弹出命令与技能列表 - 选一个技能(技能名是 kebab-case,比如
compress-images) - 补一句任务描述,回车
常见的已装技能举例(不同环境不一样,以你的 / 菜单为准):
| 技能示例 | 干什么 |
|---|---|
juejin-pins-publish | 自动发布沸点到稀土掘金社区 |
lark-approval / lark-attendance | 飞书审批agent 执行超权限操作前询问用户的机制,允许只放行这一次。、考勤打卡 |
proxy | 代理服务器配置 |
remotion-best-practices | Remotion(React 视频)最佳实践 |
另外,agent 在干活时如果判断某个技能合适,也会主动加载技能来用(模型侧有对应的 skill 工具)。
没有固定"技能大全"
技能是开放的,不同部署装的技能不一样,所以本教程不列"必装技能"。打开你自己的 / 菜单,里面列出的就是当前环境可用的全部技能。
技能从哪来
dsh 会在固定的几个目录里自动发现技能,不用手动"注册":
| 优先级 | 位置 | 谁放 |
|---|---|---|
| 高 | <项目根>/.dsh/skills | 项目级技能,只对这个项目生效 |
| ↑ | <项目根>/.agents/skills | 项目级,和团队其他工具共用 |
| 自定义目录(配置里指定) | 自定义 | |
| ↓ | ~/.dsh/skills($DSH_HOME) | 用户级,所有项目可用 |
| 低 | ~/.agents/skills | 用户级,其他 AI 工具也读 |
dsh 会自动感知这些目录的新增、修改和删除,不用重启。
项目根怎么算
项目根是往上找第一个含 .git 的目录。没有 git 仓库时,用当前工作目录。
怎么安装技能
安装技能 = 把技能文件放进上面的某个目录。dsh 没有单独的"安装按钮",主流做法有两种:
方式一:直接放目录(最常用)
一个技能就是一个文件夹,里面有一份 SKILL.md:
<技能目录>/
└── my-skill/
├── SKILL.md # 技能主文件(必填)
├── scripts/ # 可选:辅助脚本
├── references/ # 可选:参考资料
└── assets/ # 可选:资源文件想给所有项目用,放到 ~/.agents/skills/ 下;只想给当前项目用,放到项目根的 .dsh/skills/ 下。
方式二:随包技能
部署方把技能打进 dsh 的 bundle 里,开箱即用。这类技能只管用,不用自己装。
管理技能
技能没有统一的"市场",管理就是目录管理,所有操作即时生效、不用重启:
| 操作 | 怎么做 |
|---|---|
| 查看 | / 菜单列出全部可用技能;也可以直接浏览技能目录 |
| 停用 | 把技能文件夹移出技能目录(比如挪到别处),它就从 / 菜单消失;想恢复再移回来 |
| 删除 | 删掉技能文件夹,技能彻底移除 |
| 修改 | 直接编辑 SKILL.md,保存即生效 |
| 升级 | 用新版 SKILL.md 覆盖旧文件,或整体替换文件夹 |
| 分享 | 把技能文件夹复制给对方(放进对方的技能目录);或放进项目 git 仓库,随项目一起分发,同事拉代码就能用 |
为什么没有"安装按钮"
dsh 的技能是文件即技能:发现、停用、删除、分享全靠文件操作,dsh 自动感知目录变化。这是它和"插件市场"式安装的根本区别。
随包技能(部署方打进 bundle 的)你只管用,一般不需要手动删;部分随包技能默认是关闭的,需要部署方在配置里显式启用。
技能文件长什么样
SKILL.md 是技能的核心:开头一段 frontmatter 说明技能的名字和用途,正文就是给 agent 的工作指南。
---
name: compress-images
description: 把图片批量压缩到指定大小。当用户要求压缩图片、减小体积时使用。
---
# 图片压缩技能
1. 扫描目标目录下的所有 PNG/JPG/WebP 图片
2. 用支持压缩的命令逐张处理
3. 报告每张图压缩前后的体积关键就两个字段:
- name:技能名,kebab-case(小写字母加连字符),斜杠命令就是它
- description:一句话说明这个技能干什么、什么时候用。agent 判断"要不要用这个技能"就靠它
正文写得越具体,agent 执行越规范。
手写一个技能试试
动手做一个最简单的技能,10 秒完成:
- 打开用户技能目录
~/.agents/skills/ - 新建文件夹
hello-dsh/ - 在里面创建
SKILL.md,写上:
---
name: hello-dsh
description: 用中文友好地介绍 DeepSeek Harness 是什么。
---
# 你好,dsh
向用户介绍 dsh:它是让 AI 在真实电脑上干活的智能体运行框架。
用简单的话说清楚,不超过 3 句话。- 回到 dsh,输入框敲
/,就能看到hello-dsh出现在列表里
选中它发出去,agent 就会按你的脚本回答。这就是技能的完整生命周期:写文件 → 自动发现 → 斜杠调用。
技能和插件是什么关系
6.2 节讲过:技能是"说明书",插件可插拔的功能模块,dsh 的一切能力都通过插件装配。是"零件"。
- 技能:给 agent 的指令文本(SKILL.md),告诉它怎么做
- 插件可插拔的功能模块,dsh 的一切能力都通过插件装配。:能力的实现单元,技能、工具、界面组件都是靠插件装配和装载的
装技能不需要写插件代码;反过来,插件可以把技能作为能力的一部分带进来。
引用:把子代理带进会话
在输入框里敲 @,弹出引用面板:

引用的作用是把某个东西"点名"出来,让它参与这次对话。可以引用的是子代理由主智能体委派出去执行子任务的子智能体,可并行工作、结果汇总回主会话。和插件 id:
| 能引用的 | 说明 |
|---|---|
| 子代理 | 把子代理点名进会话一次独立的对话记录,有自己的上下文,互不干扰。协同(4.7 节讲) |
| 插件 id | 按插件的标识引用某个插件 |
为什么 @ 里经常是空的
很多新手敲 @ 后列表是空的,以为功能坏了。其实这是正常的:
@ 面板只列出当前正在运行的子代理。新开的会话还没有任何子代理,所以列表是空的;只有子代理正在跑的时候,@ 里才会出现它。
子代理不是从 @ 里"选"出来的,而是让 agent 委派出来的。想用子代理,直接在输入框里说:
- "用子代理由主智能体委派出去执行子任务的子智能体,可并行工作、结果汇总回主会话。并行做这三件事"
- "委派一个子代理去查一下 XX 的文档"
agent 会调用子代理工具创建子代理并让它开始干活。创建之后它进入运行状态,这时 @ 面板里才能引用到它。
子代理在哪看
运行中的子代理在会话头部的子代理列表里管理(展开查看、发消息、打断,4.7 节细讲),不在侧边栏里。
想指定技能?
用技能就走斜杠 /,技能入口在 / 菜单里,@ 不用来引技能。@ 也不能引用文件或图片,图片用拖拽或粘贴添加(4.2 节)。
引用侧栏预览:看着选再发出去
0.1.5-rc.2 起,在输入框里点 @ 引用的文件、或者以 /技能 引用的技能,候选在右侧边栏里就地预览:点开右侧边栏对应标签页就能看到文件内容或技能说明、确认是不是你想引的那个,不用先选择再后悔;加载中的占位 / 待挂载的预览也会优雅处理,不会出现「点了没反应」的卡顿。
反馈:给会话打分
输入框里敲 /feedback,或者点 assistant 消息上的不喜欢(Dislike),都会打开同一个会话反馈对话框:
- 7 个固定类目:从「回答正确」「错误使用工具」「无意义/重复」「不该拒绝」「跑题」「表述不当」「其他」里挑一个
- 选填描述:可以再补一两句话说清具体哪一步不对
- 提交后:右下角弹一个轻量 toast 确认;不喜欢(Like)则即时记录,不用走对话框
- 已经记录的评分,对应按钮会变成实心标记
反馈不是 Debug 工具
反馈只用来给 dsh 团队改进产品用,不会触发回退操作或影响 agent。如果想纠正某轮的回答,直接在对话里继续发消息或者 /goal 重设目标更直接。
怎么判断该用哪个
| 情况 | 用哪个 |
|---|---|
| 想执行内置命令(计划、目标、换模型等) | 斜杠 / |
| 想让它用某个技能干活 | 斜杠 / |
| 想召唤子代理干活 | 直接说,让 agent 委派 |
| 想引用已经运行中的子代理 | @ |
先记住一句话:内置命令和技能走 /,召唤子代理靠说,引用运行中的子代理敲 @。
消息里看到的 / 是 chip 不是文本
0.1.3-alpha.1 起,对话流里看到的 /compress-images 这种样子其实是内嵌 chip,而不是普通文本。它是对话里实际触发过的命令或技能的可视化锚点,悬停时显示技能/命令全名,点击跳到输入框并预填该命令。重新刷新、跨会话回放也会自动还原这些 chip,不会因为是会话历史而丢样式。
常见问题
问:敲 / 没弹出列表?
先确认焦点在输入框里。输入框外敲没有效果。另外列表可能需要先装过技能才丰富,没装技能时只有内置命令。
问:技能装了但 / 菜单里没出现?
先确认 SKILL.md 的路径放对了(技能目录下一级),frontmatter 里 name 和 description 没写错。再看目录有没有被自动感知(新增目录一般即时生效,偶尔等一两秒)。
问:想改技能怎么办?
直接编辑 SKILL.md 的正文或 description,dsh 会自动感知变化。
问:技能能装到别处吗?
能。在配置里指定自定义技能目录,或者用项目级目录只对单个项目生效。
小结
- 输入框的
+菜单与/提示统一出一个分组的清单:添加(文件、目标、计划、反馈)、指令(压缩、权限、模型、导出),每行带图标与本地化标题;文件入口已合并到菜单,不再是单独的「回形针」按钮 - 0.1.5-rc.2 起,本地化命令的中文短名(如「目标」「计划」「压缩」「权限」等)也走同一条模糊 ranker,空格或回车之后发送时会被翻译回目录里的英文命令名执行
- 技能 = 文件夹 + SKILL.md,放进技能目录即被自动发现,
/菜单直接调用 - 0.1.5-rc.2 起,
@引用的文件和/技能引用的技能在右侧边栏就地预览,确认无误再发出去 - 敲
@弹出引用面板,列出正在运行的子代理(没有运行中的子代理时列表为空,正常) - 内置命令和技能走
/;召唤子代理靠指令让 agent 委派,引用运行中的子代理敲@
命令和引用解锁了,下一节讲安全很重要的一块:权限agent 能执行的操作范围,由沙箱和审批策略共同决定。与审批agent 执行超权限操作前询问用户的机制,允许只放行这一次。。