前言¶
在 DeepSeek Harness(DSH)里跑 Agent 时,常见做法是:会话一开始就向模型注入大量工具的完整 Schema 和整段系统提示。结果是首轮 Prompt 体积大、首字延迟和 API 成本上升;工具定义过多时,简单任务也容易出现误调用或指令被稀释。若改用「只给极少工具」的极简预设,复杂任务又往往缺能力。
下面介绍社区插件 dsh-diffusion-preset(维护者 Cplay00),它提供 扩散模式 (Diffusion Mode) 的 Agent 预设,以及 call_directory 渐进式调用目录工具:会话从极简工具集起步,按任务检索、挂载、用完再卸载或重置,在「轻量开局」和「按需全量」之间做折中。插件分类为工作流;当前 GitHub 星标为 0,版本 1.2.0,许可证 MIT。
这是什么¶
dsh-diffusion-preset 是专为 DSH 设计的预设与工具组合:默认只暴露少量基础能力(如文本读取 read、基础 Shell、图片查看器及 call_directory 等,以宿主实际注册为准),写入、编辑、搜索、MCP 与社区插件能力通过目录按需展开。目录内容按当前 Harness 会话内已注册的工具与技能动态聚类,不依赖硬编码外部清单。
同时提供两个预设:扩散模式(标准版) 适配 Native Function Call;扩散模式(PTC 版) 适配 Programmable Tool Calling(在 run_code 中通过 tools.call_directory 等调用)。
设计要点(与标准 Agent 的差异)¶
- 初始极简:简单阅读类任务可直接用已解锁的
read,不必每次先走目录。 - Search First:扩展能力前,README 明确建议先用
call_directory检索当前环境中确切存在的工具或技能名,避免猜测名称。 - 精确挂载:默认按工具精确名称挂载,不自动带出同插件兄弟工具或整组;技能加载默认以说明为主,整类或通配符展开需显式传参。
- 安全门禁:通过
tools/pre-execute监听,误调未解锁工具时可拦截并给出检索与挂载建议。 - 动态收敛:任务阶段结束后可用
unload卸载指定工具,或用reset回到启动时的极简集。
核心功能:call_directory¶
call_directory 是按需能力目录,五种 action 分工如下(也可通过参数缺省自动推断:有 names 倾向 detail,有 query/category 倾向 lookup,皆无则 catalog)。
| action | 作用 |
|---|---|
lookup |
只读检索候选,不改动挂载状态 |
detail |
按名称挂载工具,或 skill: 前缀加载技能 SOP |
catalog |
查看当前环境功能分类大纲 |
unload |
卸载指定已挂载工具 |
reset |
恢复为初始极简工具集 |
检索支持中英文同义词(如「表格」关联 excel/xlsx、「爬虫」关联 crawl 等)、多关键词空格联合匹配,以及 limit/offset 分页。按分类浏览可先 lookup 带 category(例如 file-search),再对返回的精确名称做 detail。
Native 与 PTC 的差异在于:Native 下挂载成功后,下一轮模型请求才能直接调用新工具;PTC 下在同一 run_code 里挂载后,下一次 run_code 才能使用 tools.read 等绑定。
安装与启用¶
在 DSH 终端执行官方安装命令:
dsh plugin add Cplay00/dsh-diffusion-preset
安装完成后,新建会话时在预设下拉列表中选择 「扩散模式」 或 「扩散模式 (PTC)」。
典型用法¶
三步法(lookup → detail → 直接调用目标工具)
第一步只读检索,不挂载:
{"action": "lookup", "query": "read file"}
第二步按名挂载,并拿到该工具的完整参数 Schema:
{"action": "detail", "names": ["read"]}
第三步不再经过 call_directory,直接向 read 传入业务参数,例如:
{"file_path": "src/index.js"}
(参数名以挂载后返回的 Schema 为准。)
按分类了解操作顺序(仍不挂载工具):
{"action": "lookup", "category": "file-search"}
阶段结束后收拢:
{"action": "unload", "names": ["edit"]}
{"action": "reset"}
PTC 挂载示例(第一次 run_code):
const res = await tools.call_directory({ action: "detail", names: ["read"] });
console.log(res.report);
第二次 run_code 中再调用 await tools.read({ file_path: "src/index.js" })(路径与字段以实际 Schema 为准)。
Native 对照:检索与挂载分别发起 call_directory({"action":"lookup","query":"read file"}) 与 call_directory({"action":"detail","names":["read"]}),随后直接 Native 调用 read。
加载技能时在 names 中使用 skill: 前缀,例如 ["skill:docx"]。
适用场景与注意¶
适合:长会话、工具面较广的 DSH 环境(含 MCP、社区插件与领域技能),希望控制首轮上下文体积,又需要在任务中临时展开编辑、搜索、委派等能力的工作流式用法。
注意:
- 插件与 DSH 一样,在当前 dsh 进程权限下运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。
- 社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文事实以仓库 README 与
package.json为准。 - 通配符或
names: ["*"]会一次性展开大量工具,仅在确需全量能力时使用,以免上下文再次膨胀。
结尾¶
dsh-diffusion-preset 用「极简初始 + call_directory 检索挂载 + unload/reset 收拢」把工具暴露节奏交给任务本身,并区分 Native 与 PTC 两套预设。进一步了解可查阅 SkillHub 目录页 与 GitHub:Cplay00/dsh-diffusion-preset。