dsh-foundry:DSH 插件蓝图编译器

前言

在 DeepSeek Harness(DSH)里编写插件时,经常要处理运行时契约、参数描述、代码生成与静态校验。dsh-foundry 针对这个过程提供了一个自举式「一切皆插件」编译器:它本身是一个 DSH 插件,用来研发插件,并能被其它插件扩展。

这是什么

dsh-foundry 是一个 DSH 插件。它把 DSH 插件运行时契约固化为蓝图,支持一键编译出可直接 cordis_define 的宿主/浏览器代码,并在定义前做静态校验。

GitHub 仓库:https://github.com/hellosky983/dsh-foundry。许可证为 MIT。

核心能力

  • 提供 foundry 服务:任意插件可调用 ctx.get('foundry'),并通过 registerBlueprint(...) 续写配方。
  • 提供三个模型工具:foundry_blueprintsfoundry_scaffoldfoundry_validate
  • 内置九种蓝图:覆盖 Host/Client/RPC/事件/服务/定时器/系统提示/Skill/文件工具。
  • 在 Settings 提供只读蓝图画廊页。
  • 注册只读 GET /foundry/state 路由,返回蓝图目录元数据。

安装与启用

安装时用手動 link 方式,不使用 dsh plugin --profile web add ./dsh-foundry

1、编辑 $DSH_HOME/profiles/web/package.json,在 dependencies 中加入:

"dsh-foundry": "link:/绝对路径/dsh-foundry"

并在 dsh.profile.bundles 数组中加入:

"dsh-foundry"

2、在 profile 目录安装依赖:

cd $DSH_HOME/profiles/web && pnpm install

3、安装后运行配置检查,确认出现 # == dsh-foundry 层:

dsh --profile web --dump-config

典型用法

最小流程如下:

1、调用 foundry_blueprints,返回 9 个蓝图,字段包括 idnamecategorydescriptionparams

2、调用 foundry_scaffold 生成代码:

foundry_scaffold {
  blueprint: 'host-tool',
  params: { toolName: 'hello', toolDescription: 'say hi' }
}

这一步返回可粘贴的 code.host

3、把返回的 code.host 交给 cordis_definecordis_run,使名为 hello 的模型工具上线。

扩展配方时,在任意插件内获取 ctx.get('foundry'),并调用 foundry.registerBlueprint(...) 注册新的配方,例如使用 id: 'my-recipe'

数据、权限与兼容

本插件无配置项、无环境变量、无敏感信息。蓝图参数有内置默认值,例如 host-tool.toolName 默认 my_tool

dsh-foundry 本体不读写任何文件。fs-file-tool 蓝图会生成宿主文件读写工具,但那是之后自行部署的插件,不是 dsh-foundry 本体行为。

网络方面,仅在 DSH 本地 web 服务注册 GET /foundry/state 路由(回环地址),返回蓝图目录元数据。不访问、不读取、不上传任何凭据或用户数据。

兼容 DSH 0.1.0-rc.6@deepseek-ai/dsh-tools ^0.1.0-rc.6,最后验证日期为 2026-08-15。版本差异较大时需先冒烟测试。

适用场景与注意

适合使用 DSH 编写插件,并需要扩展配方或生成运行时工具的开发者。

安装前应检查源码和许可证。该插件以当前 dsh 进程权限运行,应只在自己信任的 profile 中启用。

正式 bundle 的 defineTool 参数必须是逐属性 DSL,不能使用 { type: 'object', properties } 包装式。

若发现安全问题,请通过私有渠道报告,不要公开披露。

结尾

dsh-foundry 的价值在于把 DSH 插件开发中的契约、脚手架和校验集中到一个服务里,让插件扩展更直接。

GitHub 仓库:https://github.com/hellosky983/dsh-foundry

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

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

Xiaoye