Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,7 @@ build/
*.egg-info/
dist/
wheels/
*.so
*.so
recordings/
server.*
environment_files/
81 changes: 81 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ members = [
]
exclude = [
"target",
"examples/arc-lmm-agent",
"examples/chat",
]

[workspace.dependencies]
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
[![LMM](https://wiseai.dev/assets/logo.png)](https://wiseai.dev)

[![Work In Progress](https://img.shields.io/badge/Work%20In%20Progress-orange)](https://github.com/wiseaidotdev/lmm)
[![ASI](https://img.shields.io/badge/ASI-10.71%25-brown)](https://arcprize.org/replay/8471c865-4c54-40c5-a523-dcaa681aa4f1)
[![ASI (Best Run)](https://img.shields.io/badge/ASI-14.55%25-brown)](https://arcprize.org/replay/69c86b04-c9ff-4ae2-98e8-eade2e4c2214)
[![Crates.io](https://img.shields.io/crates/v/lmm.svg)](https://crates.io/crates/lmm)
[![Docs.rs](https://docs.rs/lmm/badge.svg)](https://docs.rs/lmm)
[![Crates.io Downloads](https://img.shields.io/crates/d/lmm)](https://crates.io/crates/lmm)
Expand Down
46 changes: 12 additions & 34 deletions examples/arc-lmm-agent/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions examples/arc-lmm-agent/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ name = "arc-lmm-agent"
path = "src/main.rs"

[dependencies]
lmm-agent = { path = "../../lmm-agent" }
lmm-agent = { version = "0.1.2" }
arc-agi-rs = { version = "0.1.0" }
tokio = { version = "1.52.1", features = ["full"] }
anyhow = "1.0.102"
Expand All @@ -24,6 +24,6 @@ serde_json = "1.0.149"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] }
clap = { version = "4.6.1", features = ["derive"] }
rand = "0.8.5"
indicatif = "0.18"
owo-colors = "4"
rand = "0.10.1"
indicatif = "0.18.4"
owo-colors = "4.3.0"
8 changes: 4 additions & 4 deletions examples/arc-lmm-agent/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

# 🕹️ arc-lmm-agent

[![ASI](https://img.shields.io/badge/ASI-10.71%25-brown)](https://arcprize.org/replay/8471c865-4c54-40c5-a523-dcaa681aa4f1)
[![ASI (Best Run)](https://img.shields.io/badge/ASI-14.55%25-brown)](https://arcprize.org/replay/69c86b04-c9ff-4ae2-98e8-eade2e4c2214)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](../../LICENSE)

[![ls20-arc-lmm.gif](./assets/ls20-arc-lmm.gif)](https://arcprize.org/replay/8471c865-4c54-40c5-a523-dcaa681aa4f1)
[![ls20-arc-lmm.gif](./assets/ls20-arc-lmm.gif)](https://arcprize.org/replay/69c86b04-c9ff-4ae2-98e8-eade2e4c2214)

> `arc-lmm-agent` is an autonomous navigation solver for ARC-AGI interactive environments (`ls20` game atm). It uses an episodic framework, progressive strategy learning, and robust world modeling to dynamically maneuver through complex grids, interact with rotation modifiers, systematically collect step-boosters, and reach the target zones across escalating levels.

Expand Down Expand Up @@ -94,8 +94,8 @@ When all else fails (no plan, no known targets, nothing visible on radar), the a
The solver natively utilizes the overarching `lmm-agent` architecture for generalized intelligence logic:

1. **`InternalDrive`**: The agent fires intrinsic reward/motivation signals. If the agent finds a new bonus position or discovers a completely unvisited tile, the `Curiosity` drive spikes. If the agent bumps into a newly discovered wall and loses a turn, the `Incoherence` drive registers the penalty, adjusting future behavioral tolerances.
2. **`KnowledgeIndex` (Cross-Level Transfer)**: As the agent completes `Level N`, it synthesizes the trial's metadata into narrative English (e.g. *"Level 0 completed after 1 mod interactions and 0 bonuses... "*). This raw text is dynamically ingested into the localized `KnowledgeIndex`. When `Level N+1` begins, this long-term semantic memory primes the agent about the nature of the puzzles it will likely encounter.
3. **`LearningEngine` (HELM)**: Traditional tabular Q-learning shapes underlying values. The agent emits a continuous localized Bellman reward stream (+10 for activating a modifier, +50 for moving closer to the target post-modifier, -1.0 for wall collisions) to fine-tune the `NOVELTY` fallback recommendations.
1. **`KnowledgeIndex` (Cross-Level Transfer)**: As the agent completes `Level N`, it synthesizes the trial's metadata into narrative English (e.g. *"Level 0 completed after 1 mod interactions and 0 bonuses... "*). This raw text is dynamically ingested into the localized `KnowledgeIndex`. When `Level N+1` begins, this long-term semantic memory primes the agent about the nature of the puzzles it will likely encounter.
1. **`LearningEngine` (HELM)**: Traditional tabular Q-learning shapes underlying values. The agent emits a continuous localized Bellman reward stream (+10 for activating a modifier, +50 for moving closer to the target post-modifier, -1.0 for wall collisions) to fine-tune the `NOVELTY` fallback recommendations.


## 🕹️ Run the agent
Expand Down
Binary file modified examples/arc-lmm-agent/assets/ls20-arc-lmm.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 33 additions & 0 deletions examples/arc-lmm-agent/src/display.rs
Original file line number Diff line number Diff line change
Expand Up @@ -400,3 +400,36 @@ pub fn print_plan_invalidated() {
"Plan invalidated (wall/unavailable)".dimmed()
);
}

/// Prints when a launch-pedal is detected from a large position jump.
pub fn print_pedal_detected(from: (usize, usize), to: (usize, usize), delta: usize) {
eprintln!(
" {} {} {} → {} {}",
"⚡".yellow().bold(),
"PEDAL detected".bright_yellow().bold(),
format!("({},{})", from.0, from.1).bright_white(),
format!("({},{})", to.0, to.1).bright_white(),
format!("Δ={delta}px").dimmed(),
);
}

/// Prints when a colorful novel object is discovered during exploration.
pub fn print_novel_object_found(pos: (usize, usize)) {
eprintln!(
" {} {} {}",
"🎨".dimmed(),
"Novel object found".bright_cyan().bold(),
format!("at ({},{})", pos.0, pos.1).bright_white(),
);
}

/// Prints when the agent learns that touching a novel object re-colors the target.
pub fn print_novel_object_learned() {
eprintln!(
" {} {}",
"🧩".dimmed(),
"LEARNED: novel object changes target color!"
.bright_green()
.bold(),
);
}
Loading
Loading