mirror of
https://github.com/instructkr/claw-code.git
synced 2026-04-04 07:54:48 +08:00
Some tools, especially Read, can emit very large payloads that overwhelm the interactive renderer. This change truncates only the displayed preview for long tool outputs while leaving the underlying tool result string untouched for downstream logic and persisted session state. Constraint: Rendering changes must not modify stored tool outputs or tool-result messages Rejected: Truncate tool output before returning from the executor | would corrupt session history and downstream processing Confidence: high Scope-risk: narrow Directive: Keep truncation strictly in presentation helpers; do not move it into tool execution or session persistence paths Tested: cargo test -p rusty-claude-cli tool_rendering_truncates_ -- --nocapture; cargo test -p rusty-claude-cli tool_rendering_helpers_compact_output -- --nocapture Not-tested: Manual terminal rendering with real multi-megabyte tool output
🦞 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
- runtime —
ConversationRuntimeagentic loop,ConfigLoaderhierarchy,Sessionpersistence, 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.