You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/transformerlab-cli/references/autoresearch.md
+39-3Lines changed: 39 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -219,6 +219,11 @@ The agent loops autonomously. Never ask "should I continue?" — keep going unti
219
219
--param lr=3e-5 --param warmup_steps=500 \
220
220
-m "Bumped lr 1e-5→3e-5, warmup 100→500. Testing whether higher lr clears the eval/loss=2.1 plateau seen in baseline."
221
221
```
222
+
Immediately after queueing, add a structured log line to experiment notes so intent survives even if the session resets before `finalize`:
223
+
```bash
224
+
lab notes append "- $(date +%F): queued <JOB_ID> | intent: <what changed> | hypothesis: <expected metric behavior> | reason: <why this is the next best idea> | expected-risk: <what might break>"
225
+
```
226
+
Get `<JOB_ID>` from the queue command output or from `lab --format json job list | jq '.[-1].id'` if needed.
222
227
6.**Advance.** What this means depends on parallelism:
223
228
-**N = 1 (sequential):** wait for the just-queued job to finish, then go to step 7. Poll with `lab --format json job list --running`.
224
229
-**N ≥ 2 (parallel / fire-and-advance):****do not wait.** Return to step 0 and pick the next idea immediately, until `RUNNING >= N`. Only block when the queue is full. This is what enables grid-style search; waiting after every queue collapses parallelism back to 1.
@@ -234,6 +239,10 @@ The agent loops autonomously. Never ask "should I continue?" — keep going unti
234
239
# If COMPLETE but primary metric did NOT improve over current best → lab job discard <JOB_ID>.
235
240
# If COMPLETE and improved → leave kept. Jobs are kept by default.
236
241
```
242
+
After deciding keep/discard, append a one-line outcome note for each processed job:
243
+
```bash
244
+
lab notes append "- $(date +%F): result <JOB_ID> | <kept|discarded|failed> | <primary_metric>=<value> | delta-vs-best: <+/-> | takeaway: <what to repeat/avoid next> | next: <follow-up idea or 'none'>"
245
+
```
237
246
8.**Loop.**
238
247
239
248
The agent stops the loop only when:
@@ -351,9 +360,9 @@ Do **not** delete the experiment. Do **not** delete jobs. The session record is
351
360
352
361
---
353
362
354
-
## Run descriptions are the durable record
363
+
## Run descriptions + notes are the durable record
355
364
356
-
Because Transformer Lab persists per-job descriptions, **`-m/--description` is the per-run log** — there is no separate `autoresearch.jsonl` to maintain. Treat each description as a mini commit message for that iteration:
365
+
Because Transformer Lab persists per-job descriptions, **`-m/--description` is the per-run log** — and experiment notes are the cross-run narrative. There is no separate `autoresearch.jsonl` to maintain. Treat each description as a mini commit message for that iteration:
357
366
358
367
1. **What changed vs the prior best run** (params, code, infra). If nothing changed, say so.
359
368
2. **What hypothesis is being tested** (why this run is worth doing).
Bad descriptions (`"train model"`, `"another run"`) defeat the entire point — the agent two iterations from now has no idea what was tried.
370
379
380
+
Also mirror each queue/result in `lab notes append` during the loop (not only at finalize). Descriptions are attached to one job; notes capture session-level reasoning and make "why this order of experiments?" visible when reading the full session timeline.
381
+
382
+
### What to capture in `lab notes` beyond the job description
383
+
384
+
Use descriptions for per-job details and notes for cross-job reasoning. A good rule: if the information helps choose the *next* idea, it belongs in notes even when it is also present in `-m`.
385
+
386
+
- **Decision context:** Why this run was chosen over 1–2 alternatives from Backlog.
387
+
- **Risk + guardrails:** What failure mode is expected and which signal confirms it.
388
+
- **Comparative result:** Delta vs baseline and delta vs current best (not just raw metric).
389
+
- **Actionability:** Explicit next step (`repeat`, `widen`, `revert`, `pivot`) and why.
390
+
- **Session-level blockers:** Provider instability, flaky evals, or data issues affecting multiple runs.
391
+
392
+
Compact append examples:
393
+
394
+
```bash
395
+
lab notes append "- $(date +%F): decision | picked JOB <JOB_ID> idea (lr+warmup) over scheduler swap because recent runs suggest under-training, not optimizer instability."
lab notes append "- $(date +%F): blocker | provider cold-start >20m on 2/3 attempts; avoid wide parallel bursts until stable."
398
+
```
399
+
400
+
When notes get long, keep append-only in the hot loop, then periodically consolidate into:
401
+
402
+
1. **Key wins** (what consistently improves the primary metric)
403
+
2. **Dead ends** (what reliably regresses and should not be retried)
404
+
3. **Open hypotheses** (highest-value next experiments)
405
+
4. **Operational caveats** (infra/eval quirks that affect interpretation)
406
+
371
407
---
372
408
373
409
## Loop discipline
374
410
375
411
- **Never stop the loop unless the user interrupts.** The user expects autonomous work.
376
412
- **One iteration per running job slot.** Don't queue past the parallelism budget.
377
413
- **Annotate failures heavily** via `-m`. Discarded ≠ deleted, and the description survives.
378
-
- **Keep the experiment notes honest.** Update **What's been tried** every ~5 runs via `lab notes append`. Re-read with `lab notes show --raw` at the start of every iteration — never skip the rehydrate.
414
+
- **Keep the experiment notes honest.** For every queued job, append intent/hypothesis/reason; for every processed completion, append outcome/takeaway. Continue periodic consolidation of **What's been tried** every ~5 runs. Re-read with `lab notes show --raw` at the start of every iteration — never skip the rehydrate.
379
415
- **Respect provider capacity.** Local providers serialize anyway; SkyPilot/RunPod cost real money — never raise parallelism without explicit user approval.
380
416
- **No `curl` workarounds.** If something seems missing from the CLI, run `lab <cmd> --help`, re-read this file, and tell the user — don't fall back to the REST API. (See the parent skill's "Do NOT call the REST API as a CLI workaround" section.)
0 commit comments