跳到正文
MyDSH我的 DSH 实战笔记
English
独立维护,非DeepSeek官方;与mydsh.dev等其他MyDSH站点无关联。

首页/开发者与插件开发/MCP与工具定义

注册一个最小自定义工具:从 patch 条目到一次真实调用

想把内部接口做成一个工具让模型调用,不知道注册要做几步。

待实测版本与环境核验日期2026-11-14
前置
已跑通最小插件(见「从零写一个最小插件」)
核验日期
2026-11-14
诚实说明:这一条本站尚未跑通。最小插件能加载(已实测),但把工具的 name / 参数schema / 执行体注册到工具注册表这一步还没做成。所以下面给的是路径与已知信息,不是已验证的步骤——等你跑通了请按模板补记录。

已知的三个层次

层要做什么是否已验证
包能加载package.json + cordis.patch.yml + apply()已验证,见最小插件那条
条目能被合成patch里insert一个id,dump-config能看到已验证
工具能被模型调用往工具注册表注册name/schema/handler未验证——这是本条要补的

从事件里能看到的工具长什么样

会话文件里每次调用都记成 tool/call + tool/result 两条事件,tool/result 里是 {content:[{type:"tool-result", content:[{type:"text"…}], isError}]}。注意 isError 实测恒为false,失败信息在text里(见「工具调用失败」那条)。所以自己注册工具时,失败别指望 isError 会替你标出来。

要跑通这条需要什么

  • 一个能被ctx注入的工具注册服务——具体名字本次没查到,这是卡住的地方。
  • 一次真实调用:跑一个最小任务,让模型主动调用你注册的工具。
  • 把 tool/call 的 name 字段确认为你注册的名字。
这条我不打算编步骤。写清楚「已知在哪、卡在哪」比给一份没跑过的注册流程有用——后者你照着写,卡住时都不知道是文档错还是自己错。

怎么算跑通

照着逐条对,全过才算完成。有一条没过,先解决它再往下。

  • 最小插件那条已经跑通(前置)
  • 知道isError恒为false,失败要写在text里
  • 卡点被如实标出,没有编步骤

会失败在哪

现象 / 原因 / 怎么办,按实际踩到的顺序写。

现象原因怎么办
找不到工具注册服务的名字本次没查到,这是本条的真实卡点从packages/core/tools的导出往下追,或在ctx上打印可注入的服务列表

来源

标「已核验」的,来自本站实跑;标「公开资料整理」的,逐条附出处。