新闻详情

新闻详情

首页 / 资讯中心 / 详情

开源项目第194期:deepseek-harness — DeepSeek 出品的 AI Agent 开发框架,万物皆插件,用 TaoToken 统一 Key 打通 Cordis 插件链路

发布时间:2026/9/26 23:24:06来源:尧图网络
开源项目第194期:deepseek-harness — DeepSeek 出品的 AI Agent 开发框架,万物皆插件,用 TaoToken 统一 Key 打通 Cordis 插件链路
1. 为什么 deepseek-harness 值得你花一个下午跑通deepseek-harness 是 DeepSeek 出品的 AI Agent 开发框架核心卖点是「万物皆插件」——它把文件编辑、Shell 执行、向量检索、规划器、子 Agent 调度这些能力全部拆成独立插件内核只负责注册、依赖解析和生命周期管理。适合谁适合已经了解 tool calling 基本概念、写过 TypeScript/Node.js、想快速搭一个可调试 Agent 环境的开发者。它和 EleutherAI 的 lm-evaluation-harness 没有任何关系这里的 harness 指的是「约束层」给 Agent 套上结构化的边界让它的能力可以被精确引导。我试过把它跑在本地最直观的感受是换模型后端不用动其他代码关掉子 Agent 功能只需要卸载一个插件。底层是 Cordis 框架一个专为可插拔应用设计的 TypeScript 框架内核本身不含业务逻辑。它提供四种运行模式——Standard 完整工具链、PTC 程序化工具组合、Minimal 只留 bash 和编辑器、Creative 运行时插件试验。其中 PTC 模式最特别模型不是一步步调工具而是直接写一段 TypeScript 程序用 if/else、for、Promise.all 把多个工具调用组合起来一次执行完。这篇不聊概念直接给你可复制的 config.toml 和 settings.json 骨架用 TaoToken 统一 Key 打通 Cordis 插件调用链从启动、插件加载到请求验证在本地完成一次端到端跑通。2. 前置准备TaoToken 统一 Key 与 Node.js 环境在动 deepseek-harness 之前先把两件事搞定Node.js 运行时和模型 API 通道。deepseek-harness 是 TypeScript 为主、Node.js 运行的项目建议 Node 18 以上pnpm 作为包管理器Cordis 生态的插件大多用 pnpm workspace 组织。模型通道这块我用 TaoToken 做统一入口。原因很直接deepseek-harness 的模型后端是插件化的dsh/plugin-model-openai这类插件走的是 OpenAI 兼容接口而 TaoToken 提供的就是 OpenAI 兼容的 API 通道一个 Key 可以切换不同模型不用为每个后端单独配环境变量。对插件链路调试来说统一 Key 意味着你换模型时只需要改一个 base_url 和 model 字段插件本身不用动。先去官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册然后在控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Key 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。API 基础地址是 https://taotoken.net/api 注意这个地址不带 UTM 参数配置时直接写这个。拿到 Key 之后先验证通道是否通curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -d { model: deepseek-chat, messages: [{role: user, content: ping}], max_tokens: 16 }返回里有choices[0].message.content就说明通道正常。这一步别跳过后面插件加载失败时你能快速判断是通道问题还是插件配置问题。3. 可复制配置config.toml 与 settings.json 骨架deepseek-harness 的配置分两层config.toml管运行模式和插件清单settings.json管模型后端和 API 通道。下面是我实测能跑通的骨架你可以直接复制改。先建项目目录mkdir dsh-demo cd dsh-demo pnpm init pnpm add deepseek-ai/dsh然后创建config.toml# config.toml — deepseek-harness 运行配置 [harness] mode standard # standard | ptc | minimal | creative session_dir ./.dsh/sessions log_format append-only [plugins] # 核心工具插件 enabled [ dsh/plugin-str-replace-editor, dsh/plugin-bash, dsh/plugin-retrieval, dsh/plugin-planning, dsh/plugin-goals, dsh/plugin-subagents, dsh/plugin-workflows, dsh/plugin-web-ui ] # 模型后端插件走 OpenAI 兼容通道 [plugins.model] name dsh/plugin-model-openai base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY default_model deepseek-chat # 社区插件示例按需开启 [plugins.community] github_tools false再创建settings.json{ model: { provider: openai-compatible, baseURL: https://taotoken.net/api, apiKey: ${TAOTOKEN_API_KEY}, model: deepseek-chat, temperature: 0.3, maxTokens: 4096 }, session: { appendOnly: true, trajectory: true, resumeEnabled: true }, plugins: { autoLoad: true, hotReload: false } }两个文件的分工要清楚config.toml决定「加载哪些插件、用什么模式」settings.json决定「模型怎么调、会话怎么记」。api_key_env和${TAOTOKEN_API_KEY}都指向环境变量不要把 Key 硬编码进文件。设置环境变量export TAOTOKEN_API_KEY你的Key如果你用 PTC 模式把config.toml里的mode改成ptc其他不用动。PTC 模式下模型会生成 TypeScript 程序来组合工具调用插件清单保持一致即可。4. 启动、插件加载与请求验证配置就绪后启动 Web UInpx deepseek-ai/dsh web --config ./config.toml --settings ./settings.json正常的话终端会输出Web UI listening on http://localhost:3080。打开浏览器你应该能看到插件列表已经加载。如果某个插件没加载终端会打印plugin load failed: name记下名字去第 5 节排查。CLI 模式验证更直接npx deepseek-ai/dsh 列出当前目录下的 TypeScript 文件并统计每个文件的行数 \ --config ./config.toml \ --settings ./settings.json这条指令会触发plugin-bash和plugin-str-replace-editor的调用链。观察终端输出你应该能看到工具调用的轨迹先执行ls或find再对每个文件执行wc -l最后汇总。这就是 Cordis 插件链路在工作——每个能力是独立插件内核负责把它们串起来。验证模型通道是否真的走了 TaoToken可以看会话日志ls ./.dsh/sessions/ cat ./.dsh/sessions/最新session-id/events.jsonl | head -20日志是 append-only 格式每个事件一行 JSON。找model_request类型的事件里面的base_url字段应该是https://taotoken.net/api。如果这里显示的是别的地址说明settings.json没生效检查文件路径和 JSON 格式。再验证一次 PTC 模式。改config.toml的mode ptc重启然后发一条需要多步操作的指令npx deepseek-ai/dsh 读取 src 下所有 .ts 文件找出没有对应 .test.ts 的文件生成测试模板 \ --config ./config.toml \ --settings ./settings.jsonPTC 模式下模型不会一步步调工具而是生成一段 TypeScript 程序里面用Promise.all并行读取文件、用if判断测试文件是否存在、用循环生成模板。你在日志里会看到ptc_program事件里面是模型生成的完整程序。这是 PTC 和标准工具调用最大的区别控制流在程序里不在模型决策里。5. 本篇常见错排查插件加载失败plugin load failed: dsh/plugin-xxx先确认包是否安装。Cordis 插件是独立 npm 包config.toml里写了名字不代表装了。执行pnpm add dsh/plugin-xxx补装。如果装完还失败检查 Node 版本部分插件要求 Node 20。模型请求 401invalid api key九成是环境变量没传进去。settings.json里写的是${TAOTOKEN_API_KEY}这是变量引用不是字面值。确认echo $TAOTOKEN_API_KEY有输出且启动命令的 shell 和设置变量的 shell 是同一个。如果你在 IDE 终端里设的变量换到系统终端启动可能就丢了。模型请求 404model not foundsettings.json里的model字段要和 TaoToken 支持的模型名一致。先用第 2 节的 curl 命令确认你的 Key 能调哪些模型再把model改成对应的名字。baseURL结尾不要带/v1TaoToken 的地址是https://taotoken.net/api插件内部会拼/v1/chat/completions。PTC 模式报错ptc program execution failedPTC 模式要求模型能生成合法 TypeScript。如果模型能力不够生成的程序可能有语法错误。换一个代码能力更强的模型或者在settings.json里把temperature降到 0.1。另外确认dsh/plugin-bash和dsh/plugin-str-replace-editor都在enabled列表里PTC 程序调用的工具必须已加载。会话日志为空session_dir下没有文件检查config.toml里session_dir的路径是否可写。相对路径是相对于启动命令的工作目录不是配置文件所在目录。建议用绝对路径或者确认你在项目根目录启动。Web UI 打不开端口被占用默认 3080如果被占启动时加--port 3081。或者先lsof -i :3080看谁占着。6. 把 Key 和插件链路固定下来跑通一次之后建议把配置固化config.toml和settings.json提交到项目仓库TAOTOKEN_API_KEY放本地.env或 shell profile不要提交。这样团队里其他人 clone 下来设个环境变量就能复现你的 Agent 环境。如果你主要做长期编码任务或 Agent 开发可以看看 Coding Plan它适合需要持续调用、多轮迭代的场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。单纯验证模型对话效果用模型对话页更快https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有 OpenAI 兼容接口的完整参数说明。deepseek-harness 的插件链路调试核心就三件事插件装没装、Key 通不通、模式对不对。把这三件事用日志固定下来后面换模型、加插件、切模式都是改配置的事不用动代码。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

