前言¶
在 DSH 里跑模型、技能和 Agent 预设已经比较顺手,但业务系统往往还在另一套进程里:它只想提交提示词和文件,等 AI 的最终结论和产出文件回来,而不是自己维护一套完整的 Harness 会话栈。手工在 dsh 里开工作区、粘贴任务、再把结果抄回业务库,步骤多且难以做并发、重试和状态恢复。
下面介绍维护者 fevolq 发布的工作流类插件 terms-bridge(npm 包名 @fevolq/terms-bridge)。它在 dsh 侧承担「项目接入」:识别项目、排队调度、在项目工作区创建会话执行,并把最终助手回复与结果文件引用回传给业务项目。
这是什么¶
terms-bridge 是 DeepSeek Harness(dsh)的项目接入插件,用来连接业务项目与 dsh。业务项目提交提示词和文件,插件在对应工作区内创建会话执行任务,并将 AI 的最终回复和结果文件引用回传给项目。
插件通过 dsh 的扩展机制接入,可独立安装和更新;配置与任务数据保存在各自的 dsh 实例中。目录页:fevolq/terms-bridge(SkillHub)。源码与说明:GitHub fevolq/terms-bridge。当前 npm 版本为 0.1.0,许可证 MIT。
核心功能¶
README 与使用说明中列出的能力如下(执行能力仍取决于所在 dsh 的模型、工具和技能):
| 能力 | 说明 |
|---|---|
| 多项目接入 | 每个项目独立工作区及任务会话,可单独配置模型、Agent 预设、权限和回调 |
| 原生设置集成 | 在 dsh「设置 → 项目接入」管理项目,从已配置模型和预设中选择 |
| 配置热更新 | 保存后生效;已有任务沿用接收时的配置;调整并发不中断正在执行的任务 |
| 文件传输 | 上传输入文件、在提示词中 @file_… 引用、下载最终结果文件 |
| 任务调度 | 不限并发或按项目限制;超出部分排队 |
| 执行重试 | 会话失败后按配置重试,每次重试新建会话 |
| 结果回传 | 回传最终助手回复及结果文件;正文排除工具响应和推理内容 |
| 回调重试 | 回调失败时重发已保存结果,不重新执行业务 |
| 状态查询与恢复 | 可查询执行与回调状态;重启后继续处理队列及剩余重试 |
| 项目鉴权 | 可选请求令牌、自定义回调请求头 |
适用任务类型由项目传入的提示词决定,文档举例包括资料分析、文本整理、报告生成,以及借助 dsh 已有技能完成的图片生成、图片编辑等。
工作流程¶
整体链路可以概括为:
业务项目提交任务 → 插件识别项目并排队 → 在项目工作区创建 dsh 会话 → 使用指定模型、预设和权限执行 → 保存最终回复及结果文件 → 回调业务项目。
有输入文件时,先上传到插件 API,再在任务 JSON 的 files 与 instruction 中引用 file_id;任务完成后,业务侧通过结果里的文件 ID 向插件下载文件。
安装与启用¶
环境要求:Node.js 22+,以及兼容的 dsh;文档已验证 dsh 版本为 0.2.1-rc.2。
推荐从 npm 安装。以下命令示例使用 Web profile,请将 web 换成你实际使用的 profile:
dsh plugin --profile web add @fevolq/terms-bridge
已安装时更新到最新版:
dsh plugin --profile web update @fevolq/terms-bridge --latest
需要固定版本时(例如 0.1.0):
dsh plugin --profile web add @fevolq/terms-bridge@0.1.0
安装或升级后,重新加载插件或重启对应 dsh 实例。每个 profile 只启用一个 terms-bridge 实例,再进入 设置 → 项目接入 配置项目。指定版本、本地 .tgz、源码构建及完整协议说明见仓库 docs/usage.md。
典型用法¶
下面按使用说明中的顺序,给出可对照文档复现的最小路径。示例假定 dsh 地址 http://127.0.0.1:3080、项目 ID news、业务回调 http://127.0.0.1:8001/api/dsh/results;跨机器时替换为双方可达的地址。
在 dsh 中新增项目¶
进入 设置 → 项目接入 → 新增项目,填写项目 ID(插件内唯一)、模型、Agent 预设、权限模式、最大并发、结果回调地址等,保存后即可接收任务。工作区路径可留空由插件在 dsh 默认工作区同级按项目 ID 自动创建;项目 ID 与工作区路径保存后不可修改。
业务侧实现回调¶
业务服务需实现 POST 回调,接收插件推送的 result 与 files 列表,并按 file_id 从插件 API 下载文件。使用说明提供基于 FastAPI 的最小 receiver.py 示例;在接收端目录安装依赖并启动:
python -m pip install fastapi uvicorn httpx
python -m uvicorn receiver:app --host 127.0.0.1 --port 8001
插件 API 基路径为 http://127.0.0.1:3080/api/terms-bridge;若项目配置了请求令牌,调用插件时需带 Authorization: Bearer <令牌>。
上传文件并提交任务¶
接收端运行后,另开终端。以下 PowerShell 片段上传一张 PNG,生成任务 ID 并提交任务(路径 C:/images/reference.png 需换成实际文件):
$api = 'http://127.0.0.1:3080/api/terms-bridge'
$projectId = 'news'
$uploadedJson = curl.exe -sS --fail-with-body -F 'file=@C:/images/reference.png;type=image/png' "$api/projects/$projectId/files"
$uploaded = $uploadedJson | ConvertFrom-Json
$taskId = [guid]::NewGuid().ToString('N')
$task = @{
metadata = @{ project_id = $projectId; task_id = $taskId }
instruction = "请分析 @$($uploaded.file_id) 中的内容,并给出结论。"
files = @(@{ file_id = $uploaded.file_id })
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Method Post -Uri "$api/tasks" -ContentType 'application/json; charset=utf-8' -Body ([Text.Encoding]::UTF8.GetBytes($task))
Invoke-RestMethod -Uri "$api/projects/$projectId/tasks/$taskId"
每个新任务应使用新的 task_id;若提交时网络超时,应先查询原任务 ID,必要时用同一 ID 与相同内容重发,避免重复业务任务。多文件场景需逐个上传,并在 instruction 与 files 中同时引用多个 file_id,格式见使用说明中的 JSON 示例。
适用场景与注意¶
适合谁:需要在现有业务系统(Java、Python、脚本或内部平台)里触发 dsh 能力,又不想把 Harness UI 和操作细节暴露给最终用户的团队;需要多项目隔离、并发控制、失败重试与回调可靠性的集成场景。
权限与安全:插件在当前 dsh 进程的操作系统权限下运行,会话仍受 OS 文件权限约束。安装前应阅读源码与 MIT 许可证,确认回调地址、请求令牌与回调请求头符合你的安全策略。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
与 dsh 的关系:安装包可分享给其他机器,各自配置模型、技能和接入项目;插件不替代 dsh 本体,只是把「项目任务执行与结果投递」接到扩展机制上。
结尾¶
terms-bridge 把「业务提交 → dsh 执行 → 结果回传」收成一条可配置的工作流,并在 dsh 设置里统一管理多项目接入。若要查分类与简介,可打开 SkillHub 目录页;安装命令、配置字段、HTTP 协议与更多示例以 GitHub 仓库 README 与 usage.md 为准。