Files
claw-code/rust
Yeachan-Heo 782d9cea71 Preserve ILM-style conversation continuity during auto compaction
Auto compaction was keying off cumulative usage and re-summarizing from the front of the session, which made long chats shed continuity after the first compaction. The runtime now compacts against the current turn's prompt pressure and preserves prior compacted context as retained summary state instead of treating it like disposable history.

Constraint: Existing /compact behavior and saved-session resume flow had to keep working without schema changes
Rejected: Keep using cumulative input tokens | caused repeat compaction after every subsequent turn once the threshold was crossed
Rejected: Re-summarize prior compacted system messages as ordinary history | degraded continuity and could drop earlier context
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Preserve compacted-summary boundaries when extending compaction again; do not fold prior compacted context back into raw-message removal
Tested: cargo fmt --check; cargo clippy -p runtime -p commands --tests -- -D warnings; cargo test -p runtime; cargo test -p commands
Not-tested: End-to-end interactive CLI auto-compaction against a live Anthropic session
2026-04-01 08:06:10 +00:00
..
2026-04-01 07:11:25 +00:00
2026-03-31 17:43:09 +00:00

🦞 Claw Code — Rust Implementation

A high-performance Rust rewrite of the Claw Code CLI agent harness. Built for speed, safety, and native tool execution.

Quick Start

# Build
cd rust/
cargo build --release

# Run interactive REPL
./target/release/claw

# One-shot prompt
./target/release/claw prompt "explain this codebase"

# With specific model
./target/release/claw --model sonnet prompt "fix the bug in main.rs"

Configuration

Set your API credentials:

export ANTHROPIC_API_KEY="sk-ant-..."
# Or use a proxy
export ANTHROPIC_BASE_URL="https://your-proxy.com"

Or authenticate via OAuth:

claw login

Features

Feature Status
Anthropic API + streaming
OAuth login/logout
Interactive REPL (rustyline)
Tool system (bash, read, write, edit, grep, glob)
Web tools (search, fetch)
Sub-agent orchestration
Todo tracking
Notebook editing
CLAUDE.md / project memory
Config file hierarchy (.claude.json)
Permission system
MCP server lifecycle
Session persistence + resume
Extended thinking (thinking blocks)
Cost tracking + usage display
Git integration
Markdown terminal rendering (ANSI)
Model aliases (opus/sonnet/haiku)
Slash commands (/status, /compact, /clear, etc.)
Hooks (PreToolUse/PostToolUse) 🔧 Config only
Plugin system 📋 Planned
Skills registry 📋 Planned

Model Aliases

Short names resolve to the latest model versions:

Alias Resolves To
opus claude-opus-4-6
sonnet claude-sonnet-4-6
haiku claude-haiku-4-5-20251213

CLI Flags

claw [OPTIONS] [COMMAND]

Options:
  --model MODEL                    Set the model (alias or full name)
  --dangerously-skip-permissions   Skip all permission checks
  --permission-mode MODE           Set read-only, workspace-write, or danger-full-access
  --allowedTools TOOLS             Restrict enabled tools
  --output-format FORMAT           Output format (text or json)
  --version, -V                    Print version info

Commands:
  prompt <text>      One-shot prompt (non-interactive)
  login              Authenticate via OAuth
  logout             Clear stored credentials
  init               Initialize project config
  doctor             Check environment health
  self-update        Update to latest version

Slash Commands (REPL)

Command Description
/help Show help
/status Show session status (model, tokens, cost)
/cost Show cost breakdown
/compact Compact conversation history
/clear Clear conversation
/model [name] Show or switch model
/permissions Show or switch permission mode
/config [section] Show config (env, hooks, model)
/memory Show CLAUDE.md contents
/diff Show git diff
/export [path] Export conversation
/session [id] Resume a previous session
/version Show version

Workspace Layout

rust/
├── Cargo.toml              # Workspace root
├── Cargo.lock
└── crates/
    ├── api/                # Anthropic API client + SSE streaming
    ├── commands/           # Shared slash-command registry
    ├── compat-harness/     # TS manifest extraction harness
    ├── runtime/            # Session, config, permissions, MCP, prompts
    ├── rusty-claude-cli/   # Main CLI binary (`claw`)
    └── tools/              # Built-in tool implementations

Crate Responsibilities

  • api — HTTP client, SSE stream parser, request/response types, auth (API key + OAuth bearer)
  • commands — Slash command definitions and help text generation
  • compat-harness — Extracts tool/prompt manifests from upstream TS source
  • runtimeConversationRuntime agentic loop, ConfigLoader hierarchy, Session persistence, permission policy, MCP client, system prompt assembly, usage tracking
  • rusty-claude-cli — REPL, one-shot prompt, streaming display, tool call rendering, CLI argument parsing
  • tools — Tool specs + execution: Bash, ReadFile, WriteFile, EditFile, GlobSearch, GrepSearch, WebSearch, WebFetch, Agent, TodoWrite, NotebookEdit, Skill, ToolSearch, REPL runtimes

Stats

  • ~20K lines of Rust
  • 6 crates in workspace
  • Binary name: claw
  • Default model: claude-opus-4-6
  • Default permissions: danger-full-access

License

See repository root.