前言¶
用 DeepSeek Harness(DSH)做开发,常遇到两种交替出现的需求:有时希望智能体自己查资料、改文件、跑命令,完整走一遍 agent 循环;有时只想要一段简洁回答,控制权留在自己手里。
改 agent preset 可以改变行为,但那是会话级的替换,会话进行到一半并不合适。dsh-autonomy 补的就是这个缺口:它改变的是当前会话的自主级别,而不替换会话的 model、preset、history、sandbox 或 permission policy。DSH 生态的思路是「一切皆插件」,这个能力也是以插件形式接入的。
下面介绍这个插件的安装、用法与边界。
这是什么¶
dsh-autonomy 是由 JinkaiLiu 维护的 DSH 插件,许可证为 MIT,package 当前版本为 0.1.2。一句话定位:不离开当前 DeepSeek Harness 会话,在 Chat 与 Agent 两种模式之间切换。
包内含一个 DSH host plugin 和一个浏览器 client bundle(web 平台,注入 @deepseek-ai/dsh-client-ui-conversation),通过 dsh plugin 命令一次性添加到指定 profile。
核心功能¶
常驻切换控件:在 Web composer 上方的专用行提供常驻的 Chat | Agent 控件,不覆盖文本输入区,也不占用 composer 工具行的空间。
状态跟随会话:模式选择绑定当前会话,重载、恢复后保持,并通过持久会话日志跟随 fork。
Chat 模式三层防护:
- 限制智能体继承到的工具面;
- 移除最终模型请求中的全部工具 schema,包括保留的 Code Mode transport;
- 对未通告或来自记忆的工具调用做执行守卫。
Chat 模式还会附加一段简短系统指令,让模型直接以文本作答,需要执行时提示用户切换到 Agent。由于请求中不带工具 schema、执行门再拦一层,这个模式可以降低意外 token 消耗。
Agent 模式还原:切回后恢复原始 DSH 工具集与执行策略。
切换即时生效:每次有效切换(包括进行中的 turn 期间)都会即时写入 DSH 内置命令日志。这条记录既驱动 UI 状态,也即时改变策略门控,不用等下一次模型调用。
命令入口:提供 /autonomy chat 与 /autonomy agent 两个命令。
安装与启用¶
运行环境要求 Node.js ^22.19.0 或 >=24.0.0。版本兼容方面,已发布的 0.1.1 支持 DSH 0.1.0-rc.6+ 与 0.1.1-rc.1+ API 家族;当前开发线额外支持重新设计的 0.1.2 家族,并经 0.1.2-alpha.5 与 0.1.2-rc.1 验证。
先确认 DSH CLI 可用,不需要全局安装:
npx @deepseek-ai/dsh --version
从 npm 安装并启动:
npx @deepseek-ai/dsh plugin --profile web add dsh-autonomy
npx @deepseek-ai/dsh web
如果安装时 DSH Web 已在运行,需要用 Ctrl+C 停止后重启,现有进程不会热加载新装的插件。默认端口被占用时,可以停掉旧进程,或换个端口启动:
npx @deepseek-ai/dsh web --port 3081
从本地 checkout 安装时,先构建再以绝对路径添加:
pnpm install
pnpm run build
npx @deepseek-ai/dsh plugin --profile web add /absolute/path/to/dsh-autonomy
npx @deepseek-ai/dsh web
注意:从 GitHub 源安装,需要在对应 profile 里允许该包的 prepare 构建脚本后重试;npm 发布版或打包 tarball 自带构建产物,不需要安装期构建权限。
卸载时从同一 profile 移除,再重启 DSH Web:
npx @deepseek-ai/dsh plugin --profile web remove dsh-autonomy
npx @deepseek-ai/dsh web
插件不保留独立的数据库或配置目录。移除后,历史 /autonomy 记录仍留在会话日志中,但不再生效。
典型用法¶
两种切换方式:点击 composer 上方的 Chat 或 Agent 按钮;或者运行命令:
/autonomy chat
/autonomy agent
需要调整默认行为时,在 profile 的 cordis.patch.yml 中覆盖 id 为 autonomy 的配置项:
- id: autonomy
config:
defaultMode: agent
chatGuidance: >-
You are in Chat mode. Answer directly in text. Do not use tools or take actions.
Ask the user to switch to Agent mode when the request requires execution.
denyMessage: >-
Chat mode does not allow tool execution. Switch to Agent mode to use tools.
defaultMode 默认为 agent,chatGuidance 与 denyMessage 的默认措辞与上面示例等价。
想参与开发的话,仓库提供两个检查脚本:
pnpm run check
pnpm run pack:check
适用场景与注意¶
适合的人群:经常需要在同一个会话里,于「让智能体干活」和「只要一个回答」之间来回切换的开发者;尤其是希望压低意外 token 消耗、又不想重建会话上下文的情况。
几个边界需要提前知道:
- 切到 Chat 只阻止尚未通过执行门的工具调用,不会取消已运行的工具体,也不会回滚之前的副作用。想让当前操作跑完,不需要任何动作;要取消当前 turn,使用现有的 Stop 控件。
- Chat 模式不削弱、也不替代 DSH 的 sandbox 与 permission policies。Agent 模式恢复的是原始工具行为,工具能做什么仍由既有策略决定。
- 插件本身不做网络请求、不收集遥测、不读取 provider 凭证、不读写工作区文件,模式变更仅通过 DSH 既有的会话命令日志记录。
两个常见问题的处理:
- 装完看不到切换控件:重启 DSH Web 进程,确认插件已加入
webprofile,然后刷新浏览器。 - 提示
unknown command: /autonomy:Web client 加载了但 host bundle 没有加载,停掉所有旧的 DSH 进程,再以同一 profile 启动。
安全提醒:安装任何第三方 DSH 插件,都会以 DSH 进程的权限执行其代码。在包含敏感数据的环境里,安装前应先审查源码与包内容。dsh-autonomy 为 MIT 许可,源码公开可查。
小结¶
dsh-autonomy 把「会话的自主级别」变成了一个随手可切的开关:上下文不动、策略不换,需要答案时切 Chat 省下工具执行的开销,需要执行时切回 Agent 恢复完整能力。
项目地址:https://github.com/JinkaiLiu/dsh-autonomy ;社区目录页:https://www.skillhub.cn/plugins/JinkaiLiu/dsh-autonomy 。目录是独立维护的社区站点,与 DeepSeek、幻方没有官方从属关系。