dsh-diffusion-preset:扩散模式预设与渐进式调用目录

前言

在 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 的差异)

  1. 初始极简:简单阅读类任务可直接用已解锁的 read,不必每次先走目录。
  2. Search First:扩展能力前,README 明确建议先用 call_directory 检索当前环境中确切存在的工具或技能名,避免猜测名称。
  3. 精确挂载:默认按工具精确名称挂载,不自动带出同插件兄弟工具或整组;技能加载默认以说明为主,整类或通配符展开需显式传参。
  4. 安全门禁:通过 tools/pre-execute 监听,误调未解锁工具时可拦截并给出检索与挂载建议。
  5. 动态收敛:任务阶段结束后可用 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。

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

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

Xiaoye