NGdust/dsh-claude-code-local ↗★ 0
dsh-claude-code-local
Local Claude Code provider for DeepSeek Harness: a configurable 'claude-code' LLM route that runs your locally installed `claude` CLI and streams its output into the harness
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:NGdust/dsh-claude-code-local说明文档
阅读完整 README ↗Configuration
Settings live in the llm-claude-code: section of $DSH_HOME/settings.yaml (default ~/.dsh/settings.yaml) and are hot-reloaded — no restart needed:
llm-claude-code:
permissionMode: auto # auto | acceptEdits | bypassPermissions | manual | dontAsk | plan
maxTurns: 10 # internal agent steps per request
streamIdleTimeoutMs: 300000 # kill the request if the CLI is silent this long (ms)
All options
| Key | Default | Description |
|---|---|---|
executable | claude | Path or name of the Claude Code CLI. Set an absolute path (see which claude) if the CLI is not on the harness PATH. |
model | "" | Model passed to claude --model. Empty: use the picker selection. default: omit the flag and let the CLI pick. |
permissionMode | auto | Claude Code permission mode. bypassPermissions is dangerous. |
allowedTools | [] | claude --allowedTools list, e.g. ["Bash(git *)", "Read"]. |
disallowedTools | [] | claude --disallowedTools list. |
tools | unset | Raw claude --tools override. "": disable Claude's built-in tools (pure text). default: restore them. |
maxTurns | 10 | Max internal agent steps per request. |
appendSystemPrompt | true | Append the harness system prompt to Claude Code's own. |
cwd | unset | Working directory for the CLI; unset inherits the harness cwd. |
noSessionPersistence | true | Don't write Claude Code session files to disk. |
extraArgs | [] | Extra raw CLI arguments (advanced). |
streamIdleTimeoutMs | 300000 | Idle watchdog between streamed events, in milliseconds. |
models | current lineup | Advisory catalog shown in the picker (see below). |
retryPolicy | harness default | LLM retry policy. |
Model catalog
The models list controls what the picker offers. The default lineup is what the installed CLI resolves today (opus → claude-opus-5, sonnet → claude-sonnet-5, haiku → claude-haiku-4-5, fable → claude-fable-5). Override it to pin or extend the list:
llm-claude-code:
models:
- id: claude-opus-5
name: Claude Opus 5
contextWindow: 200000
- id: claude-sonnet-5
name: Claude Sonnet 5
contextWindow: 200000
- id: claude-haiku-4-5
name: Claude Haiku 4.5
contextWindow: 200000
- id: claude-fable-5
name: Claude Fable 5
contextWindow: 200000
The list is advisory: the CLI decides which models your account can actually serve, and a model that is not in the list is still served if it is selected.
Make it the default provider
New sessions default to the profile's agent-default-model (DeepSeek). To default every new session to local Claude Code:
agent-default-model:
provider: claude-code
model: claude-sonnet-5
Or just pick the provider per session with the composer's model selector.
Permission modes
auto(default): Claude Code's auto-mode classifier — safe actions run, risky ones are denied in non-interactive mode.acceptEdits: file edits are auto-approved.bypassPermissions: dangerous — Claude Code can do anything its tools allow (equivalent to--dangerously-skip-permissions).manual/dontAsk/plan: see the Claude Code CLI docs.