feat(runtime): v0.1.0 — adopt Voyager critic + Mindcraft modes/library/lint
Five concrete patterns from Voyager and Mindcraft, applied in our shape
without abandoning the git-as-evolution-substrate that makes pepa
distinct. Plus a first multi-agent surface so two bots from the same
repo can share intent.
1. runtime/critic.js (Voyager critic.txt)
- Spawns `pi -p` with a JSON-only critic prompt before a proposal is
written. {reasoning, success, critique}.
- success=true short-circuits the proposal (bot recovered between
detector tripping and now), saving Pi tokens on false positives.
- critique is spliced into the proposal body via attachCritique() so
the downstream auto-patcher has a sharp spec.
- Graceful: pi missing / timeout / unparseable JSON → proposal still
filed without the critic block.
2. scripts/lint-patch.js (Mindcraft coder._lintCode)
- Pre-flight gate between Pi commit and npm test: node --check, dynamic
import (catches missing named exports), regex extraction of
runSkill("id") calls cross-checked against the live registry.
- Cheaper than npm test, fails fast with a clear reason.
3. runtime/stuck-incident.renderActionTemplate (Voyager action_template.txt)
- All proposal bodies now follow the same fixed-section layout: Task /
Last result / Execution error / State / Metrics / Journal /
Scenarios / Critique / Fix / Edit scope / Forbidden.
4. runtime/skill-library.js (Mindcraft skill_library.getRelevantSkillDocs)
- Word-overlap ranking (Mindcraft's offline fallback) — zero deps,
deterministic. auto-patch.js injects top-3 similar skills into the
Pi prompt as "look at these patterns".
5. runtime/modes.js (Mindcraft modes.js)
- Declarative {name, interrupts, on, active, update(ctx)} chain that
runs BEFORE the curriculum each tick.
- Ships self_preservation (low HP → eat/flee), hunger (food<14 → eat),
night_shelter (night + bed in hand → sleep). Cleaner than ad-hoc
lastFleeAttempt cooldowns in reflex.js.
6. runtime/social/conversation.js + cmd:conv-say/conv-recent/conv-list
- File-JSONL topic channel so two bots from the same repo (different
usernames, different host dirs under state/) can append turns and
read peers. Skeleton — multi-agent collaboration on top later.
Differentiator preserved: every Pi-written skill still lands on main via
auto-patch.js (real git branch + smoke gate + cherry-pick). Voyager
keeps skills in a Chroma JSON, Mindcraft keeps them in RAM — pepa keeps
them as versioned source code reviewable in `git log`.
package.json: 0.0.1 → 0.1.0. 174/174 tests pass. README + AGENTS updated.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,30 @@
|
||||
> reflex/action in `runtime/` over an extension in `extensions/` — the
|
||||
> hybrid runtime is where new work lands going forward.
|
||||
|
||||
> **v0.1.0 — self-improvement loop hardened (2026-05-26).** New runtime
|
||||
> subsystems landed in the hybrid runtime and shape how new skills get
|
||||
> proposed and accepted:
|
||||
> - `runtime/critic.js` — Voyager-style pre-flight critic (Pi judges
|
||||
> "did the bot really fail?" before a proposal is written;
|
||||
> `success=true` short-circuits the proposal).
|
||||
> - `runtime/modes.js` — Mindcraft-style priority chain
|
||||
> (`self_preservation > hunger > night_shelter`) that runs **before**
|
||||
> the curriculum and can interrupt it.
|
||||
> - `runtime/skill-library.js` — top-k similar skills retrieved by word
|
||||
> overlap and injected into `auto-patch.js` Pi prompt so new skills
|
||||
> crib patterns from working ones.
|
||||
> - `runtime/perception.js` — numeric-id `findBlocks` wrapper. Don't write
|
||||
> `bot.findBlock({matching: (b) => ...b.name...})` — under ViaBackwards
|
||||
> `.name` is wrong inside the callback (see mineflayer #2347).
|
||||
> - `runtime/social/conversation.js` — file-JSONL multi-agent topics with
|
||||
> IPC commands `cmd:conv-say|conv-recent|conv-list`.
|
||||
> - `scripts/lint-patch.js` — pre-flight gate that catches parse errors,
|
||||
> missing named imports, and `runSkill("unknown.id")` before `npm test`.
|
||||
> - Proposals are rendered through `renderActionTemplate()` —
|
||||
> Voyager `action_template.txt` schema (Task / Last result / Execution
|
||||
> error / State / Metrics / Journal / Scenario memory / Critique / Fix
|
||||
> / Edit scope / Forbidden). Stable layout = Pi scans faster.
|
||||
|
||||
> **Product pivot (2026-05-25, Phase 0).** The bot is no longer a remote
|
||||
> control for operators or players. It is becoming a self-sufficient survival
|
||||
> resident of the configured Minecraft server. **Minecraft chat is
|
||||
|
||||
Reference in New Issue
Block a user