前言¶
在 DeepSeek Harness(dsh)里接 OpenCode 的免费模型,通常要先装社区桥接插件 dsh-opencode-xdbridge,把隔离的 opencode 运行时注册成 provider opencode-xdbridge。模型按 token 计费为零,但每回合整段对话重发、速率限制和 shim 的 8 MB 请求体上限才是日常瓶颈。下面介绍维护者 SZYTree0312 发布的 dsh-opencode-free(星桥模式):挂在 dsh 上的 agent preset,只做 agent 侧的前缀稳定与载荷控制,不替代桥接插件,也不是独立运行时或 fork。
这是什么¶
dsh-opencode-free 是 @deepseek-ai/dsh-agent-preset 形态的补丁包,主产物为 presets/opencode-free.patch.yml。上游 Harness 基线需 pin 在 0.2.0-rc.2(上游明示会有破坏性变更)。名字「星桥」:「星」指 space-bunny、big-pickle 等免费模型名单,「桥」指 xdbridge。
与百炼成金类 preset 形态相同,目标函数不同:那边偏省 token 费用;这里硬约束是免费额度速率、每轮延迟(四层转发 + 每轮重发)和 8 MB 请求体失败上限,收益落在额度与延迟上,不是钱。
路线原理(与 preset 为何这样调)¶
桥接实现里,每回合新建上游会话(backend.js 的 POST /session),服务端不保留状态,整段对话每轮重发。因此:
- 载荷随历史线性增长,请求体大小由会话长度决定。
- 前缀匹配是主要的「省算力」途径;bridge 会把
cached_tokens回传为prompt_tokens_details.cached_tokens。 dsh-opencode-xdbridge在adapter.js里对免费模型使用零价计费,且仅在运行时上报的每一个计费维度都为 0 时才列出模型——「省 token 钱」不是本 preset 的设计目标。
工具目录必须全程固定:protocol.js 组装 system 时会拼接 Available external tools: …,工具集合或顺序一变,system 就变,缓存前缀失效。因此 preset 要求 tool-plugin-manager 保持 disabled,并避免让 tool_choice / parallel_tool_calls 逐轮翻转的模式。细节见仓库内 docs/how-the-bridge-shapes-the-request.md。
核心策略(相对上游与百炼方向的差异)¶
| 旋钮 | 星桥取向 | 原因摘要 |
|---|---|---|
agent-instructions.maxBytes |
32768(较上游减半) | 每字节都在每轮重发的数据块里 |
tool-result-pruner |
4096/2048/512 | 配合 8 MB 请求体硬闸 |
compaction.headroomTokens |
32768 | 免费模型窗口常 128K,过大余量会把压缩触发点压得过低 |
summarizationModel / modelPolicies |
留空 | 免费名单轮换,钉死 id 易在撤模日导致压缩失败 |
tool-fs 读上限 |
800 行 / 1000 字符 / 24 KiB | 控制单次读入对载荷的冲击 |
共同纪律:工具目录全程固定、历史只追加、动态状态推尾部。
安装与启用¶
本 preset 不含 xdbridge,也不会替你安装。两部分作者与职责分开:XDTrees 的 dsh-opencode-xdbridge 管 provider、模型目录、隔离运行时与 8 MB 上限;本仓库只管 agent 侧工具面、提示词、压缩与载荷。preset YAML 中不引用 opencode-xdbridge 插件 id,未装桥接时仍可装本 preset,只是选不到对应模型,不会拖垮 profile。
安装顺序如下(命令来自仓库 README):
- 先装桥接插件:
dsh plugin --profile web add github:XDTrees/dsh-opencode-xdbridge
- 再装本 preset:
dsh plugin --profile web add github:SZYTree0312/dsh-opencode-free
- 在会话预设选择器里选择 星桥模式。
卸载 preset:
dsh plugin --profile web remove dsh-opencode-free
README 注明:桥接插件 peer 范围为 dsh >=0.1.1-rc.1 <0.2.0,而本 preset 按 0.2.0-rc.2 的 preset 机制编写;本机两者并存可用,但升级 dsh 后需留意 peer 与机制是否仍匹配。安装前建议通读 README 安装章节,或交给 Agent 按文档逐步执行。
典型用法与撞限流时的调整¶
典型用法:在已安装 xdbridge 的 profile 上启用星桥模式,用 provider opencode-xdbridge 下的免费模型跑会话;调参思路(载荷小、前缀稳、压缩尽量不触发)对任何「按上下文线性付费且每轮重发整段对话」的路线也有参考价值,换 provider 时需重看数值。
命中速率限制时,README 建议按下列顺序收紧(从较不伤能力到较伤能力):
- 关网页抓取:
tool-web的fetch: false(搜索可保留)。 - 关闭子代理与 workflow:
tool-subagent/tool-subagent-fork/workflow-ptc/tool-workflow置disabled: true。 - 再压
tool-fs读上限(例如 500 行 / 800 字符 / 16 KiB)。 - 降低推理档位:
agent-default-model.reasoningEffort从max往下调。
readLimit 收得太狠可能逼模型分块重读、反而多回合;建议先跑几次真实会话观察再改。
适用场景与注意¶
适合谁: 已在 dsh 上走 OpenCode 免费模型(经 xdbridge)、需要在 agent 层系统控制载荷与前缀、并愿意与桥接插件分版本维护的开发者。
状态(截至仓库 README): 已对桥的请求装配、缓存回传、每回合新建会话、8 MB 上限做源码级验证;preset 第一版已发布;实机验证(命中率、载荷曲线、8 MB 在多长会话后构成威胁)与各免费模型窗口/输出上限的核对仍待补充。preset 结论随 dsh-opencode-xdbridge 实现变化而需复查——若 protocol.js system 组装、会话策略、NO_COST/窗口上报或 shim 体上限变更,应回到 docs/how-the-bridge-shapes-the-request.md 对照调参。
安全与许可: 插件以当前 dsh 进程权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-opencode-free 把 OpenCode 免费路线上的 agent 行为钉在「前缀稳定、载荷可控、少触发额外请求」上,与 XDTrees 的 xdbridge 分工明确。需要细节、安装说明与桥接请求证据时,以仓库 README 与 docs/how-the-bridge-shapes-the-request.md 为准。
- 目录页:https://www.skillhub.cn/plugins/SZYTree0312/dsh-opencode-free
- GitHub:https://github.com/SZYTree0312/dsh-opencode-free