deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Arborsm/dsh-plugin-devin-bridge
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A dsh LLM adapter plugin that bridges Devin's Connect RPC API into the dsh model provider system, enabling dsh's internal agent loop to use Devin-hosted models (glm-5.2, swe-1.7, and any other model Devin exposes) as backends.
The plugin registers a devin provider route on ctx.llm via the dsh LLM seam (LlmAdapter). When dsh's agent loop routes a request to provider: devin, the adapter:
GenerateOptions (messages, tools, system prompt, images) into Devin's GetChatMessageRequest protobufGetChatMessageResponse frame into dsh's StreamChunk protocol (text deltas, reasoning deltas, tool-call deltas, usage, finish)pnpm add https://github.com/Arborsm/dsh-plugin-devin-bridge.git
The adapter needs a Devin session token (format: devin-session-token$<...>) to authenticate. It resolves the token in priority order:
token in the dsh settings UI (marked as secret, auto-redacted in wire responses)config.token in the plugin compositioncredentials.toml created by devin auth login:%APPDATA%\devin\credentials.toml~/.local/share/devin/credentials.toml (or $XDG_DATA_HOME/devin/credentials.toml)DEVIN_CREDENTIALS_PATH environment variableIf no token is found, the plugin throws at startup with a actionable error message.
All fields are optional — the plugin works out of the box once a token is available (via settings panel, entry config, or credentials.toml).
- id: devin-bridge
name: dsh-plugin-devin-bridge
config:
token: "" # optional: explicit token; empty = auto-detect from credentials.toml
baseUrl: "https://server.codeium.com" # optional: Devin Connect endpoint
proxy: "" # optional: outbound proxy URL (http/https/socks5)
forceHttp1: true # optional: force HTTP/1.1 (default true)
defaultContextWindow: 128000 # optional: fallback context window
defaultMaxTokens: 16384 # optional: fallback max output tokens
models: # optional; defaults to glm-5-2 and swe-1-7
- id: "glm-5-2"
name: "GLM-5.2"
contextWindow: 128000
maxTokens: 16384
supportsImages: false
- id: "swe-1-7"
name: "SWE-1.7"
contextWindow: 128000
maxTokens: 16384
supportsImages: true
retryPolicy: # optional
mode: normal
maxRetries: 3
backoff:
initialDelayMs: 500
maxDelayMs: 10000
jitterRatio: 0.1
When the dsh settings service is available, all of the above can be adjusted at runtime through the settings panel — changes take effect immediately (live applies). The token field is marked role('secret') so it is automatically redacted in settings descriptors returned to wire surfaces.
Once configured, dsh's model selector will show Devin as a provider with available models. Select any model in the dsh UI or route to it programmatically with provider: devin.
GetCascadeModelConfigs RPC (5-minute TTL cache), merging user-configured models as fallback. Network failures gracefully fall back to the static config.reasoning block typetool-call blocksdevin auth login credentials when no explicit token is configuredsrc/
├── index.ts # Cordis plugin entry: Config schema, settings panel, ctx.llm registration
├── adapter/
│ ├── devin.ts # DevinAdapter: GenerateOptions → Devin RPC → StreamChunk
│ ├── decoder.ts # GetChatMessageResponse → StreamChunk translation
│ ├── transport.ts # Connect transport with auth + proxy injection
│ └── credentials.ts # Devin CLI credentials.toml auto-detection
└── proto/
├── devin.proto # Trimmed protobuf definitions
└── gen/ # @bufbuild/protobuf generated code
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。