opencodeAI
No description
- Stars
- 1
- Language
- TypeScript
- Created
- Sep 19, 2026
- Updated
- Sep 19, 2026
Introduction
opencodeAI
Free OpenCode Zen models with Vision Support, natively inside DSH (DeepSeek Harness).
No API key. No registration. No extra process.
English | 简体中文
opencodeAI 是一个基于 opencode2dsh 的增强版本,为 DSH(DeepSeek Harness)提供原生 LlmAdapter,直接流式对接
OpenCode Zen 的匿名免费通道。
✨ 主要改进
🖼️ 视觉模型支持(mimo-v2.5-free)
- 新增对 mimo-v2.5-free 模型的视觉(识图)能力支持
- 支持 Base64 编码图片和 HTTP URL 图片
- 模型自动检测输入模态,智能处理多模态内容
🎨 主题系统
- 支持自定义主题配置
- 深色/浅色模式自适应
- 可通过 CSS 变量自定义颜色
Highlights
- Zero credential, zero setup — the anonymous lane needs no key; install, restart, chat
- Native adapter, no sidecar — one npm package, no child process, no binary, no local port
- CLI-identical disguise — requests carry the OpenCode CLI user agent and its session/request/project header set
- Vision Support — mimo-v2.5-free model supports image understanding
- Selectable thinking levels — reasoning-capable free models expose an effort picker in DSH's model selector
- Live catalog with a fallback chain — live upstream list ∩ free-by-metadata, falling back to offline cache and a verified static list
- Self-healing — fast startup retries, periodic refresh, and a written health snapshot for diagnostics
Install
From opencodeAI (recommended, latest features + DSH integration):
dsh plugin --profile web add https://github.com/dhdbvcg/opencodeAI.git
From npm (published package):
dsh plugin --profile web add @opencode2dsh/dsh-plugin
From source (build the tarball yourself):
git clone https://github.com/dhdbvcg/opencodeAI.git
cd opencodeAI/packages/plugin
pnpm install && pnpm pack
dsh plugin --profile web add ./opencode2dsh-dsh-plugin-<version>.tgz
Verify: restart dsh web, open the model picker, and pick a model from
the opencode2dsh group.
Requires DSH (DeepSeek Harness) with a web profile; Node.js ≥ 20; outbound HTTPS to opencode.ai and models.dev.
Vision Support
The mimo-v2.5-free model now supports image input. To use vision:
- Select
mimo-v2.5-freein the model picker - Attach images (base64 or URL) in your conversation
- The model will process both text and image content
Supported image formats:
- Base64 data URLs (
data:image/png;base64,...) - HTTP/HTTPS URLs
- Raw base64 strings (auto-wrapped as PNG)
Configuration
Defaults work out of the box. Override via the profile's cordis.patch.yml:
- id: opencode2dsh
name: '@opencode2dsh/dsh-plugin'
config:
mode: adapter # adapter (default) | sidecar
providerId: opencode2dsh
refreshSeconds: 300 # catalog refresh cadence
| Option | Default | Description |
|---|---|---|
mode | adapter | adapter: native LlmAdapter streaming straight from Zen. sidecar: legacy local-agent mode. |
providerId | opencode2dsh | Provider name shown in DSH. |
refreshSeconds | 300 | Live catalog refresh interval. |
Theme Customization
You can customize the plugin's appearance by modifying the theme settings in DSH. The plugin uses CSS variables for consistent theming:
:root {
--primary-color: #007bff;
--background-color: #ffffff;
--text-color: #333333;
}
How it works
DSH session
│ harness chunks (block-start / text-delta / usage / finish …)
▼
ZenAdapter (registered LlmAdapter)
│ pi-ai openai-completions stream (chat models)
│ pi-ai openai-responses stream (vision models)
▼
https://opencode.ai/zen/v1 ← Authorization: Bearer public
with CLI-identical headers:
user-agent: opencode/…
x-opencode-client, x-opencode-session, x-session-affinity,
X-Session-Id, x-opencode-request, x-opencode-project
- Session correlation — session/project ids are SHA-256 derived from the conversation's first user turn
- Catalog fallback chain — S1: live
GET /v1/models; S2: models.dev pricing metadata decides "free"; S3: a compile-time verified static list - Vision processing — Images are extracted from messages and sent as multimodal content for supported models
Health & troubleshooting
The plugin writes a health snapshot after every refresh round:
~/.opencode2dsh/adapter-status.json
| Symptom | Likely cause & fix |
|---|---|
| Only 3 models | Startup fetch raced your network; retries land within ~1 min. |
lastError: "fetch failed" persisting | Outbound HTTPS to opencode.ai blocked; check proxy/VPN rules. |
| Rate-limit errors in chat | The anonymous lane is quota-per-IP; switch network node or wait. |
Development
git clone https://github.com/dhdbvcg/opencodeAI.git
cd opencodeAI/packages/plugin
pnpm install
pnpm typecheck && pnpm test # unit tests
pnpm build # bundle to lib/
Acknowledgments
- opencode2dsh by @FishBottle7 — the original project this fork is based on
- OpenCode — for running the free anonymous Zen lane
- @earendil-works/pi-ai — the wire layer used by adapter mode
- DeepSeek Harness and the dsh-market community
License
MIT © dhdbvcg