mini-coder 0.5.12 → 0.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BENCHMARK.md +15 -316
- package/PROGRESS.md +3 -3
- package/README.md +54 -21
- package/benchmark-baseline.sh +15 -0
- package/bun.lock +265 -90
- package/package.json +8 -7
- package/skills-lock.json +15 -0
- package/src/agent.ts +526 -13
- package/src/assistant-output.ts +73 -0
- package/src/cli.ts +2 -1
- package/src/delegation.ts +238 -0
- package/src/headless.ts +90 -44
- package/src/index.ts +267 -102
- package/src/input.ts +13 -1
- package/src/mcp.ts +609 -0
- package/src/prompt.ts +11 -13
- package/src/session-message.ts +57 -65
- package/src/session.ts +389 -42
- package/src/settings.ts +199 -7
- package/src/skills.ts +12 -3
- package/src/submit.ts +24 -2
- package/src/theme.ts +186 -3
- package/src/tool-common.ts +2 -0
- package/src/tool-delegate.ts +125 -0
- package/src/tool-shell.ts +190 -8
- package/src/tools.ts +335 -6
- package/src/ui/agent.ts +10 -0
- package/src/ui/commands.test.ts +525 -10
- package/src/ui/commands.ts +224 -8
- package/src/ui/conversation.test.ts +252 -27
- package/src/ui/conversation.ts +468 -390
- package/src/ui/help.ts +27 -11
- package/src/ui.ts +230 -75
- package/src/plugins.ts +0 -183
package/BENCHMARK.md
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
# CORE GOAL
|
|
2
|
+
|
|
3
|
+
**Terminal-Bench is a signal, not the product. The target is a better coding agent, not a higher benchmark score from benchmark-shaped patches.**
|
|
4
|
+
|
|
5
|
+
- Do not add fixes to fix an issue with specific terminal bench evals, focus on improving the agent's behaviour.
|
|
6
|
+
- Benchmarks run headless mode in one shot. Make sure you use `tmux` often to check that the TUI and multiturn UX is still
|
|
7
|
+
good.
|
|
8
|
+
|
|
1
9
|
# Benchmark workflow
|
|
2
10
|
|
|
3
11
|
Use this as the default tuning loop for `mini-coder` on Terminal-Bench.
|
|
4
12
|
|
|
5
|
-
The goal is not to rerun the whole benchmark after every change. The goal is to get fast enough feedback that small
|
|
6
|
-
|
|
7
|
-
Terminal-Bench is a signal, not the product. The target is a better coding agent, not a higher benchmark score from benchmark-shaped patches.
|
|
13
|
+
The goal is not to rerun the whole benchmark after every change. The goal is to get fast enough feedback that small changes can be judged quickly, then promote only the promising ones to bigger runs.
|
|
8
14
|
|
|
9
15
|
## Principles
|
|
10
16
|
|
|
@@ -19,39 +25,8 @@ Terminal-Bench is a signal, not the product. The target is a better coding agent
|
|
|
19
25
|
|
|
20
26
|
## Suites
|
|
21
27
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
Use this to catch regressions on known-good behavior.
|
|
25
|
-
|
|
26
|
-
Tasks:
|
|
27
|
-
|
|
28
|
-
- `cancel-async-tasks`
|
|
29
|
-
- `bn-fit-modify`
|
|
30
|
-
- `sparql-university`
|
|
31
|
-
- `extract-elf`
|
|
32
|
-
|
|
33
|
-
Settings:
|
|
34
|
-
|
|
35
|
-
- `1` attempt
|
|
36
|
-
- `2` concurrent
|
|
37
|
-
- `0` retries
|
|
38
|
-
|
|
39
|
-
Estimated wall time:
|
|
40
|
-
|
|
41
|
-
- about `8–10 minutes`
|
|
42
|
-
|
|
43
|
-
### 2. Fast suite
|
|
44
|
-
|
|
45
|
-
Use this after almost every small change.
|
|
46
|
-
|
|
47
|
-
Tasks:
|
|
48
|
-
|
|
49
|
-
- `polyglot-rust-c`
|
|
50
|
-
- `overfull-hbox`
|
|
51
|
-
- `gcode-to-text`
|
|
52
|
-
- `mteb-retrieve`
|
|
53
|
-
- `dna-insert`
|
|
54
|
-
- `torch-tensor-parallelism`
|
|
28
|
+
There is a full 89 test baseline run with 2 attemps in the teminal-bench folder. Use the evals in it
|
|
29
|
+
to determine your fast evals to start your optimization process and iterations.
|
|
55
30
|
|
|
56
31
|
Settings:
|
|
57
32
|
|
|
@@ -59,67 +34,6 @@ Settings:
|
|
|
59
34
|
- `2` concurrent
|
|
60
35
|
- `0` retries
|
|
61
36
|
|
|
62
|
-
Estimated wall time:
|
|
63
|
-
|
|
64
|
-
- about `44 minutes`
|
|
65
|
-
|
|
66
|
-
### 3. Focused suite
|
|
67
|
-
|
|
68
|
-
Use this only if a change looks good on the fast suite.
|
|
69
|
-
|
|
70
|
-
Tasks:
|
|
71
|
-
|
|
72
|
-
- `polyglot-rust-c`
|
|
73
|
-
- `overfull-hbox`
|
|
74
|
-
- `gcode-to-text`
|
|
75
|
-
- `mteb-retrieve`
|
|
76
|
-
- `torch-tensor-parallelism`
|
|
77
|
-
- `filter-js-from-html`
|
|
78
|
-
- `configure-git-webserver`
|
|
79
|
-
- `qemu-alpine-ssh`
|
|
80
|
-
|
|
81
|
-
Settings:
|
|
82
|
-
|
|
83
|
-
- `2` attempts
|
|
84
|
-
- `2` concurrent
|
|
85
|
-
- `0` retries
|
|
86
|
-
|
|
87
|
-
Estimated wall time:
|
|
88
|
-
|
|
89
|
-
- about `1.1 hours`
|
|
90
|
-
|
|
91
|
-
### 4. Broad promotion suite
|
|
92
|
-
|
|
93
|
-
Use this after 1–3 promising changes, or overnight.
|
|
94
|
-
|
|
95
|
-
Options:
|
|
96
|
-
|
|
97
|
-
- rerun recent failures
|
|
98
|
-
- wider local failure suite
|
|
99
|
-
- full leaderboard-style run
|
|
100
|
-
|
|
101
|
-
Typical settings for rerunning recent failures:
|
|
102
|
-
|
|
103
|
-
- `4` attempts
|
|
104
|
-
- `2` concurrent
|
|
105
|
-
- `0` retries
|
|
106
|
-
|
|
107
|
-
## Baseline procedure
|
|
108
|
-
|
|
109
|
-
Before changing code:
|
|
110
|
-
|
|
111
|
-
1. run the guardrail suite
|
|
112
|
-
2. run the fast suite
|
|
113
|
-
3. run the fast suite again
|
|
114
|
-
|
|
115
|
-
That gives a fresh local baseline for:
|
|
116
|
-
|
|
117
|
-
- pass count
|
|
118
|
-
- runtime
|
|
119
|
-
- variance / noise
|
|
120
|
-
|
|
121
|
-
Do not compare a new change only against an old run from days ago if a fresh same-HEAD baseline is available.
|
|
122
|
-
|
|
123
37
|
## Experiment quality bar
|
|
124
38
|
|
|
125
39
|
Before changing code, write the hypothesis in two layers:
|
|
@@ -133,13 +47,6 @@ Only run an experiment if you can answer all of these:
|
|
|
133
47
|
- why should that help outside Terminal-Bench?
|
|
134
48
|
- what would make this change obviously overfit?
|
|
135
49
|
|
|
136
|
-
Good experiment themes:
|
|
137
|
-
|
|
138
|
-
- verification-equivalence before completion
|
|
139
|
-
- artifact-grounded verification of final outputs
|
|
140
|
-
- preferring a task-named local source of truth over approximations
|
|
141
|
-
- reducing shell thrash before first meaningful verification
|
|
142
|
-
|
|
143
50
|
Reject or redesign experiments that:
|
|
144
51
|
|
|
145
52
|
- depend on benchmark-specific task names, file names, package names, or tool names in product logic
|
|
@@ -162,108 +69,13 @@ For each change:
|
|
|
162
69
|
5. form **one** narrow hypothesis
|
|
163
70
|
6. make **one** small change
|
|
164
71
|
7. run:
|
|
165
|
-
- guardrails
|
|
166
72
|
- fast suite
|
|
167
|
-
8. compare to baseline
|
|
73
|
+
8. compare to baseline or your reference run
|
|
168
74
|
9. decide:
|
|
169
75
|
- keep
|
|
170
76
|
- revert
|
|
171
77
|
- refine
|
|
172
78
|
|
|
173
|
-
Only run the focused suite if:
|
|
174
|
-
|
|
175
|
-
- the fast suite improved, and
|
|
176
|
-
- the guardrails did not regress
|
|
177
|
-
|
|
178
|
-
Only run the broad promotion suite if:
|
|
179
|
-
|
|
180
|
-
- the focused suite also looks good, or
|
|
181
|
-
- enough promising changes have accumulated to justify it
|
|
182
|
-
|
|
183
|
-
## Decision rules
|
|
184
|
-
|
|
185
|
-
Treat the fast suite as a noisy but useful signal.
|
|
186
|
-
|
|
187
|
-
For the 12-trial fast suite:
|
|
188
|
-
|
|
189
|
-
- `+2` or more passes: probably meaningful improvement
|
|
190
|
-
- `-2` or more passes: probably meaningful regression
|
|
191
|
-
- `±1`: likely noise unless it repeats
|
|
192
|
-
|
|
193
|
-
Keep a change if:
|
|
194
|
-
|
|
195
|
-
- the fast suite improves materially
|
|
196
|
-
- guardrails do not regress
|
|
197
|
-
- the result repeats on another fast-suite rerun
|
|
198
|
-
- the mechanism is still a general agent-quality improvement, not just a benchmark-specific patch
|
|
199
|
-
|
|
200
|
-
Revert a change if:
|
|
201
|
-
|
|
202
|
-
- it clearly loses fast-suite passes, or
|
|
203
|
-
- it regresses guardrails
|
|
204
|
-
|
|
205
|
-
Call it inconclusive if:
|
|
206
|
-
|
|
207
|
-
- the delta is tiny and does not repeat
|
|
208
|
-
|
|
209
|
-
Also prefer:
|
|
210
|
-
|
|
211
|
-
- a smaller, more general improvement over a larger but obviously benchmark-specific patch
|
|
212
|
-
- a clearly exercised mechanism over a theory that never fired in the target runs
|
|
213
|
-
|
|
214
|
-
## Failure buckets to optimize against
|
|
215
|
-
|
|
216
|
-
Use these as the main buckets when inspecting logs:
|
|
217
|
-
|
|
218
|
-
### Exact-contract / cleanup misses
|
|
219
|
-
|
|
220
|
-
Examples:
|
|
221
|
-
|
|
222
|
-
- right artifact, wrong path
|
|
223
|
-
- right output plus extra junk
|
|
224
|
-
- correct core work, but violates a strict file / in-place requirement
|
|
225
|
-
|
|
226
|
-
### Verification-equivalence / premature completion
|
|
227
|
-
|
|
228
|
-
Examples:
|
|
229
|
-
|
|
230
|
-
- waited too long to run a meaningful check
|
|
231
|
-
- never checked the exact contract
|
|
232
|
-
- stopped after a weaker non-equivalent check
|
|
233
|
-
- verified the intended design instead of the written artifact
|
|
234
|
-
|
|
235
|
-
### Source-of-truth selection gaps
|
|
236
|
-
|
|
237
|
-
Examples:
|
|
238
|
-
|
|
239
|
-
- task names an exact local tool/package/interface, but the agent uses an approximation instead
|
|
240
|
-
- lower-level library reasoning replaces package-local or task-local semantics
|
|
241
|
-
|
|
242
|
-
### Over-exploration / shell thrash
|
|
243
|
-
|
|
244
|
-
Examples:
|
|
245
|
-
|
|
246
|
-
- too many shell / read steps before first write
|
|
247
|
-
- repeated discovery commands without narrowing the problem
|
|
248
|
-
|
|
249
|
-
### Persistent correctness gaps
|
|
250
|
-
|
|
251
|
-
Examples:
|
|
252
|
-
|
|
253
|
-
- `torch-tensor-parallelism`
|
|
254
|
-
- `filter-js-from-html`
|
|
255
|
-
- `configure-git-webserver`
|
|
256
|
-
|
|
257
|
-
### Long-horizon / timeout-heavy tasks
|
|
258
|
-
|
|
259
|
-
These are useful for promotion runs, not tight inner loops.
|
|
260
|
-
Examples:
|
|
261
|
-
|
|
262
|
-
- `gpt2-codegolf`
|
|
263
|
-
- `query-optimize`
|
|
264
|
-
- `winning-avg-corewars`
|
|
265
|
-
- `train-fasttext`
|
|
266
|
-
|
|
267
79
|
## Behavior analysis requirements
|
|
268
80
|
|
|
269
81
|
Behavior analysis depends on structured agent logs.
|
|
@@ -281,128 +93,15 @@ Per trial, keep:
|
|
|
281
93
|
- structured `agent/mini-coder.ndjson`
|
|
282
94
|
- timestamps
|
|
283
95
|
|
|
284
|
-
With those artifacts, analyze things like:
|
|
285
|
-
|
|
286
|
-
- time to first tool call
|
|
287
|
-
- time to first edit
|
|
288
|
-
- number of `shell` / `read` / `grep` / `edit` calls
|
|
289
|
-
- whether the agent ran a verifier-like shell command
|
|
290
|
-
- whether it used the named local source of truth when one was available
|
|
291
|
-
- whether it verified the final artifact it actually wrote
|
|
292
|
-
- whether a dynamic intervention visibly exercised
|
|
293
|
-
- whether it had a local pass before ending
|
|
294
|
-
- whether it kept changing files after a pass-worthy state
|
|
295
|
-
- whether it left extra artifacts
|
|
296
|
-
|
|
297
|
-
## Commands
|
|
298
|
-
|
|
299
|
-
### Guardrail suite
|
|
300
|
-
|
|
301
|
-
```bash
|
|
302
|
-
GUARDRAIL_TASKS=(
|
|
303
|
-
cancel-async-tasks
|
|
304
|
-
bn-fit-modify
|
|
305
|
-
sparql-university
|
|
306
|
-
extract-elf
|
|
307
|
-
)
|
|
308
|
-
|
|
309
|
-
cmd=(
|
|
310
|
-
harbor run -y
|
|
311
|
-
--job-name local-guardrails-$(date +%F__%H-%M-%S)
|
|
312
|
-
--jobs-dir "$PWD/terminal-bench/jobs"
|
|
313
|
-
--agent-import-path mini_coder_local_agent:MiniCoderLocalAgent
|
|
314
|
-
--model openai-codex/gpt-5.4
|
|
315
|
-
--dataset terminal-bench@2.0
|
|
316
|
-
--n-attempts 1
|
|
317
|
-
--n-concurrent 2
|
|
318
|
-
--max-retries 0
|
|
319
|
-
)
|
|
320
|
-
|
|
321
|
-
for t in "${GUARDRAIL_TASKS[@]}"; do
|
|
322
|
-
cmd+=(--include-task-name "$t")
|
|
323
|
-
done
|
|
324
|
-
|
|
325
|
-
PYTHONPATH="$PWD/terminal-bench" "${cmd[@]}"
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
### Fast suite
|
|
329
|
-
|
|
330
|
-
```bash
|
|
331
|
-
FAST_TASKS=(
|
|
332
|
-
polyglot-rust-c
|
|
333
|
-
overfull-hbox
|
|
334
|
-
gcode-to-text
|
|
335
|
-
mteb-retrieve
|
|
336
|
-
dna-insert
|
|
337
|
-
torch-tensor-parallelism
|
|
338
|
-
)
|
|
339
|
-
|
|
340
|
-
cmd=(
|
|
341
|
-
harbor run -y
|
|
342
|
-
--job-name local-fast-$(date +%F__%H-%M-%S)
|
|
343
|
-
--jobs-dir "$PWD/terminal-bench/jobs"
|
|
344
|
-
--agent-import-path mini_coder_local_agent:MiniCoderLocalAgent
|
|
345
|
-
--model openai-codex/gpt-5.4
|
|
346
|
-
--dataset terminal-bench@2.0
|
|
347
|
-
--n-attempts 2
|
|
348
|
-
--n-concurrent 2
|
|
349
|
-
--max-retries 0
|
|
350
|
-
)
|
|
351
|
-
|
|
352
|
-
for t in "${FAST_TASKS[@]}"; do
|
|
353
|
-
cmd+=(--include-task-name "$t")
|
|
354
|
-
done
|
|
355
|
-
|
|
356
|
-
PYTHONPATH="$PWD/terminal-bench" "${cmd[@]}"
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### Focused suite
|
|
360
|
-
|
|
361
|
-
```bash
|
|
362
|
-
FOCUS_TASKS=(
|
|
363
|
-
polyglot-rust-c
|
|
364
|
-
overfull-hbox
|
|
365
|
-
gcode-to-text
|
|
366
|
-
mteb-retrieve
|
|
367
|
-
torch-tensor-parallelism
|
|
368
|
-
filter-js-from-html
|
|
369
|
-
configure-git-webserver
|
|
370
|
-
qemu-alpine-ssh
|
|
371
|
-
)
|
|
372
|
-
|
|
373
|
-
cmd=(
|
|
374
|
-
harbor run -y
|
|
375
|
-
--job-name local-focus-$(date +%F__%H-%M-%S)
|
|
376
|
-
--jobs-dir "$PWD/terminal-bench/jobs"
|
|
377
|
-
--agent-import-path mini_coder_local_agent:MiniCoderLocalAgent
|
|
378
|
-
--model openai-codex/gpt-5.4
|
|
379
|
-
--dataset terminal-bench@2.0
|
|
380
|
-
--n-attempts 2
|
|
381
|
-
--n-concurrent 2
|
|
382
|
-
--max-retries 0
|
|
383
|
-
)
|
|
384
|
-
|
|
385
|
-
for t in "${FOCUS_TASKS[@]}"; do
|
|
386
|
-
cmd+=(--include-task-name "$t")
|
|
387
|
-
done
|
|
388
|
-
|
|
389
|
-
PYTHONPATH="$PWD/terminal-bench" "${cmd[@]}"
|
|
390
|
-
```
|
|
391
|
-
|
|
392
96
|
## Minimal experiment log format
|
|
393
97
|
|
|
98
|
+
You are running in a loop, make sure to keep your progress tracked so you
|
|
99
|
+
can continue between loop iterations, this is to avoid context pressure.:w
|
|
394
100
|
Keep this in `PROGRESS.md`, a final summary for each completed change:
|
|
395
101
|
|
|
396
102
|
- benchmark symptom
|
|
397
103
|
- general behavior gap
|
|
398
104
|
- why this should help outside Terminal-Bench
|
|
399
|
-
- overfitting risk / why this is still general
|
|
400
|
-
- trigger evidence, if relevant
|
|
401
105
|
- hypothesis
|
|
402
|
-
-
|
|
403
|
-
- local verification
|
|
404
|
-
- guardrail result
|
|
405
|
-
- fast-suite result
|
|
406
|
-
- focused-suite result, if run
|
|
407
|
-
- mechanism exercised?
|
|
106
|
+
- verification method
|
|
408
107
|
- keep / revert / refine (Make the decision very visible in the file).
|
package/PROGRESS.md
CHANGED
package/README.md
CHANGED
|
@@ -39,17 +39,17 @@ $ mc
|
|
|
39
39
|
|
|
40
40
|
## Tools
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
Seven built-in tools, plus a conditional read-only image tool and any configured MCP tools:
|
|
43
43
|
|
|
44
44
|
- **`shell`** — runs commands in the user's shell. Returns stdout, stderr, and exit code. Large output is truncated to protect model context.
|
|
45
|
+
- **`delegate`** — runs a bounded subtask in an isolated subagent session using the current model, prompt context, and tools.
|
|
45
46
|
- **`read`** — reads UTF-8 text files from disk, optionally by line window.
|
|
46
47
|
- **`grep`** — searches file contents with ripgrep-style options and returns structured matches.
|
|
47
48
|
- **`edit`** — exact-text replacement in a single file. Fails deterministically if the target is missing or ambiguous. Creates new files when old text is empty.
|
|
48
49
|
- **`todoWrite`** — creates or updates the session todo list incrementally and returns the full current snapshot.
|
|
49
50
|
- **`todoRead`** — returns the full current session todo list snapshot.
|
|
50
51
|
- **`readImage`** — reads PNG, JPEG, GIF, and WebP files as model input. Only registered when the active model supports images.
|
|
51
|
-
|
|
52
|
-
Plugins can add more tools, but the core stays intentionally small.
|
|
52
|
+
- **Configured MCP tools** — tools discovered from `settings.json` Streamable HTTP MCP servers. Imported tool names are prefixed with the server name, for example `docs__search`.
|
|
53
53
|
|
|
54
54
|
## Features
|
|
55
55
|
|
|
@@ -58,25 +58,27 @@ Plugins can add more tools, but the core stays intentionally small.
|
|
|
58
58
|
- **Session persistence** — SQLite-backed sessions with undo, fork, resume, and cumulative usage stats. Sessions are scoped to the working directory.
|
|
59
59
|
- **Reasoning and verbosity controls** — toggle thinking visibility and verbose tool rendering on demand. Preferences persist across launches.
|
|
60
60
|
- **[AGENTS.md](https://agents.md) support** — project-specific instructions discovered root-to-leaf, with `~/.agents/` for global instructions.
|
|
61
|
-
- **[Agent Skills](https://agentskills.io)** — skill catalogs exposed in the prompt. `/skill:name` injects a skill body into the next user message.
|
|
62
|
-
- **
|
|
61
|
+
- **[Agent Skills](https://agentskills.io)** — skill catalogs exposed in the prompt. `/skill:name` injects a skill body into the next user message, and `/skill` opens a picker that fills in the selected skill reference without submitting.
|
|
62
|
+
- **Settings-driven MCP tools** — connect Streamable HTTP MCP servers from `~/.config/mini-coder/settings.json` and expose their tools directly in the core runtime.
|
|
63
63
|
|
|
64
64
|
## Commands
|
|
65
65
|
|
|
66
|
-
| Command
|
|
67
|
-
|
|
|
68
|
-
| `/model`
|
|
69
|
-
| `/session`
|
|
70
|
-
| `/new`
|
|
71
|
-
| `/fork`
|
|
72
|
-
| `/undo`
|
|
73
|
-
| `/reasoning`
|
|
74
|
-
| `/verbose`
|
|
75
|
-
| `/
|
|
76
|
-
| `/
|
|
77
|
-
| `/
|
|
78
|
-
| `/
|
|
79
|
-
| `/
|
|
66
|
+
| Command | Description |
|
|
67
|
+
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
68
|
+
| `/model` | Switch models and save the choice as the global default. |
|
|
69
|
+
| `/session` | Open the session picker for the current working directory. |
|
|
70
|
+
| `/new` | Start a fresh session and reset the running token and cost totals. |
|
|
71
|
+
| `/fork` | Fork the current chat into a new session, keep the original, and add a UI-only `Forked session.` note. |
|
|
72
|
+
| `/undo` | Remove the last conversational turn without touching filesystem changes. |
|
|
73
|
+
| `/reasoning` | Show or hide model thinking. The setting is saved and restored on launch. |
|
|
74
|
+
| `/verbose` | Toggle compact vs full rendering for verbose-aware tool previews/results, including shell, read, grep, edit previews/errors, and MCP tool blocks. |
|
|
75
|
+
| `/mcp` | Open the MCP server picker and toggle configured servers on or off for future turns. |
|
|
76
|
+
| `/todo` | Show the current session todo list in the conversation log as a UI-only checklist block. |
|
|
77
|
+
| `/login` | Sign in with a supported OAuth provider. |
|
|
78
|
+
| `/logout` | Remove saved OAuth credentials for a logged-in provider. |
|
|
79
|
+
| `/effort` | Choose low, medium, high, or xhigh reasoning effort. |
|
|
80
|
+
| `/help` | Show commands, current toggles, loaded AGENTS.md files, skills, and MCP servers with on/off state. |
|
|
81
|
+
| `/skill:name` | Insert a discovered skill into the next message. Submit `/skill` or pick `/skill:name` from slash-command autocomplete to choose a skill without auto-submitting. |
|
|
80
82
|
|
|
81
83
|
## Key bindings
|
|
82
84
|
|
|
@@ -85,7 +87,7 @@ Plugins can add more tools, but the core stays intentionally small.
|
|
|
85
87
|
| `Enter` | Submit message |
|
|
86
88
|
| `Shift+Enter` | Insert newline |
|
|
87
89
|
| `Escape` | Dismiss the overlay without changing the draft; otherwise interrupt the running turn; otherwise do nothing |
|
|
88
|
-
| `Tab` | Autocomplete a path, or open the command picker when the draft starts with `/`
|
|
90
|
+
| `Tab` | Autocomplete a path, or open the command picker when the draft starts with `/` without clearing the draft |
|
|
89
91
|
| `Ctrl+R` | Search global raw input history |
|
|
90
92
|
| `Ctrl+C` | Graceful exit |
|
|
91
93
|
| `Ctrl+D` | Graceful exit when the input is empty |
|
|
@@ -105,9 +107,40 @@ $ printf '%s\n' 'fix the failing tests' | mc
|
|
|
105
107
|
- Starts when `-p/--prompt` is provided or when stdin or stdout is not a TTY.
|
|
106
108
|
- If stdout is redirected but stdin is still interactive, pass `-p`; headless mode will not fall back to an interactive prompt.
|
|
107
109
|
- Uses the same parser as the TUI for plain text, `/skill:name`, and standalone image paths.
|
|
110
|
+
- Without `--json`, keeps stdout script-friendly by writing only the final assistant text there, while lightweight assistant commentary snippets from tool-use turns go to stderr.
|
|
108
111
|
- With `--json`, writes NDJSON events for completed assistant/tool-result messages plus `done` / `error` / `aborted` outcomes; queued `user_message` events may also appear. Streaming deltas are omitted.
|
|
109
112
|
- Headless runs still persist like normal sessions and show up in `/session` history for that working directory.
|
|
110
|
-
- Interactive slash commands such as `/model`, `/session`, and `/help` are not available in headless mode.
|
|
113
|
+
- Interactive slash commands such as `/skill` without a name, `/model`, `/session`, `/mcp`, and `/help` are not available in headless mode.
|
|
114
|
+
|
|
115
|
+
## Settings
|
|
116
|
+
|
|
117
|
+
Global defaults live in `~/.config/mini-coder/settings.json`.
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"customProviders": [
|
|
122
|
+
{
|
|
123
|
+
"name": "lm-studio",
|
|
124
|
+
"baseUrl": "http://127.0.0.1:1234/v1"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"mcp": {
|
|
128
|
+
"servers": [
|
|
129
|
+
{
|
|
130
|
+
"name": "docs",
|
|
131
|
+
"url": "http://127.0.0.1:8787/mcp",
|
|
132
|
+
"enabled": true
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
- `mcp.servers` currently supports Streamable HTTP MCP endpoints.
|
|
140
|
+
- Each server `name` becomes the imported tool prefix, so a remote `search` tool appears as `docs__search`.
|
|
141
|
+
- MCP servers with `enabled: true` connect at startup; disabled ones stay disconnected until you turn them back on.
|
|
142
|
+
- Invalid MCP URLs are skipped immediately, and enabled servers that are unreachable are skipped with a warning.
|
|
143
|
+
- `/mcp` can enable or disable configured MCP servers during the current app run, and that on/off state is persisted.
|
|
111
144
|
|
|
112
145
|
## Docs
|
|
113
146
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
cd -- "$(dirname -- "${BASH_SOURCE[0]}")"
|
|
5
|
+
|
|
6
|
+
PYTHONPATH="$PWD/terminal-bench" harbor run -y \
|
|
7
|
+
--job-name benchmark-baseline-full-$(date +%F__%H-%M-%S) \
|
|
8
|
+
--jobs-dir "$PWD/terminal-bench/jobs" \
|
|
9
|
+
--agent-import-path mini_coder_agent:MiniCoderAgent \
|
|
10
|
+
--ak version=0.5.12 \
|
|
11
|
+
--model openai-codex/gpt-5.4 \
|
|
12
|
+
--dataset terminal-bench@2.0 \
|
|
13
|
+
--n-attempts 2 \
|
|
14
|
+
--n-concurrent 2 \
|
|
15
|
+
--max-retries 0
|