Repository navigation
Expand file tree
/
Copy pathopencode.example.jsonc
More file actions
164 lines (155 loc) · 7.54 KB
/
Copy pathopencode.example.jsonc
File metadata and controls
164 lines (155 loc) · 7.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
{
"$schema": "https://opencode.ai/config.json",
"plugins": [
// Pick ONE entry. "package" is resolved relative to the config file that declares it.
//
// Options:
// provider llamacpp | ollama | lmstudio | typesafe | openrouter | vercel |
// opencode | custom. Sets the default baseURL. Every preset
// serves the classifier at <baseURL>/systemone:
// llamacpp http://127.0.0.1:8080/v1 (llama.cpp server with
// decision-model support, model like "kev" or
// any decision GGUF served)
// ollama http://127.0.0.1:11434/v1 (Ollama 0.35 onwards,
// decision model like "nimble" or "d1")
// lmstudio http://127.0.0.1:1234/v1 (LM Studio 0.4.26
// onwards, decision model from the catalog)
// typesafe https://api.typesafe.ai/v1 (TypeSafe API, Jev,
// model like "jev-latest")
// openrouter https://openrouter.ai/api/v1 (model like
// "typesafe/jev-1.14" or "~typesafe/jev-latest")
// vercel https://ai-gateway.vercel.sh/typesafe/v1
// (Vercel AI Gateway, model like "typesafe-ai/jev")
// opencode https://opencode.ai/zen/v1 (OpenCode Zen, model
// like "jev-1.13" or "jev-1.13-free")
// baseURL Base URL of a System One endpoint. Overrides the provider
// default. The classifier is always asked through the System
// One shape (model, state, questions) at <baseURL>/systemone:
// System One models return typed decisions, never text.
// model Classifier model ID. Required.
// fallbackModel Optional second classifier model on the same endpoint and
// key, retried once when the primary model rejects the
// request — e.g. when a limited-time free model window
// closes ("jev-1.13-free" falling back to "jev-1.13").
// apiKey Optional Bearer token. Use "{env:NAME}" instead of a literal key.
// debugLog Optional file path. Appends each primary request body after rewrites.
// tools Tool exposure: "auto" (default) narrows the tool set to what
// each prompt needs (saving input tokens). The common core
// (read/search/edit/shell/task) plus reflex_run is always kept,
// so the model keeps its direct tools and only the long tail
// (web, exec, subagents…) is trimmed to what the task needs or
// the model already used. "all" keeps every tool exposed.
// Everything is kept if the classifier is unavailable.
// Classifier on a local llama.cpp server with the System One API (/systemone).
// Effort control is automatic: every model that supports it gets effort written
// in its own dialect (see "primaryBackend" note above), so no backend option is
// needed for any of the examples below.
{
"package": "./plugins/reflex",
"options": {
"provider": "llamacpp",
"baseURL": "http://127.0.0.1:1123/v1",
"model": "liquid-d1"
}
},
// Main agent on a local llama.cpp or Ollama server (identified once per
// origin via /v1/models): top-level reasoning_effort, "low" keeping
// thinking at its lowest level and "medium"/"high" scaling it
// (model-defined names and compatibility aliases on Ollama); llama.cpp
// additionally gets chat_template_kwargs.enable_thinking for Qwen-style
// on/off templates.
// Main agent on LM Studio: no reasoning field is documented on its
// OpenAI-compatible endpoint yet, so those requests stay untouched.
// Main agent on a Z.ai GLM model (GLM-5.2 onwards): thinking.type +
// reasoning_effort on the Z.ai API, reasoning_effort alone through the
// OpenCode Go gateway, detected per request.
// Main agent on an OpenAI GPT reasoning model: reasoning.effort on the
// Responses API or reasoning_effort on Chat Completions.
// Multimodel setups work without extra options: each model gets its own
// fields, so switching models mid-session never sends a foreign field.
// {
// "package": "./plugins/reflex",
// "options": {
// "provider": "llamacpp",
// "model": "liquid-d1",
// }
// },
// Classifier on Jev, TypeSafe AI's System One decision model, through the
// TypeSafe API directly. Model IDs like "jev-latest" or a pinned release.
// {
// "package": "./plugins/reflex",
// "options": {
// "provider": "typesafe",
// "model": "jev-latest",
// "apiKey": "{env:TYPESAFE_API_KEY}"
// }
// },
// Classifier on Jev through OpenRouter (same OpenRouter API key as the
// Decisions API). Model IDs like "typesafe/jev-1.14" or "~typesafe/jev-latest".
// {
// "package": "./plugins/reflex",
// "options": {
// "provider": "openrouter",
// "model": "~typesafe/jev-latest",
// "apiKey": "{env:OPENROUTER_API_KEY}"
// }
// },
// Classifier on Jev through the Vercel AI Gateway (TypeSafe-compatible
// surface). Model IDs like "typesafe-ai/jev".
// {
// "package": "./plugins/reflex",
// "options": {
// "provider": "vercel",
// "model": "typesafe-ai/jev",
// "apiKey": "{env:AI_GATEWAY_API_KEY}"
// }
// },
// Classifier on the limited-time free Jev on OpenCode Zen, falling back to
// the paid twin automatically when the free window closes. Model IDs like
// "jev-1.13" (paid), "jev-1.13-free" (limited-time free).
// {
// "package": "./plugins/reflex",
// "options": {
// "provider": "opencode",
// "model": "jev-1.13-free",
// "fallbackModel": "jev-1.13",
// "apiKey": "{env:OPENCODE_ZEN_API_KEY}"
// }
// },
// Classifier on Ollama (0.35 onwards) with a decision model like "nimble"
// (bundled with 0.35) or "d1" (Liquid AI), asked through Ollama's
// /v1/systemone endpoint. Older Ollama versions don't serve the endpoint
// and every classifier question fails soft (the plugin keeps working
// without classification).
// {
// "package": "./plugins/reflex",
// "options": {
// "provider": "ollama",
// "model": "nimble"
// }
// },
// Classifier on LM Studio (0.4.26 onwards) with a decision model from the
// catalog, asked through LM Studio's /v1/systemone endpoint. Older LM
// Studio versions don't serve the endpoint and every classifier question
// fails soft (the plugin keeps working without classification).
// {
// "package": "./plugins/reflex",
// "options": {
// "provider": "lmstudio",
// "model": "YOUR-DECISION-MODEL-ID"
// }
// },
// Custom remote System One endpoint (any server serving the System One shape
// at <baseURL>/systemone, e.g. a TypeSafe-compatible re-host) with an API
// key from the environment.
// {
// "package": "./plugins/reflex",
// "options": {
// "provider": "custom",
// "baseURL": "https://YOUR-PROVIDER-HOST/v1",
// "model": "YOUR-MODEL-ID",
// "apiKey": "{env:SYSTEMONE_API_KEY}"
// }
// }
]
}