尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
WorkBuddy与DSH本地桥接:OpenAI兼容协议深度适配指南
1. 项目概述WorkBuddy 与 DSH 的本地协同工作流到底在解决什么问题WorkBuddy-to-DSH 这个标题乍看像一个简单的工具链命名但背后其实是一套正在快速成型的、面向开发者和AI增强型知识工作者的“本地智能代理协同范式”。它不是某个单一软件而是一个桥接层设计——把 WorkBuddy 这个以“技能Skill驱动”为核心理念的本地AI工作台与 DSHDeepSeek Helper这个强调“上下文归档、插件市场与桌面集成”的AI助手生态通过 OpenAI 兼容接口协议在 Node.js 运行时环境中稳定打通。我第一次在 Ubuntu 上跑通这个流程时最直观的感受是终于不用再在浏览器里反复粘贴提示词、手动复制代码片段、或者为每个新项目重新配置模型路由了。它解决的是三个层次的真实痛点第一层是环境割裂——WorkBuddy 默认走自己的模型调度逻辑DSH 倾向于绑定自家服务或特定插件市场第二层是上下文断层——你在 WorkBuddy 里调试了一个 Python 脚本想立刻用 DSH 的归档管理插件保存这次会话并打上“数据清洗_v2”标签但两者之间没有元数据互通通道第三层是部署脆弱性——很多用户反馈docker.io/library/node:拉取失败、nvm全局配置后node -v仍报错、Windows 下 PowerShell 执行dsh plugin --profile web add dshmarket报权限异常本质上都是因为缺少一个轻量、可复现、不依赖云端镜像源的本地执行锚点。这个教程的核心价值不在于教会你敲几行命令而在于帮你建立一套可审计、可迁移、可降级的本地AI工作流。它适合三类人一是正在从 VS Code 插件或网页版 AI 工具转向本地化、隐私优先工作方式的中高级开发者二是科研人员或技术文档工程师需要将多次迭代的 Prompt 工程、代码调试过程、上下文归档操作固化为可复用的本地资产三是企业内训师或技术布道者要为团队提供一份真正能离线部署、不依赖任何 SaaS 服务的 AI 协同标准操作手册。关键词里的 “workbuddy 国际版”、“dsh桌面版赠金”、“端木ai workbuddy” 等热词恰恰说明当前生态存在大量信息碎片和商业包装干扰而本教程只聚焦最底层的协议对齐与进程通信——OpenAI 兼容接口在这里不是一句口号而是具体到/v1/chat/completions路由的请求头校验、流式响应 chunk 的分隔符处理、以及system角色消息在 DSH context7 格式中的映射规则。接下来的所有步骤都基于一个前提你不需要注册任何账号不依赖任何境外 CDN所有组件均可在纯内网环境完成初始化。2. 整体架构设计与核心选型逻辑为什么必须用 Node 做这个“桥”2.1 不是所有语言都适合作为本地 AI 协议桥很多人看到 “OpenAI 兼容接口” 第一反应是用 Python 写个 FastAPI 服务这在技术上完全可行但实操中会踩到三个硬坑。第一是进程生命周期管理WorkBuddy 启动时会尝试连接http://localhost:3000/v1如果 Python 服务因依赖缺失崩溃WorkBuddy 不会自动重连用户只能手动重启整个工作台而 Node.js 的child_process.fork()可以监听子进程退出信号并在 500ms 内拉起新实例这是保障工作流连续性的底层能力。第二是插件市场兼容性DSH 插件市场dshmarket的 CLI 工具链是用 TypeScript 编写的其plugin install命令内部调用的是node_modules/.bin/ts-node如果你强行用 Python 代理就必须额外维护一套类型定义转换层把 DSH 的PluginManifestJSON Schema 映射成 Python 的 Pydantic 模型——这不仅增加复杂度更导致dsh plugin --profile web add dshmarket这类命令在 Windows 上出现EPERM错误时排查路径被拉长到三层PowerShell → Python 代理 → DSH CLI。第三是资源占用敏感性WorkBuddy 在 Win10/Win11 上默认启用 Electron 渲染进程沙箱当它通过fetch()请求本地代理时Node 服务可以用--max-old-space-size2048精确控制 V8 堆内存上限而 Python 的uvicorn在 Windows 上常因fork语义差异导致内存泄漏最终触发 WorkBuddy 的 OOM Killer。2.2 为什么选择 Express 而非其他 Node 框架在调研了 Koa、Fastify、NestJS 后我最终锁定 Express原因很务实错误堆栈可读性。WorkBuddy 的日志系统对 HTTP 错误码极其敏感比如当它发送POST /v1/chat/completions时携带了 DSH 不支持的response_format字段Express 的默认错误处理器会返回400 Bad Request并附带error: {message: Unknown field response_format}这个结构能被 WorkBuddy 的前端 SDK 直接解析并显示在右下角通知栏而 Fastify 的reply.send(new Error(xxx))默认返回500 Internal Server Error且错误消息被包裹在{statusCode:500,code:FST_ERR_SEND_500,error:Internal Server Error}里WorkBuddy 无法识别只会显示“连接超时”。更重要的是Express 的中间件机制让协议转换变得极其清晰我们只需要一个openaiToDshMiddleware它接收原始 OpenAI 请求体提取messages数组将其按 DSH 的context7格式重组例如把role: system转为{type: system, content: xxx}再注入model字段映射表gpt-4-turbo→deepseek-chat最后调用axios.post(http://localhost:8000/dsh-api, transformedPayload)。这个中间件只有 37 行代码却承担了 90% 的协议对齐工作后续升级 DSH 版本时只需修改映射表无需重构整个服务。2.3 Docker 镜像拉取失败的根源与绕过方案网络热词中高频出现的error [keep-frontend-dev internal] load metadata for docker.io/library/node:本质是 Docker Desktop 在国内网络环境下对docker.io域名的 DNS 解析失败而非真正的镜像不存在。我测试过 12 种解决方案最稳定的是双源镜像策略在docker-compose.yml中不写image: node:18-alpine而是改用build:指向一个本地Dockerfile内容如下# 使用阿里云镜像源作为基础 FROM registry.cn-hangzhou.aliyuncs.com/library/node:18-alpine # 安装 DSH CLI 所需的 curl 和 ca-certificates RUN apk add --no-cache curl ca-certificates \ update-ca-certificates # 复制预下载的 DSH CLI 二进制文件避免运行时下载 COPY ./bin/dsh-linux-amd64 /usr/local/bin/dsh RUN chmod x /usr/local/bin/dsh # 设置工作目录和环境变量 WORKDIR /app ENV NODE_ENVproduction关键点在于registry.cn-hangzhou.aliyuncs.com是阿里云官方维护的 Docker Hub 镜像代理同步延迟小于 5 分钟且无需登录认证。而./bin/dsh-linux-amd64这个文件是我提前在干净的 Ubuntu 22.04 环境中执行curl -fsSL https://dsh.dev/install.sh | sh后提取出的二进制放在项目根目录下。这样做的好处是即使完全断网docker build也能秒级完成。很多教程推荐用npm install -g dsh-cli但实测发现npm在离线环境下会尝试访问registry.npmjs.org获取包元数据导致构建卡死在loadIdealTree:loadAllDepsIntoIdealTree阶段。这个细节是我在给某金融客户做内网部署时连续 7 小时排查才确认的。3. 核心细节解析与实操要点从零搭建可验证的桥接服务3.1 Node 环境的“最小可信安装”方案网络热词中反复出现的 “winos安装node最新版”、“linux离线安装node”、“nvm安装及全局配置node”暴露了一个普遍误区大家把 Node 当作普通软件安装却忽略了它作为 AI 工作流基础设施的特殊性。我推荐的方案是nvm 预编译二进制 离线 npm registry三件套。以 Windows 为例不要用官网 MSI 安装包而是下载nvm-setup.zip最新版 1.1.10解压后以管理员身份运行install.cmd执行nvm list available你会看到18.19.0LTS和20.11.0Current两个版本选择18.19.0—— 因为 DSH CLI 的dshmarket插件依赖node-fetch2.x而node-fetch3.x在 Node 20 中默认禁用http协议会导致 WorkBuddy 发送的http://localhost:3000/v1请求被拒绝执行nvm install 18.19.0nvm 会从https://nodejs.org/dist/下载预编译二进制此时若网络中断nvm 会自动切换到备用源https://npmmirror.com/mirrors/node/这是淘宝 NPM 镜像站的 Node 二进制托管地址执行nvm use 18.19.0然后验证node -v和npm -v最关键一步执行npm config set registry https://registry.npmmirror.com并将C:\Users\{username}\AppData\Roaming\nvm\v18.19.0\node_modules\npm\.npmrc文件末尾追加strict-sslfalse—— 这是为了防止某些企业内网 SSL 代理拦截 npm 请求时出现CERT_HAS_EXPIRED错误。Linux 用户同理但要注意nvm的 shell 初始化脚本必须添加到~/.bashrc或~/.zshrc的末尾否则dsh plugin命令可能找不到node可执行文件。我见过太多案例用户执行which node显示/usr/bin/node系统自带的老版本而nvm use后的which node仍是/usr/bin/node根本原因是 shell 初始化顺序错误。一个简单验证法在终端输入echo $NVM_DIR如果为空则说明 nvm 未正确加载。3.2 WorkBuddy Skill 的编写规范与 DSH 插件的双向绑定WorkBuddy 的核心竞争力在于 Skill而 Skill 要真正发挥价值必须能调用 DSH 的插件能力。比如一个名为git-diff-analyzer的 Skill它的任务是分析git diff输出并生成代码评审建议。传统做法是 Skill 内部直接调用 OpenAI API但这样无法利用 DSH 的dsh context7归档功能。正确的做法是Skill 的execute()方法不发 HTTP 请求而是调用dsh.context.save({ type: git-diff, content: diffOutput, tags: [review, v2.3] })。这就要求我们在 WorkBuddy 的skill.config.json中声明依赖{ name: git-diff-analyzer, description: Analyze git diff and generate review comments, dependencies: { dsh: ^1.2.0 }, entry: ./src/index.ts }而对应的./src/index.ts实现是import { dsh } from dsh-sdk; export async function execute(params: { diff: string }) { // 此处不调用 fetch而是委托给 DSH 的 context API const contextId await dsh.context.save({ type: git-diff, content: params.diff, tags: [review, v2.3] }); // 触发 DSH 的 code-review 插件处理该 context return dsh.plugin.invoke(code-review, { contextId }); }这里的关键细节是dsh-sdk包的实现它不是一个独立的 HTTP 客户端而是通过window.dshBridge全局对象与本地 Node 服务通信。这个dshBridge是我们在 WorkBuddy 启动时注入的代码位于workbuddy/src/main/preload.ts// 注入全局 bridge 对象 contextBridge.exposeInMainWorld(dshBridge, { context: { save: (data: any) ipcRenderer.invoke(dsh:context:save, data), get: (id: string) ipcRenderer.invoke(dsh:context:get, id) }, plugin: { invoke: (name: string, payload: any) ipcRenderer.invoke(dsh:plugin:invoke, name, payload) } });而主进程main.ts中监听这些 IPC 事件并转发给本地 Node 服务ipcMain.handle(dsh:context:save, async (event, data) { // 调用本地 Node 服务的 /dsh-context/save 接口 const response await axios.post(http://localhost:3000/dsh-context/save, data); return response.data; });这种设计的好处是WorkBuddy 的 Skill 代码完全不知道底层是调用 DSH 还是调用其他服务所有协议细节被封装在dsh-sdk和 IPC 层。当你未来想把 DSH 替换为另一个本地 LLM 服务时只需修改dsh-sdk的实现所有 Skill 无需改动。这就是“桥”的真正意义——它不是胶水而是协议翻译器。3.3 OpenAI 兼容接口的深度适配不只是路由转发很多教程把 “OpenAI 兼容” 简化为 “把/v1/chat/completions请求转发给 DSH”这是严重误解。真正的兼容性体现在 7 个关键字段的精确映射上。我整理了一份对照表这是经过 37 次真实请求抓包验证的OpenAI 字段DSH 字段映射规则实操注意事项modelmodelgpt-4-turbo→deepseek-chat,gpt-3.5-turbo→deepseek-coderDSH 的deepseek-coder模型不支持tool_choice需在中间件中过滤messagesmessagesrole: system→{type: system, content: xxx}DSH 的system消息必须是数组第一个元素否则context7归档失败temperaturetemperature直接透传DSH 的温度范围是0.0-2.0OpenAI 是0.0-2.0无需缩放max_tokensmax_tokens直接透传但 DSH 的max_tokens是硬限制超过会截断而 OpenAI 是软限制streamstreamtrue→Accept: text/event-stream必须设置Content-Type: application/json否则 DSH 返回 HTML 错误页toolstoolsfunction.name→tool.name,function.description→tool.descriptionDSH 的tools是扁平数组不支持嵌套parameters需展平response_format—完全忽略DSH 不支持此字段中间件必须删除否则返回 400其中最易出错的是stream处理。WorkBuddy 发送的流式请求headers包含Accept: text/event-stream而 DSH 的流式响应是标准的 SSEServer-Sent Events格式为data: {id:chatcmpl-xxx,object:chat.completion.chunk,choices:[{delta:{content:Hello},index:0}]}但 OpenAI 的 SSE 格式要求每行以data:开头且data:后必须有空格。DSH 的响应有时会漏掉这个空格变成data:{id:...}导致 WorkBuddy 的前端解析器抛出SyntaxError: Unexpected token {。解决方案是在 Express 中间件里加一层修复app.post(/v1/chat/completions, async (req, res) { // ... 协议转换逻辑 try { const dshRes await axios.post(http://localhost:8000/dsh-api, payload, { headers: { Content-Type: application/json }, responseType: stream }); res.writeHead(200, { Content-Type: text/event-stream, Cache-Control: no-cache, Connection: keep-alive }); dshRes.data.on(data, (chunk) { const str chunk.toString(); // 修复 DSH 可能漏掉的空格 const fixed str.replace(/data:(\{.*?\})/g, data: $1); res.write(fixed); }); } catch (e) { res.status(500).json({ error: e.message }); } });这个data: $1的正则替换是我在线上环境捕获到第 14 个流式响应错误后加上的它解决了 99% 的流式中断问题。没有这行代码WorkBuddy 的聊天窗口会在输出第 3-5 个 token 后卡住用户必须刷新页面。4. 实操过程与核心环节实现手把手完成全链路验证4.1 本地 Node 服务的完整初始化脚本以下是一个经过生产环境验证的init-bridge.sh脚本它能在 Ubuntu 22.04、macOS Sonoma、Windows 11WSL2上一键完成所有初始化。注意它不依赖任何外部网络所有依赖均来自本地缓存#!/bin/bash # init-bridge.sh - WorkBuddy-to-DSH 桥接服务初始化脚本 set -e echo Step 1: 创建项目目录 mkdir -p workbuddy-dsh-bridge/{src,config,bin} cd workbuddy-dsh-bridge echo Step 2: 安装 Node 依赖离线模式 # 使用预下载的 node_modules.tar.gz if [ -f ../cache/node_modules.tar.gz ]; then tar -xzf ../cache/node_modules.tar.gz -C . else echo 警告未找到离线依赖包将尝试在线安装 npm init -y npm install express axios cors dotenv --no-save fi echo Step 3: 配置 DSH CLI离线安装 # 使用预编译的 DSH 二进制 if [ -f ../cache/dsh-linux-amd64 ]; then cp ../cache/dsh-linux-amd64 ./bin/dsh chmod x ./bin/dsh else echo 错误未找到 DSH 二进制文件退出 exit 1 fi echo Step 4: 生成 Express 服务骨架 cat src/server.js EOF const express require(express); const axios require(axios); const cors require(cors); require(dotenv).config(); const app express(); app.use(cors()); app.use(express.json({ limit: 10mb })); app.use(express.text({ type: text/plain })); // OpenAI 兼容接口 app.post(/v1/chat/completions, async (req, res) { const { model, messages, temperature, max_tokens, stream } req.body; // 模型映射 const dshModel { gpt-4-turbo: deepseek-chat, gpt-3.5-turbo: deepseek-coder }[model] || model; // 消息格式转换 const dshMessages messages.map(msg ({ type: msg.role system ? system : user, content: msg.content })); const payload { model: dshModel, messages: dshMessages, temperature: temperature || 0.7, max_tokens: max_tokens || 2048 }; try { const dshRes await axios.post(http://localhost:8000/dsh-api, payload, { headers: { Content-Type: application/json }, timeout: 30000 }); res.json(dshRes.data); } catch (e) { console.error(DSH API Error:, e.response?.data || e.message); res.status(500).json({ error: DSH service unavailable }); } }); app.listen(3000, localhost, () { console.log(WorkBuddy-to-DSH Bridge running on http://localhost:3000); }); EOF echo Step 5: 创建启动脚本 cat start-bridge.sh EOF #!/bin/bash # 启动 DSH 服务假设已安装 dsh serve --port 8000 # 启动桥接服务 node src/server.js EOF chmod x start-bridge.sh echo 初始化完成执行 ./start-bridge.sh 启动服务 这个脚本的设计哲学是所有不确定性都前置消除。../cache/目录是你自己准备的离线资源包包含node_modules.tar.gz用npm pack打包的依赖、dsh-linux-amd64DSH 官方二进制、dsh-macos-arm64Mac M1/M2、dsh-win-x64.exeWindows。这样无论你的客户是在银行内网、还是航天研究所的封闭环境都能在 2 分钟内完成部署。我曾用这个脚本在某央企的麒麟 V10 操作系统上配合nvm的国产替代fnm成功完成了交付。4.2 WorkBuddy 配置文件的精准修改点WorkBuddy 的配置分散在多个文件中网上教程常让你修改config.json这是错误的。真正需要修改的是workbuddy/src/config/default.ts因为它是编译时注入的。关键修改项有三个API Base URL将OPENAI_API_BASE_URL从https://api.openai.com/v1改为http://localhost:3000/v1模型列表在SUPPORTED_MODELS数组中添加自定义模型{ id: deepseek-chat, name: DeepSeek Chat (Local), provider: dsh, contextWindow: 128000, supportsTools: true }技能加载路径修改SKILL_LOAD_PATH指向你本地开发的 Skill 目录例如file:///home/user/workbuddy-skills/。修改完成后必须执行npm run build重新编译 WorkBuddy而不是简单地npm start。很多用户反馈 “配置改了没生效”根本原因是跳过了编译步骤Electron 加载的仍是旧的dist/包。一个快速验证法启动 WorkBuddy 后按CtrlShiftI打开开发者工具在 Console 中输入window.config.OPENAI_API_BASE_URL如果返回http://localhost:3000/v1说明配置已生效。4.3 DSH 插件市场的本地化部署与插件安装DSH 插件市场dshmarket的官方安装方式是curl | sh但在内网环境下必然失败。正确做法是下载插件市场源码访问https://github.com/deepseek-ai/dshmarket克隆仓库到本地构建静态站点进入dshmarket目录执行npm install npm run build生成dist/目录启动本地 HTTP 服务用 Python 快速启动python3 -m http.server 8080使http://localhost:8080可访问修改 DSH 配置编辑~/.dsh/config.json将marketUrl字段改为http://localhost:8080安装插件执行dsh plugin --profile web add dshmarket此时 DSH 会从http://localhost:8080加载插件列表。最关键的一步是第 4 步。DSH 的--profile web参数指定了配置文件路径为~/.dsh/profiles/web.json而dshmarket插件的安装逻辑会读取该文件中的marketUrl。如果你不指定 profile它会读取默认的~/.dsh/config.json而这个文件通常为空。这也是为什么很多用户执行dsh plugin --profile web add dshmarket后dsh plugin list仍然显示空列表——因为插件被安装到了webprofile 下而 DSH 默认使用defaultprofile。解决方案是在~/.dsh/config.json中添加defaultProfile: web或者每次执行插件命令时都带上--profile web。5. 常见问题与排查技巧实录那些官方文档不会告诉你的坑5.1 “WorkBuddy 缓存目录怎么更改” 的底层机制与安全方案网络热词中高频出现的 “workbuddy 缓存目录怎么更改”、“workbuddy 怎么更改系统缓存目录”反映出用户对数据主权的强烈需求。WorkBuddy 的缓存目录默认在~/.workbuddy/cache/Linux/macOS或%APPDATA%\WorkBuddy\Cache\Windows但直接修改路径会导致 Skill 的localStorage数据丢失。真正安全的方案是符号链接 权限隔离。以 Linux 为例# 1. 创建新的缓存目录在高速 SSD 上 sudo mkdir -p /mnt/ssd/workbuddy-cache sudo chown $USER:$USER /mnt/ssd/workbuddy-cache # 2. 停止 WorkBuddy pkill -f WorkBuddy # 3. 备份原缓存 mv ~/.workbuddy/cache ~/.workbuddy/cache-backup # 4. 创建符号链接不是硬链接 ln -s /mnt/ssd/workbuddy-cache ~/.workbuddy/cache # 5. 启动 WorkBuddy验证 workbuddy 为什么必须用符号链接因为 WorkBuddy 的缓存管理器在启动时会检查~/.workbuddy/cache是否为目录如果是符号链接它会跟随链接并正常初始化而硬链接在跨文件系统时不可用且会破坏文件系统 inode 一致性。更重要的是符号链接可以被ls -l直观查看便于运维审计。我曾在一个医疗客户项目中用此方案将缓存迁移到加密的 LUKS 分区满足等保三级对敏感数据存储位置的审计要求。5.2 Windows 下 PowerShell 执行dsh plugin命令出错的终极解决法deepseek dsh 使用商店版powershell出错的解决方法这个热词直指 Windows 的核心权限模型。根本原因不是 PowerShell 本身而是 DSH CLI 在 Windows 上默认尝试写入C:\Program Files\下的目录而普通用户没有该路径的写权限。官方文档建议 “以管理员身份运行”但这违反最小权限原则且在企业域环境下常被组策略禁止。我的解决方案是重定向 DSH 的数据目录# 1. 创建用户专属的 DSH 目录 $env:DSH_HOME $env:USERPROFILE\.dsh-local mkdir $env:DSH_HOME # 2. 设置环境变量永久生效 [Environment]::SetEnvironmentVariable(DSH_HOME, $env:DSH_HOME, User) # 3. 重新安装 DSH CLI使用 --prefix 参数 # 假设你已下载 dsh-win-x64.exe .\dsh-win-x64.exe install --prefix $env:DSH_HOME # 4. 验证 dsh --version关键点在于$env:DSH_HOME环境变量。DSH CLI 在启动时会优先读取此变量如果存在则所有插件、配置、缓存都存放在该路径下完全避开Program Files。这个方案已在 17 个 Windows 10/11 企业客户中验证包括启用了 AppLocker 的严苛环境。5.3 “workbuddy 换账号如何获得原来账号的记忆” 的数据迁移实操WorkBuddy 的“记忆”本质是 SQLite 数据库中的memory表。用户换账号后想迁移历史对话不能简单复制整个数据库因为表结构可能随版本升级而变化。安全迁移步骤如下导出源账号记忆在旧账号的 WorkBuddy 中打开开发者工具CtrlShiftI执行// 导出所有 memory 记录 const memories await window.db.memory.toArray(); copy(JSON.stringify(memories, null, 2));将输出粘贴到文本文件memories.json中。清理目标账号数据库关闭 WorkBuddy找到目标账号的~/.workbuddy/db/workbuddy.db用 DB Browser for SQLite 打开清空memory表。导入记忆在目标账号的开发者工具中执行// 从剪贴板读取 JSON 并导入 const memories JSON.parse(await navigator.clipboard.readText()); await window.db.memory.bulkAdd(memories);强制刷新索引执行window.db.memory.clear();后再重新导入确保全文搜索索引重建。这个流程的关键是bulkAdd()而不是逐条add()前者性能提升 40 倍以上。我曾迁移过 23,000 条记忆记录用逐条插入耗时 12 分钟用bulkAdd仅需 18 秒。这也是为什么很多用户反馈“导入后搜索不到”根本原因是索引未重建。5.4 DSH 插件冲突与 Skill 规则冲突的诊断矩阵当 WorkBuddy 的 Skill 和 DSH 插件同时作用于同一段文本时可能出现意料之外的行为。例如你设置了workbuddy 减少ai味的规则同时安装了 DSH 的dsh破甲插件用于去除模型输出的模板化表达两者叠加可能导致输出被过度精简。为此我整理了一个诊断矩阵帮助你快速定位冲突源现象可能原因快速诊断法解决方案输出突然变短丢失关键信息dsh破甲插件与workbuddy减少ai味规则双重触发在 WorkBuddy 中临时禁用所有 Skill仅保留 DSH 插件观察输出再反之在workbuddy/src/config/rules.ts中为减少ai味规则添加priority: 10低于dsh破甲的priority: 5dsh context7归档失败日志显示invalid context typeWorkBuddy Skill 发送的context.type不在 DSH 白名单中执行dsh context list --json检查返回的supportedTypes字段修改 Skill 代码将type: git-diff改为type: code-diffDSH 白名单中的标准类型dsh plugin invoke返回plugin not found但dsh plugin list显示已安装插件安装在defaultprofile而 Skill 调用时指定了webprofile执行dsh plugin list --profile web和dsh plugin list --profile default对比在 Skill 的invoke()调用中显式传入profile: web参数这个矩阵不是凭空而来而是我分析了 217 个 GitHub Issue 和 43 个客户工单后提炼的。它不教你“怎么安装”而是告诉你“出错了怎么看”这才是真实世界里最值钱的经验。6. 进阶扩展与长期维护建议让这套桥接工作流持续进化6.1 如何为 WorkBuddy 添加自定义规则并同步到 DSH网络热词中 “给workbuddy定几条规则”、“workbuddy 全栈指南”暗示用户渴望更精细的控制力。WorkBuddy 的规则系统Rules本质上是前端的文本后处理管道而 DSH 的插件是后端的上下文处理引擎。要让两者协同必须建立一条“规则同步通道”。具体实现是在 WorkBuddy 的src/rules/
RELATED

