Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ Provider diagnostics also include the VS Code/extension versions, extension host
| `opencodego.streamIdleTimeoutSeconds` | `120` | Cancel if stream goes idle |
| `opencodego.showUsageStatusBar` | `true` | Show usage summary in status bar |
| `opencodego.showProviderPrefix` | `true` | Include `OpenCode Go` / `OpenCode Zen` in model names |
| `opencodego.visionProxyWholeConversation` | `false` | Vision proxy: describe the whole conversation instead of only the message with a new image (more context, more tokens) |
| `opencodego.freeOnly` | `true` | Zen: free models only. `false` = include paid |
| `opencodego.agentsWindow` | `true` | Expose agent-host model variants (`targetChatSessionType`) for the Agents window |
| `opencodego.showAgentModelsInManagePanel` | `false` | Show agent vendors in Manage Language Models panel |
Expand Down
14 changes: 14 additions & 0 deletions docs/features/11-20260715-vision-proxy.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,20 @@ Storage keys (in extension `globalState`):
- `opencodego.visionProxyModelId` — target Copilot model ID (e.g. `copilot:gpt-5.5`)
- `opencodego.visionProxyPrompt` — description instruction sent to the vision model

### Description Cache & Whole-Conversation Mode

Descriptions produced by the proxy are cached per image (SHA-256 of its bytes), so
images already described in earlier turns are reused without calling the vision model
again - saving Copilot quota and latency in multi-turn conversations (issue #119).

A boolean setting controls how much context each description gets:

- `opencodego.visionProxyWholeConversation` (default `false`). Off: the proxy
describes only the message that contains a new image and reuses cached
descriptions, keeping token usage low. On: the proxy sends the whole
conversation to the vision model so descriptions carry full context, at the
cost of more tokens. Descriptions are still cached in both modes.

### Graceful Fallback

If the proxy fails (model not found, API error, empty description), images are stripped with a placeholder `[Image unavailable — vision proxy unavailable]` instead of forwarding raw image data to a text-only model (which would 400). Original text parts are preserved.
Expand Down
9 changes: 7 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,11 @@
"default": true,
"description": "Show the OpenCode Go or OpenCode Zen provider prefix in model names."
},
"opencodego.visionProxyWholeConversation": {
"type": "boolean",
"default": false,
"description": "Off (default): describe only the message with a new image and reuse cached image descriptions to save quota. On: describe the whole conversation for richer context (uses more tokens; descriptions are still cached)."
},
"opencodego.freeOnly": {
"type": "boolean",
"default": true,
Expand Down
Loading
Loading