ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

DeepSeek Harness 开源实测:用 TaoToken 统一 Key 把 AI 智能体插件跑起来

DeepSeek Harness 开源实测:用 TaoToken 统一 Key 把 AI 智能体插件跑起来 1. 为什么要在本地把 DeepSeek Harness 跑起来DeepSeek Harness社区简称 dsh是 DeepSeek 开源的一套智能体运行框架核心公式很直白AGENT MODEL HARNESS。模型负责思考Harness 负责让模型真正动手——读文件、跑命令、调工具、维护任务循环。它最大的特点是「一切皆插件」模型接入是插件、工具是插件、会话存储是插件、连 Web UI 本身也是插件内核 Cordis 只负责插件的加载、卸载和依赖管理。这套东西适合谁如果你正在做 AI 智能体插件开发、想验证「换模型不改业务代码」这件事、或者单纯想在自己机器上跑一个可拆可换的 Agent 底座dsh 值得试。它和 Claude Code 那类成品的区别在于Claude Code 是装好的车你只能开dsh 是底盘加零件库你可以自己组装。这篇不聊概念直接交付可复制的东西一份 config.toml、一份 settings.json 骨架、插件注册片段以及用 TaoToken 统一 Key 把模型通道接进去、启动后验证插件加载与调用成功的完整动作。前置要求只有两个Node.js v22.19 以上node --version确认v18/v20 会直接报错以及一个能用的 API Key。2. TaoToken 前置把模型通道统一成一把 Keydsh 的模型接入本身就是插件默认带 DeepSeek 卡片但你可以换成任何 OpenAI 兼容端点。这里我用 TaoToken 做统一通道原因是它把多家模型的调用收敛成一个 base_url 加一把 Key插件配置里只改两行不用为每个模型维护一套凭证。先拿 Key。打开 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 登录后在控制台创建 API Key复制出来形如sk-...的字符串。这个 Key 只写进本地配置别提交进 git。TaoToken 的 API 根地址是https://taotoken.net/api注意这个地址后面不加任何查询参数。dsh 的模型插件走 OpenAI 兼容协议所以配置里填的是https://taotoken.net/api/v1这种带版本段的形式具体以你所用插件的字段说明为准。如果你还想在接入前先确认某个模型能不能正常对话可以打开模型对话页 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 直接发一条消息验证省得在 dsh 里排查半天发现是 Key 或模型名的问题。长期跑编码类 Agent、调用量比较大的话可以看下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 按套餐走比按量更可控。注意Key 的权限和额度在控制台管理dsh 侧只负责引用。两边对不上时先回控制台确认 Key 状态再查 dsh 配置。3. 可复制配置config.toml 与 settings.json 骨架dsh 的配置分两层config.toml管内核与插件清单settings.json管运行时参数和凭证引用。下面这份是我实测能跑通的骨架你按自己的路径和 Key 替换即可。先建工作目录并初始化mkdir -p ~/dsh-demo cd ~/dsh-demo git init node --version # 必须 v22.19config.toml放在项目根目录负责声明加载哪些插件# ~/dsh-demo/config.toml [core] workspace /Users/you/dsh-demo mode standard # standard / ptc / minimal / creative log_level info [plugins] # 模型接入插件指向 TaoToken 统一通道 model-openai-compatible { enabled true, source builtin } # 工具插件 tool-shell { enabled true } tool-editor { enabled true } # 会话与轨迹 session-store { enabled true, path ./.dsh/sessions } trajectory { enabled true, append_only true } # Web UI web-ui { enabled true, host 127.0.0.1, port 3080 } [plugins.custom] # 本地自研插件路径指向插件目录 hello-agent { enabled true, path ./plugins/hello-agent }settings.json放在.dsh/目录下管凭证和模型参数{ models: { default: taotoken-deepseek, providers: { taotoken-deepseek: { type: openai-compatible, base_url: https://taotoken.net/api/v1, api_key_env: TAOTOKEN_API_KEY, model: deepseek-chat, temperature: 0.3, max_tokens: 4096 } } }, permissions: { shell: ask, file_write: ask, network: allow }, trajectory: { capture_cot: true, capture_tool_io: true } }Key 不写死在 json 里用环境变量注入更安全export TAOTOKEN_API_KEYsk-你的Key提示api_key_env字段让 dsh 从环境变量读取避免明文落盘。Windows 下用setx TAOTOKEN_API_KEY sk-...后重开终端。4. 插件注册写一个最小可用的 hello-agentdsh 的插件约定是导出一个注册函数内核调用它时把上下文注入进来。下面这个插件只做一件事注册一个名为hello的工具Agent 调用它时返回当前工作区路径和时间戳。目录结构mkdir -p ~/dsh-demo/plugins/hello-agent插件入口index.js// plugins/hello-agent/index.js export const name hello-agent; export const version 0.1.0; export function apply(ctx) { ctx.tools.register({ name: hello, description: 返回工作区路径与当前时间用于验证插件加载, parameters: { type: object, properties: { who: { type: string, description: 打招呼的对象 } }, required: [] }, async execute(args) { const who args.who || agent; return { ok: true, message: hello ${who}, workspace: ctx.workspace, ts: new Date().toISOString() }; } }); ctx.logger.info([hello-agent] 插件已注册工具 hello 可用); }插件清单plugin.json声明元信息{ name: hello-agent, version: 0.1.0, entry: index.js, dsh: 0.1.0, capabilities: [tool] }回到config.toml[plugins.custom]里那行hello-agent就是注册入口。dsh 启动时会扫描该路径读取plugin.json再调用apply(ctx)。如果插件有依赖在插件目录里放package.json并npm install内核不会替你装依赖。启动cd ~/dsh-demo npx deepseek-ai/dsh web浏览器打开http://127.0.0.1:3080进入 Settings → Models确认taotoken-deepseek卡片已加载且 base_url 正确。然后点「选择工作区」选中~/dsh-demo——不选工作区输入框是灰的这一步很多人卡住。5. 验证请求确认插件加载与调用成功启动后先看终端日志正常会打印类似[core] loaded 7 plugins [hello-agent] 插件已注册工具 hello 可用 [web-ui] listening on http://127.0.0.1:3080如果没看到hello-agent那行说明插件没被加载先查config.toml路径和plugin.json的entry字段。接着在 Web UI 对话框里发一条指令让 Agent 调用我们注册的工具调用 hello 工具参数 who 传 dsh把返回结果原样贴出来Agent 会走一轮工具调用UI 上会弹出审批因为permissions.shell是 ask工具调用同理。批准后返回结果应该包含{ ok: true, message: hello dsh, workspace: /Users/you/dsh-demo, ts: 2026-08-14T09:12:33.000Z }看到workspace是你选中的目录、ts是当前时间就说明三件事同时成立模型通道通了TaoToken 返回了工具调用意图、插件加载成功hello 工具被识别、工具执行链路完整execute 被真正调用。再验证一次模型通道本身。发一条纯对话用一句话说明 AGENT MODEL HARNESS 的含义如果这条能正常返回说明 TaoToken 的 base_url、Key、模型名三者匹配。返回 401 就是 Key 问题返回 404 多半是 base_url 少了/v1或模型名写错。想更直观地看调用过程打开 Trajectory 视图能看到系统提示词、工具调用与返回、上下文注入的完整事件流。这是 append-only 的出问题可以逐条复盘。6. 本篇常见错排查Node 版本报错SyntaxError或engines相关提示基本都是 Node 低于 v22.19。用nvm install 22 nvm use 22切过去别拿 v18/v20 硬怼。插件加载了但工具不出现先确认plugin.json的entry指向的文件存在且导出apply函数再确认config.toml里[plugins.custom]的 key 和插件name一致。dsh 不会因为插件报错就整体崩它只是跳过所以日志里那行[hello-agent]是判断依据。模型返回 401 / 403Key 没注入或已失效。echo $TAOTOKEN_API_KEY确认环境变量在当前终端可见注意export只对当前会话生效换终端要重新设。模型返回 404base_url 或模型名不对。TaoToken 的根地址是https://taotoken.net/apiOpenAI 兼容插件通常要拼到/v1模型名以控制台实际可用的为准。工作区选不了、输入框灰的没点「选择工作区」。dsh 要求显式指定工作目录这是安全设计不是 bug。工具调用一直弹审批permissions里shell和file_write默认是ask。调试阶段可以临时改成allow但跑第三方插件时建议保持ask插件能碰 shell 和文件系统攻击面比普通工具大。轨迹里看不到 CoTsettings.json的trajectory.capture_cot要设为true且部分模型不返回思维链这是模型侧行为不是 dsh 丢数据。注意dsh 处于开发者预览阶段官方明确会有破坏性变更。升级前看 changelog生产环境慎用。工作区交给 Agent 前先git init方便回滚。7. 接下来怎么走跑通这个最小插件之后你可以把hello-agent换成真实能力接一个检索工具、包一层内部 API、或者写个把多轮工具调用串成 TS 脚本的 PTC 模式插件。dsh 的插件生态约定用dsh-plugin这个 GitHub topic社区里已经有视觉工具、终端 UI、机器人接入等各类实现装插件的方式也很直接——把仓库地址丢给对话框里的 Agent让它自己读 README 装。模型侧如果要从 DeepSeek 换成别的改settings.json里providers的base_url和model两行就行业务插件完全不用动这正是「模型即插件」的价值。需要更多模型通道或想对比调用成本可以从模型对话 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 先试再回控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 管理 Key 和额度。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 字段对不上时以文档为准。
返回列表