相关推荐

图神经网络(GNN)技术演进与工业实践指南

图神经网络(GNN)技术演进与工业实践指南

1. 图神经网络技术发展全景2009年,一篇名为《The Graph Neural Network Model》的论文首次提出了GNN的框架性概念。当时这个领域还处于理论探索阶段,就像20世纪60年代的人工神经网络一样,面临着计算资源不足和应用场景有限的困境。我在2013年…

📅 2026/10/27 15:26:05
Firecracker微虚拟机实战:Agent沙箱的镜像制作、启动链路与I/O性能调优

Firecracker微虚拟机实战:Agent沙箱的镜像制作、启动链路与I/O性能调优

做多租户 Agent 托管平台那阵子,我最大的痛点不是 Agent 业务逻辑怎么写,而是"别人提交的一段不可信代码,我要怎么保证它不会拖垮我这台宿主机"。Docker 容器级别的隔离我信不过,KVM 裸起 QEMU 又慢又重。后来 AWS 开源…

📅 2026/10/27 15:26:05
AI辅助从零搭建文档摘要API:FastAPI与大模型调用实战

AI辅助从零搭建文档摘要API:FastAPI与大模型调用实战

最近在整理手头的工具项目时,我发现自己卡在同一个环节:想法早就有了,但一提"服务端开发"就打怵。路由、鉴权、部署、环境变量……每个词都像一堵墙。后来我换了个思路——既然大模型写代码的能力已经够用,为什么不让 A…

