Repository navigation
Install:
dsh plugin --profile web add github:scavanger2221/dsh-llm-opencode-go#v0.1.4Then restart the app (dsh web) and set the key in Settings → Models → OpenCode Go.
DeepSeek Harness 0.2.0-rc.2 or later is required: it is the release that ships pi-ai 0.87, whose conversion this route mirrors.
Fixed
- Tool calls were not reaching the model on harness 0.2.0. pi-ai 0.87 moved the prompt/tool fold out of the API implementations and into its
Modelsregistry —Models.streamSimplerunsnormalizeContext, which turnssystemPromptandtoolsinto the leading system message the APIs now read, and no protocol readscontext.systemPromptorcontext.toolsany more.dsh-llm-pi-aistreams through that registry; this route dispatches through the provider it builds itself, so every request went out with the user turn alone. The model answered as a bare chat model: "I don't have access to a bash tool in this environment", or its nativeDSMLtool markup as plain text.lib/adapter.jsnow folds the context with the same publicnormalizeContextthe registry uses, so the tool declaration and the system prompt reach the wire again and a streamedtool_callsreply becomes one tool-call block. - Replayed Anthropic history restored the wrong model identity. The replay envelope now records the requested model in
modeland the served one beside it inresponseModelfor every protocol, mirroringdsh-llm-pi-ai0.2.0 and the pi-ai 0.87 behaviour it follows.
Changed
- The
@earendil-works/pi-aipeer range is now^0.87.1. Harness 0.2.0-rc.2 supplies 0.87.1, which the old^0.85.1range excluded. - The documented harness floor is raised to 0.2.0-rc.2 in both READMEs, and
AGENTS.mdstates the context-normalization rule so the next pi-ai upgrade cannot repeat this.
Verified
- The adapter, cache, usage, host and card suites, run from an installed copy. The adapter suite now pins the wire request (the tool declaration and the system prompt reach it) and the streamed
tool_callsdelta; without the adapter fix it fails on "the tool declaration reaches the wire". - The live endpoint, through this adapter:
deepseek-v4.1-flash(openai-completions) andminimax-m3(anthropic-messages) each return a realbashtool call.