ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

DeepSeek Harness 跑 preset 会话:Key 用 TaoToken,插件树照常长

DeepSeek Harness 跑 preset 会话:Key 用 TaoToken,插件树照常长 你按官方教程把 standard preset 拷到~/.dsh/.agent-presets/my-agent/编辑好agent.cordis.yml后会发现还差一个能用的模型 Key。DeepSeek Harness 的 preset 会话要真正跑起来Key 这关躲不掉。这篇文章用 TaoToken 填这个空先去 TaoToken 创建 API Key再把agent.cordis.yml里模型适配器的 Base URL 指到https://taotoken.net/api重启 dsh 新建会话验证插件树照常长。你会看到 preset 里的插件组装完全由 dsh 自己完成TaoToken 只负责提供模型通道的 Key 和 Base URL。1. 坐标对齐preset 是 dsh 里组装 agent 的菜单项1.1 你认识的 Claude Code / Codex 机制在 dsh 里的对应物如果你用过 Claude Code 或 Codex理解 hooks、MCP、subagents、权限白名单这些概念那么 dsh 的 preset 并不难懂。它就是把下面这些机制打包成一个菜单项的东西。你在 Claude Code / Codex 里认识的dsh 里的对应物关键差异subagentssubagent 工具 可换 provider后端可以换成进程内 spawn、fork、codex、claude-codehooks固定钩子点事件监听tools/pre-execute 等整条请求流水线都开放成事件不限于几个钩子permissions / allowlistsandbox approval 插件三档沙箱模式加审批流这两样本身也是插件output styles / personassystem-prompt 段落插件人设只是众多提示词段落里的一个settings.jsoncordis.patch.yml settings.yamlsettings 只能调开关patch 可以覆盖任何插件行的 config主循环agent loopdsh-agent-loop 插件Claude Code 的主循环碰不到dsh 的主循环可以被替换有了这张对照表preset 就不神秘了你选哪个 preset等于选了哪组工具、哪段人设、哪套权限、哪个主循环。1.2 preset 的本质一组插件行的快照预设preset不是一个独立程序也不是一段脚本。它是agent.cordis.yml里一组插件行的快照。每个插件行指定一个插件 id、它的 config、是否被 disabled、插到整棵树的哪个位置。dsh 启动时读取这些行像种树一样把插件逐个挂载到运行时上下文ctx上插件之间通过注册机制互相发现。所以「一切皆插件」在 preset 这里的表现就是你拷贝一份 standard删几行、改几行、加几行就得到一个新的 agent。工具集、人设、提示词段落都是菜单项跟写配置文件没什么两样。1.3 preset 真正跑起来之前还差一个能用的模型 Key不过 preset 里有一类插件比较特殊模型适配器。它负责把 dsh 的请求转成某个模型 API 的调用。这个插件必须填对三样东西——Base URL、API Key、模型 ID否则整个会话起不来。这就是为什么你会卡在agent.cordis.yml面前插件行可以照抄但模型适配器的 Key 是你自己的谁也没法替你生成。TaoToken 在这里的角色就是提供这三个值里最关键的两个Key 和 Base URL。模型 ID 则在模型广场里查。2. 三个证据为什么说插件树由配置长出来2.1 证据一整台机器的家当就是一份 YAML打开 dsh 安装目录下的packages/bundle/base/cordis.patch.yml你会看到模型适配器、全部工具、持久化、沙箱、审批、凭据全是插件行。你复制出来的my-agent/agent.cordis.yml也是同一套格式只是范围更小。运行中的 dsh 不是「程序加配置」而是「一棵由配置长出来的插件树」。任何一行都可以按 id 被你的 patch 覆盖。这份 YAML 就是整台机器的家当。2.2 证据二主循环是插件dsh 的主循环不是编死在源码里的。packages/core/agent-loop/src/agent.ts里的ReactLoopAgent只是默认实现挂载它的是一行配置。别的插件可以监听它发出的每个事件也可以整个替换它。对应到 preset如果你把预设里的 agent-loop 插件换成另一份实现这个 agent 的思考节奏、工具调用方式、上下文压缩策略会完全改变。这是 Claude Code 里 fork 源码才能干的事。2.3 证据三官方工具不特殊dsh 的官方工具比如 todo 工具完整实现只有一个注册调用ctx.tools.register(defineTool({...}))。你写的第一个插件和它是同一个函数、同一张表。这也解释了为什么「插件树照常长」能成为验证标准——只要注册 API 没变你的 preset 里加多少插件都能长在同一棵树上。官方工具没有更高权限。3. 上手复制 standard preset把模型通道换成 TaoToken3.1 先到 TaoToken 控制台创建 API Key打开 TaoToken 官网落地页注册并创建一个 API Key。复制下来后面统一用YOUR_API_KEY占位。注意区分两个地址落地页只用于注册、创建 Key、看用量、查模型广场真正填进agent.cordis.yml的 Base URL 是https://taotoken.net/api末尾不要加/v1也不要带任何 UTM 参数。官网地址和接口地址是两回事。3.2 把 standard preset 拷到~/.dsh/.agent-presets/my-agent/找到 dsh 源码里的apps/cli/config/agent-presets/standard/目录把standard复制成自己的预设mkdir -p ~/.dsh/.agent-presets/my-agent cp -r apps/cli/config/agent-presets/standard/* ~/.dsh/.agent-presets/my-agent/目录路径以你的 dsh 安装位置为准。复制完成后~/.dsh/.agent-presets/my-agent/里应该有一份agent.cordis.yml。3.3agent.cordis.yml里改 Base URL、Key、模型 ID用文本编辑器打开~/.dsh/.agent-presets/my-agent/agent.cordis.yml找到模型适配器段落。字段名以你本机这份文件为准结构类似下面这样# 模型适配器段落字段名以你本机文件为准 model: adapter: baseURL: https://taotoken.net/api apiKey: YOUR_API_KEY model: YOUR_MODEL_IDYOUR_MODEL_ID不要照抄网上旧教程里的版本号去 TaoToken 模型广场 查当前真实存在的模型 ID。模型广场显示什么就填什么。3.4 删改 persona 与工具行模型适配器配好后回到agent.cordis.yml的插件列表按原文的路子删改# 删掉或注释掉 tool-pwsh 行如果不需要 PowerShell 工具 # - id: tool-pwsh # 改 persona 文本把自己想要的人设写进去 - id: system-prompt config: persona: 你是一个只关心代码审查的助手回答要短问题要狠。 # 加一行 tool-web如果需要网页搜索能力 - insert: - id: tool-web这里有一条必须记住的约束如果某一行要「发布服务」而不是只注册工具它必须放进带isolate realm的 group。否则挂载时会被拒绝因为两个 preset 发布同名服务会撞车。工具行不需要这个处理。3.5 重启 dsh新建会话并选择 my-agent保存agent.cordis.yml后完全退出 dsh 进程再重新启动。新建会话时菜单里会出现 my-agent。选中它如果模型应答正常说明模型通道和插件树都通了。在 my-agent 里工具集、人设、提示词段落都来自你刚改的这份 YAML和官方 standard preset 唯一的区别是 Key 通道换成了 TaoToken。4. 验证模型应答正常插件树照常长4.1 一句指令确认模型通道已通在 my-agent 会话里发一句请用一句话说明你当前可以调用哪些工具。模型正常回答说明 TaoToken 的 Key 有效dsh 到模型 API 的链路是通的。如果这一步报 401先回 TaoToken 检查 Key 是否创建完整、有没有复制漏字符。4.2 检查工具注册tool-* 插件还在不在接着让模型列出工具或者用 dsh 自带的工具列表命令重点看tool-fs、tool-web、tool-todo这类tool-*插件是否照常出现。这就是「插件树照常长」的直接证据。如果某个工具少了多半是你改agent.cordis.yml时整行误删而不是 Key 的问题。把删掉的那行恢复再重启一次。4.3dsh --dump-config与 TaoToken 控制台的双重确认在 shell 里运行dsh --dump-config打印出来的最终配置树里my-agent 的插件应该完整挂载。然后打开 TaoToken 控制台看刚才的会话请求是否记上了用量。两条都通过就说明 preset 会话用 TaoToken 跑通了。5. 排障preset 挂载与 Key 通道的四个典型问题5.1 挂载时报服务冲突发布的插件行要 isolate realm重启 dsh 时如果提示 service conflict说明agent.cordis.yml里某个插件行要「发布服务」但它没有被放进带isolate realm的 group。把那个插件行挪进一个 group并加上 isolate realm 声明即可。工具行不需要这条只有发布服务的插件行才需要。5.2 401 UnauthorizedKey 不对或没在官网创建检查apiKey是不是从 TaoToken 创建的有没有复制完整。注意官网落地页和接口 Base URL 不是同一个地址Key 本身是独立的和 Base URL 混填不会报这个错但会报填错字段的错误。5.3 模型 ID 不存在以 TaoToken 模型广场为准不要在配置里写网上旧教程传的版本号那些可能已经下架。去模型广场查当前真实存在的模型 ID填进model字段。填错通常会报 model not found 或类似的模型不存在错误而不是 401。5.4 改了配置但没生效重启 dsh 并新建会话dsh 的预设配置只影响新会话和重启后的进程。已有会话会保持创建时的组合这是刻意设计——会话日志里记录着它用的哪个 preset。所以每次改完agent.cordis.yml要完全退出 dsh 重启然后新建会话不要复用旧会话测试。6. 继续深入想继续深挖可以看这几份文档路径以你的 dsh 安装目录为准docs/architecture.md末尾有「新行为往哪挂」的扩展点总表想做的事对照机制一查便知。docs/cookbook/extension-cookbook.md工具、UI、协议驱动等插件形态的代码模式。docs/cookbook/adding-a-tool.md第一个工具插件的完整教程。docs/tool-catalog.md所有模型可见工具的 schema 目录用来查「现在模型手上有什么」。最后把整篇文章压成一句在 dsh 里你要么在改一个插件的配置要么在挂一个新的插件要么在让 AI 替你挂一个而让这棵插件树真正长出模型能力的第一步是去 TaoToken 拿一个能用进agent.cordis.yml的 API Key。注册、建 Key、填进配置再到控制台看第一次调用记上账这条链路走通之后preset 组装就只剩插件行的增删改查了。
返回列表