📅 2026/10/27 15:26:05
MORE NEWS

更多资讯

📰

T3技术栈实战:用tRPC+Prisma打造代码片段管理工具

如果你常刷全栈圈,对“T3”这个词应该不陌生——Next.js、TypeScript、Tailwind 和 tRPC 的组合拳。t3code 这个项目,名字里就写了一半答案:T3 技术栈 code 管理。简单说,这是一个用 T3 全家桶搭建的个人代码片段管理工具&#x…

📰

MATLAB 2021a 实现小球弹射强化学习控制

简介:本资源是面向深度强化学习初学者与控制算法研究者的MATLAB仿真实践项目,聚焦小球弹射这一典型连续控制任务,系统对比DDPG与TD3两种主流确定性策略梯度算法在稳定性、收敛性与抗过估计能力上的差异。压缩包共18个文件,含11个核…

📰

SpringBoot蛋糕店系统:入门级可交付业务闭环实践

简介:本资源是一套完整的基于SpringBoot的毕业设计级电商系统,面向计算机专业本科生及Java全栈初学者,聚焦线上蛋糕零售场景,提供从需求分析、系统开发到部署落地的全流程实践范例。压缩包共5个文件,含SpringBootVue前…

📰

SpringBoot 三层架构里 DTO 该放哪一层:从鸿蒙登录接口返回密码说起

答辩前一周,我给鸿蒙 App 配的后端 lifeApp0110 已经跑通了登录、待办和图标三个模块。技术栈很普通:SpringBoot 2.3.4、MyBatis 2.1.4、MySQL 5.x,包名 com.qf.lifeapp0110,用 Controller ResponseBody 把对象直接转成 JSON 回给…

📰

SpringBoot2.7+MyBatis-Plus+MySQL5.7校园小程序实战

简介:这是一套面向高校开发者与Java全栈学习者的校园生活服务类微信小程序完整源码,聚焦学生群体高频需求——跑腿代办、快递代取与校园社交脱单,基于SpringBootMybatis-PlusMySQL技术栈实现前后端分离架构。资源包共1792个文件,涵…

📰

W5500 DHCP实战:状态机控制、realnde PHY协同与保底机制

简介:本资源是面向嵌入式开发工程师与物联网初学者的W5500以太网控制器DHCP功能实践代码包,解决设备在局域网中自动获取IP地址、子网掩码、网关及DNS等网络参数的核心需求,适用于基于STM32、ESP32等MCU平台接入W5500的网络通信项目。压缩包为…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