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
"description": "Marketplace for RLM-Claude-Code: Recursive Language Model with intelligent multi-provider routing",
3
+
"description": "Marketplace for RLM-Claude-Code: Recursive Language Model with Go hook binaries, cross-plugin event system, and intelligent multi-provider routing",
4
4
"owner": {
5
5
"name": "rand",
6
6
"url": "https://github.com/rand"
@@ -9,8 +9,8 @@
9
9
{
10
10
"name": "rlm-claude-code",
11
11
"source": "./",
12
-
"description": "Recursive Language Model integration for Claude Code - intelligent multi-provider routing and unbounded context handling",
13
-
"version": "0.5.0"
12
+
"description": "Recursive Language Model integration for Claude Code - Go binary hooks (~5ms startup), cross-plugin event coordination (DP/RLM), version-aware config migration, and intelligent multi-provider routing",
Copy file name to clipboardExpand all lines: README.md
+42-12Lines changed: 42 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Transform Claude Code into a Recursive Language Model (RLM) agent with intelligent orchestration, unbounded context handling, persistent memory, and REPL-based decomposition.
4
4
5
-
**rlm-core integration**: This project optionally uses [rlm-core](https://github.com/rand/loop) as the unified RLM orchestration library, providing shared implementations with [recurse](https://github.com/rand/recurse). When rlm-core is installed and `RLM_USE_CORE=true`, Rust-based pattern classification offers 10-50x faster performance. Falls back to Python when unavailable.
5
+
**rlm-core integration**: This project uses [rlm-core](https://github.com/rand/loop)by default as the unified RLM orchestration library, providing shared implementations with [recurse](https://github.com/rand/recurse). rlm-core provides Rust-based pattern classification (10-50x faster) via PyO3 bindings. Falls back to Python automatically when rlm-core is not installed.
6
6
7
7
## What is RLM?
8
8
@@ -40,9 +40,9 @@ uv sync --all-extras
40
40
uv run pytest tests/ -v
41
41
```
42
42
43
-
### Optional: Building rlm-core for Performance
43
+
### Building rlm-core (Enabled by Default)
44
44
45
-
For 10-50x faster pattern classification, build the [rlm-core](https://github.com/rand/loop) Rust library with Python bindings:
45
+
rlm-core is enabled by default for 10-50x faster pattern classification. Build the [rlm-core](https://github.com/rand/loop) Rust library with Python bindings:
46
46
47
47
```bash
48
48
# Clone rlm-core (if not already present)
@@ -103,9 +103,9 @@ cd ~/.claude/plugins/cache/rlm-claude-code/rlm-claude-code/$(ls ~/.claude/plugin
103
103
uv venv && uv sync
104
104
```
105
105
106
-
#### Step 3 (Optional): Enable rlm-core for Performance
106
+
#### Step 3: Install rlm-core for Performance (Enabled by Default)
107
107
108
-
For 10-50x faster pattern classification:
108
+
rlm-core is enabled by default. Install for 10-50x faster pattern classification:
109
109
110
110
```bash
111
111
# First, build rlm-core if you haven't already (see "Building rlm-core" section above)
@@ -266,8 +266,8 @@ Add `"use_rlm_core": true` to `~/.claude/rlm-config.json`:
266
266
267
267
| Setting | Behavior |
268
268
|---------|----------|
269
-
|`use_rlm_core: true`| Use rlm-core Rust bindings (requires installation) |
|`UserPromptSubmit`|`complexity-check`| Decide if RLM should activate, responds to DP phases |
534
+
|`Stop`|`trajectory-save`| Save trajectory and emit `session.ended` event |
535
+
536
+
Prompt-based hooks (no binary needed) handle context sync, output capture, and pre-compaction.
537
+
538
+
#### Cross-Plugin Event System
539
+
540
+
Hooks emit and consume events via `~/.claude/events/`, enabling coordination between plugins (e.g., DP and RLM). All event types have JSON Schema definitions. Python helpers in `src/events/` provide emit/consume APIs.
541
+
542
+
#### Config Migration
543
+
544
+
v0.6.0 introduces a V2 config format. Existing V1 configs are automatically migrated on first run, preserving user customizations.
545
+
546
+
#### Legacy Fallback
547
+
548
+
To use the original Python hook scripts:
549
+
550
+
```bash
551
+
export RLM_USE_LEGACY_HOOKS=1
552
+
```
553
+
554
+
Legacy scripts are located in `scripts/legacy/`.
555
+
556
+
### Legacy Hook Reference
557
+
558
+
The original Python hooks (now in `scripts/legacy/`):
Copy file name to clipboardExpand all lines: agents/rlm-orchestrator.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,6 +45,19 @@ model = cp.Model([x > 5])
45
45
model.solve()
46
46
```
47
47
48
+
## Platform: Parallel Tool Execution
49
+
50
+
When you issue multiple tool calls in a single message, they run in parallel. If **any one call fails** (non-zero exit code), all sibling calls are cancelled with "Sibling tool call errored" — even if those siblings would have succeeded.
51
+
52
+
This matters for exploratory Bash calls: commands like `ls`, `grep`, and `find` return **exit code 1** when they find no matches, which is semantically "no results" but triggers sibling cancellation.
53
+
54
+
When choosing between parallel and sequential tool calls:
55
+
-**Parallel**: when you're confident all calls will succeed (e.g., reading known files, running tested commands)
56
+
-**Sequential**: when calls are exploratory and may legitimately return no results
57
+
-**Guard with `|| true`**: when you want to parallelize uncertain commands without risking cascade failure
58
+
59
+
Prefer Glob and Grep tools over Bash `find`/`grep` for file discovery — they handle no-results gracefully without non-zero exit codes.
60
+
48
61
## Rules
49
62
50
63
1.**Don't request full context dumps** — Use programmatic access
0 commit comments