给 DeepSeek Harness 写插件
2026年8月15日·Hangzhou
AI Agent
简介
想让本地跑的 DeepSeek Harness(DSH)Agent 直接调用公司已有的 HTTP 接口(文档、表格、内部数据...),而不是每次都让我手动去查。查下来结论是:DSH 插件本质就是 Cordis 插件,而「调 HTTP 接口」落地成「注册一个工具」就行
# 做法
插件就是一个 ES 模块,导出 export name / inject / Config / apply
TypeScript
加载到本地三步(~/.dsh/profiles/web/cordis.patch.yml):
YAML
Shell
# 踩过的坑
output必填,返回值必须匹配output.schema,否则注册失败或结果被拦。render()负责把结构化值转成给模型看的文本——表格我就渲染成 Markdown 表格,而不是丢一坨二维数组。default不自动填值:DSL 里的default只是给模型的提示,execute里要自己args.x ?? 默认值。- 报错用
throw:模型会看到Error: <message>从而自我修正;比返回错误码好得多。 - Node 版本决定
.ts能不能直接用:我用的 Node 24 原生支持类型擦除,.ts扔进去就跑;但只能用「可擦除语法」(不能用enum/namespace/参数属性)。Node 22 就得编译成.js。 - 相对路径按 profile 目录解析:
name: ./plugins/x.ts相对的是cordis.patch.yml所在目录;想引用 npm 包就用裸包名。 .ts报MODULE_TYPELESS_PACKAGE_JSON警告:profile 的package.json没写"type": "module",Node 默认把.ts当 CommonJS,碰到 ESM 语法就警告并重解析(能跑但慢)。补一行"type": "module":
JSON
# 参考
The End➜cd ~/top
