mirror of
https://github.com/lWolvesl/claw-code.git
synced 2026-04-02 07:41:52 +08:00
The remaining slash commands already existed in the REPL path, so this change focuses on wiring the active CLI parser and runtime to expose them safely. `--version` now exits through a local reporting path, and `--allowedTools` constrains both advertised and executable tools without changing the underlying command surface. Constraint: The active CLI parser lives in main.rs, so a full parser unification would be broader than requested Constraint: --version must not require API credentials or construct the API client Rejected: Migrate the binary to the clap parser in args.rs | too large for a parity patch Rejected: Enforce allowed tools only at request construction time | execution-time mismatch risk Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep local-only flags like --version on pre-runtime codepaths and mirror tool allowlists in both definition and execution paths Tested: cargo fmt; cargo clippy --workspace --all-targets -- -D warnings; cargo test; cargo run -q -p rusty-claude-cli -- --version; cargo run -q -p rusty-claude-cli -- --help Not-tested: Interactive live API conversation with restricted tool allowlists
176 lines
4.9 KiB
Markdown
176 lines
4.9 KiB
Markdown
# Rusty Claude CLI
|
|
|
|
`rust/` contains the Rust workspace for the integrated `rusty-claude-cli` deliverable.
|
|
It is intended to be something you can clone, build, and run directly.
|
|
|
|
## Workspace layout
|
|
|
|
```text
|
|
rust/
|
|
├── Cargo.toml
|
|
├── Cargo.lock
|
|
├── README.md
|
|
└── crates/
|
|
├── api/ # Anthropic API client + SSE streaming support
|
|
├── commands/ # Shared slash-command metadata/help surfaces
|
|
├── compat-harness/ # Upstream TS manifest extraction harness
|
|
├── runtime/ # Session/runtime/config/prompt orchestration
|
|
├── rusty-claude-cli/ # Main CLI binary
|
|
└── tools/ # Built-in tool implementations
|
|
```
|
|
|
|
## Prerequisites
|
|
|
|
- Rust toolchain installed (`rustup`, stable toolchain)
|
|
- Network access and Anthropic credentials for live prompt/REPL usage
|
|
|
|
## Build
|
|
|
|
From the repository root:
|
|
|
|
```bash
|
|
cd rust
|
|
cargo build --release -p rusty-claude-cli
|
|
```
|
|
|
|
The optimized binary will be written to:
|
|
|
|
```bash
|
|
./target/release/rusty-claude-cli
|
|
```
|
|
|
|
## Test
|
|
|
|
Run the verified workspace test suite used for release-readiness:
|
|
|
|
```bash
|
|
cd rust
|
|
cargo test --workspace --exclude compat-harness
|
|
```
|
|
|
|
## Quick start
|
|
|
|
### Show help
|
|
|
|
```bash
|
|
cd rust
|
|
cargo run -p rusty-claude-cli -- --help
|
|
```
|
|
|
|
### Print version
|
|
|
|
```bash
|
|
cd rust
|
|
cargo run -p rusty-claude-cli -- --version
|
|
```
|
|
|
|
## Usage examples
|
|
|
|
### 1) Prompt mode
|
|
|
|
Send one prompt, stream the answer, then exit:
|
|
|
|
```bash
|
|
cd rust
|
|
cargo run -p rusty-claude-cli -- prompt "Summarize the architecture of this repository"
|
|
```
|
|
|
|
Use a specific model:
|
|
|
|
```bash
|
|
cd rust
|
|
cargo run -p rusty-claude-cli -- --model claude-sonnet-4-20250514 prompt "List the key crates in this workspace"
|
|
```
|
|
|
|
### 2) REPL mode
|
|
|
|
Start the interactive shell:
|
|
|
|
```bash
|
|
cd rust
|
|
cargo run -p rusty-claude-cli --
|
|
```
|
|
|
|
Inside the REPL, useful commands include:
|
|
|
|
```text
|
|
/help
|
|
/status
|
|
/model claude-sonnet-4-20250514
|
|
/permissions workspace-write
|
|
/cost
|
|
/compact
|
|
/memory
|
|
/config
|
|
/init
|
|
/exit
|
|
```
|
|
|
|
### 3) Resume an existing session
|
|
|
|
Inspect or maintain a saved session file without entering the REPL:
|
|
|
|
```bash
|
|
cd rust
|
|
cargo run -p rusty-claude-cli -- --resume session.json /status /compact /cost
|
|
```
|
|
|
|
You can also inspect memory/config state for a restored session:
|
|
|
|
```bash
|
|
cd rust
|
|
cargo run -p rusty-claude-cli -- --resume session.json /memory /config
|
|
```
|
|
|
|
## Available commands
|
|
|
|
### Top-level CLI commands
|
|
|
|
- `prompt <text...>` — run one prompt non-interactively
|
|
- `--resume <session.json> [/commands...]` — inspect or maintain a saved session
|
|
- `dump-manifests` — print extracted upstream manifest counts
|
|
- `bootstrap-plan` — print the current bootstrap skeleton
|
|
- `system-prompt [--cwd PATH] [--date YYYY-MM-DD]` — render the synthesized system prompt
|
|
- `--help` / `-h` — show CLI help
|
|
- `--version` / `-V` — print the CLI version and build info locally (no API call)
|
|
- `--output-format text|json` — choose non-interactive prompt output rendering
|
|
- `--allowedTools <tool[,tool...]>` — restrict enabled tools for interactive sessions and prompt-mode tool use
|
|
|
|
### Interactive slash commands
|
|
|
|
- `/help` — show command help
|
|
- `/status` — show current session status
|
|
- `/compact` — compact local session history
|
|
- `/model [model]` — inspect or switch the active model
|
|
- `/permissions [read-only|workspace-write|danger-full-access]` — inspect or switch permissions
|
|
- `/clear [--confirm]` — clear the current local session
|
|
- `/cost` — show token usage totals
|
|
- `/resume <session-path>` — load a saved session into the REPL
|
|
- `/config [env|hooks|model]` — inspect discovered Claude config
|
|
- `/memory` — inspect loaded instruction memory files
|
|
- `/init` — create a starter `CLAUDE.md`
|
|
- `/exit` — leave the REPL
|
|
|
|
## Environment variables
|
|
|
|
### Anthropic/API
|
|
|
|
- `ANTHROPIC_AUTH_TOKEN` — preferred bearer token for API auth
|
|
- `ANTHROPIC_API_KEY` — legacy API key fallback if auth token is unset
|
|
- `ANTHROPIC_BASE_URL` — override the Anthropic API base URL
|
|
- `ANTHROPIC_MODEL` — default model used by selected live integration tests
|
|
|
|
### CLI/runtime
|
|
|
|
- `RUSTY_CLAUDE_PERMISSION_MODE` — default REPL permission mode (`read-only`, `workspace-write`, or `danger-full-access`)
|
|
- `CLAUDE_CONFIG_HOME` — override Claude config discovery root
|
|
- `CLAUDE_CODE_REMOTE` — enable remote-session bootstrap handling when supported
|
|
- `CLAUDE_CODE_REMOTE_SESSION_ID` — remote session identifier when using remote mode
|
|
- `CLAUDE_CODE_UPSTREAM` — override the upstream TS source path for compat-harness extraction
|
|
- `CLAWD_WEB_SEARCH_BASE_URL` — override the built-in web search service endpoint used by tooling
|
|
|
|
## Notes
|
|
|
|
- `compat-harness` exists to compare the Rust port against the upstream TypeScript codebase and is intentionally excluded from the requested release test run.
|
|
- The CLI currently focuses on a practical integrated workflow: prompt execution, REPL operation, session inspection/resume, config discovery, and tool/runtime plumbing.
|