不改论文数据也能降AI率吗?免费辅助修改工具推荐! 2026/9/27 2:17:31

不改论文数据也能降AI率吗?免费辅助修改工具推荐!

不改论文数据也能降AI率吗?免费辅助修改工具推荐! 结果段AI率高,交给工具后数字看似还在,单位变了,增加被改成减少,或者未达到统计显著被写成显著改善。论文的数据保护不能只数数字有没有丢,应…

阅读更多 →
WordPress更改字体实战:从零搭建避坑指南 2026/9/27 2:17:31

WordPress更改字体实战:从零搭建避坑指南

WordPress更改字体实战:从零搭建避坑指南 找建站公司报价两万,改个字体还要加钱?这钱花得真冤。很多独立站长为了省事,把网站全权外包,结果后期连个视觉细节都改不动,被服务商拿捏得死死的。其实,从零搭建一个可自主维护的WordPress…

阅读更多 →
1-2-3-4 2026/9/27 2:17:25

1-2-3-4

大家好,我是中科大工科在读研二学生。目前课题方向偏向医疗康复工程,日常会接触信号采集、传感器、硬件与嵌入式相关内容。读研期间有基础的 C 语言、单片机使用经验,但嵌入式体系知识零散,缺少完整项目与工程化实战经验。距离毕业…

阅读更多 →
我国网络营销方式避坑指南:3招教你省钱选对建站 2026/9/27 2:17:11

我国网络营销方式避坑指南:3招教你省钱选对建站

我国网络营销方式避坑指南:3招教你省钱选对建站 找建站公司怕被坑高价?别急,先看看这3个最佳实践:1. 明确需求清单 2. 对比技术栈成本 3.…

阅读更多 →
电子创新竞赛PCB样板加工设备选型指南:从需求到实战配置 2026/9/27 2:17:05

电子创新竞赛PCB样板加工设备选型指南:从需求到实战配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
工业控制器分级存储设计:STM32+FPGA+EEPROM/NOR Flash/SD卡协同架构 2026/9/27 2:17:05

工业控制器分级存储设计:STM32+FPGA+EEPROM/NOR Flash/SD卡协同架构

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