mirror of
https://github.com/instructkr/claw-code.git
synced 2026-04-05 23:54:50 +08:00
Claw already exposes useful orchestration primitives such as session forking, resume, ultraplan, agents, and skills, but compared with OmO/OMX they were still high-friction to discover and re-type during live operator loops. This change makes the REPL act more like an orchestration console by refreshing context-aware tab completions before each prompt, allowing completion after slash-command arguments, and surfacing common workflow paths such as model aliases, permission modes, and recent session IDs. The startup banner and REPL help now advertise that guidance so the capability is visible instead of hidden. Constraint: Keep the improvement low-risk and REPL-local without adding dependencies or new command semantics Rejected: Add a brand new orchestration slash command | higher UX surface area and more docs burden than a discoverability fix Rejected: Implement a persistent HUD/status bar first | higher implementation risk than improving existing command ergonomics Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep dynamic completion candidates aligned with slash-command behavior and session management semantics Tested: cargo test -p rusty-claude-cli Not-tested: Interactive TTY tab-completion behavior in a live terminal session; full clippy remains blocked by pre-existing runtime crate lints
152 lines
4.7 KiB
Markdown
152 lines
4.7 KiB
Markdown
# 🦞 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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
# Or use a proxy
|
|
export ANTHROPIC_BASE_URL="https://your-proxy.com"
|
|
```
|
|
|
|
Or authenticate via OAuth:
|
|
|
|
```bash
|
|
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)
|
|
|
|
Tab completion now expands not just slash command names, but also common workflow arguments like model aliases, permission modes, and recent session IDs.
|
|
|
|
| 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** — `ConversationRuntime` 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.
|