Add README with project overview and architecture details
Added detailed documentation for the repository, including project descriptions, architecture, tech stack, and comparison of subprojects.
This commit is contained in:
270
README.MD
Normal file
270
README.MD
Normal file
@@ -0,0 +1,270 @@
|
|||||||
|
|
||||||
|
# collection of claude-code-source-code
|
||||||
|
|
||||||
|
> Source archive of Claude Code and a clean-room Python rewrite research repository
|
||||||
|
|
||||||
|
This repository contains two subprojects that study Claude Code (Anthropic’s official CLI tool) from two different angles:
|
||||||
|
|
||||||
|
| Subproject | Language | Nature | File Count |
|
||||||
|
| ----------------------------------------------------- | ---------- | ----------------------------------- | ----------- |
|
||||||
|
| [claude-code-source-code](#1-claude-code-source-code) | TypeScript | Decompiled source archive (v2.1.88) | 1,884 files |
|
||||||
|
| [claw-code](#2-claw-code) | Python | Clean-room architectural rewrite | 66 files |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. claude-code-source-code
|
||||||
|
|
||||||
|
A decompiled/unpacked source archive of Claude Code v2.1.88, reconstructed from the npm package `@anthropic-ai/claude-code@2.1.88`, containing approximately 163,318 lines of TypeScript code.
|
||||||
|
|
||||||
|
### Overall Architecture
|
||||||
|
|
||||||
|
```text
|
||||||
|
claude-code-source-code/
|
||||||
|
├── src/
|
||||||
|
│ ├── main.tsx # CLI entry and REPL bootstrap (4,683 lines)
|
||||||
|
│ ├── query.ts # Core main agent loop (largest single file, 785KB)
|
||||||
|
│ ├── QueryEngine.ts # SDK/Headless query lifecycle engine
|
||||||
|
│ ├── Tool.ts # Tool interface definitions + buildTool factory
|
||||||
|
│ ├── commands.ts # Slash command definitions (~25K lines)
|
||||||
|
│ ├── tools.ts # Tool registration and presets
|
||||||
|
│ ├── context.ts # User input context handling
|
||||||
|
│ ├── history.ts # Session history management
|
||||||
|
│ ├── cost-tracker.ts # API cost tracking
|
||||||
|
│ ├── setup.ts # First-run initialization
|
||||||
|
│ │
|
||||||
|
│ ├── cli/ # CLI infrastructure (stdio, structured transports)
|
||||||
|
│ ├── commands/ # ~87 slash command implementations
|
||||||
|
│ ├── components/ # React/Ink terminal UI (33 subdirectories)
|
||||||
|
│ ├── tools/ # 40+ tool implementations (44 subdirectories)
|
||||||
|
│ ├── services/ # Business logic layer (22 subdirectories)
|
||||||
|
│ ├── utils/ # Utility function library
|
||||||
|
│ ├── state/ # Application state management
|
||||||
|
│ ├── types/ # TypeScript type definitions
|
||||||
|
│ ├── hooks/ # React Hooks
|
||||||
|
│ ├── bridge/ # Claude Desktop remote bridge
|
||||||
|
│ ├── remote/ # Remote mode
|
||||||
|
│ ├── coordinator/ # Multi-agent coordination
|
||||||
|
│ ├── tasks/ # Task management
|
||||||
|
│ ├── assistant/ # KAIROS assistant mode
|
||||||
|
│ ├── memdir/ # Long-term memory management
|
||||||
|
│ ├── plugins/ # Plugin system
|
||||||
|
│ ├── voice/ # Voice mode
|
||||||
|
│ └── vim/ # Vim mode
|
||||||
|
│
|
||||||
|
├── docs/ # In-depth analysis docs (bilingual: Chinese/English)
|
||||||
|
│ ├── en/ # English analysis
|
||||||
|
│ └── zh/ # Chinese analysis
|
||||||
|
├── vendor/ # Third-party dependencies
|
||||||
|
├── stubs/ # Module stubs
|
||||||
|
├── types/ # Global type definitions
|
||||||
|
├── utils/ # Top-level utility functions
|
||||||
|
├── scripts/ # Build scripts
|
||||||
|
└── package.json
|
||||||
|
```
|
||||||
|
|
||||||
|
### Core Execution Flow
|
||||||
|
|
||||||
|
```text
|
||||||
|
User Input
|
||||||
|
↓
|
||||||
|
processUserInput() # Parse /slash commands
|
||||||
|
↓
|
||||||
|
query() # Main agent loop (query.ts)
|
||||||
|
├── fetchSystemPromptParts() # Assemble system prompt
|
||||||
|
├── StreamingToolExecutor # Parallel tool execution
|
||||||
|
├── autoCompact() # Automatic context compression
|
||||||
|
└── runTools() # Tool orchestration and scheduling
|
||||||
|
↓
|
||||||
|
yield SDKMessage # Stream results back to the consumer
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tech Stack
|
||||||
|
|
||||||
|
| Component | Technology |
|
||||||
|
| --------------- | ---------------------------------------- |
|
||||||
|
| Language | TypeScript 6.0+ |
|
||||||
|
| Runtime | Bun (compiled into Node.js >= 18 bundle) |
|
||||||
|
| Claude API | Anthropic SDK |
|
||||||
|
| Terminal UI | React + Ink |
|
||||||
|
| Code Bundling | esbuild |
|
||||||
|
| Data Validation | Zod |
|
||||||
|
| Tool Protocol | MCP (Model Context Protocol) |
|
||||||
|
|
||||||
|
### Main Module Descriptions
|
||||||
|
|
||||||
|
#### Tool System (40+ tools)
|
||||||
|
|
||||||
|
| Category | Tools |
|
||||||
|
| --------------------------- | --------------------------------------------------------- |
|
||||||
|
| File Operations | FileReadTool, FileEditTool, FileWriteTool |
|
||||||
|
| Code Search | GlobTool, GrepTool |
|
||||||
|
| System Execution | BashTool |
|
||||||
|
| Web Access | WebFetchTool, WebSearchTool |
|
||||||
|
| Task Management | TaskCreateTool, TaskUpdateTool, TaskGetTool, TaskListTool |
|
||||||
|
| Sub-agents | AgentTool |
|
||||||
|
| Code Environments | NotebookEditTool, REPLTool, LSPTool |
|
||||||
|
| Git Workflow | EnterWorktreeTool, ExitWorktreeTool |
|
||||||
|
| Configuration & Permissions | ConfigTool, AskUserQuestionTool |
|
||||||
|
| Memory & Planning | TodoWriteTool, EnterPlanModeTool, ExitPlanModeTool |
|
||||||
|
| Automation | ScheduleCronTool, RemoteTriggerTool, SleepTool |
|
||||||
|
| MCP Integration | MCPTool |
|
||||||
|
|
||||||
|
#### Slash Commands (~87)
|
||||||
|
|
||||||
|
`/commit` `/commit-push-pr` `/review` `/resume` `/session` `/memory` `/config` `/skills` `/help` `/voice` `/desktop` `/mcp` `/permissions` `/theme` `/vim` `/copy` and more
|
||||||
|
|
||||||
|
#### Permission System
|
||||||
|
|
||||||
|
* Three modes: `default` (ask user) / `bypass` (auto-allow) / `strict` (auto-deny)
|
||||||
|
* Tool-level fine-grained control
|
||||||
|
* ML-based automated permission inference classifier
|
||||||
|
* Persistent storage of permission rules
|
||||||
|
|
||||||
|
#### Context Management
|
||||||
|
|
||||||
|
* Automatic compression strategies (`autoCompact`): reactive compression, micro-compression, trimmed compression
|
||||||
|
* Context collapsing (`CONTEXT_COLLAPSE`)
|
||||||
|
* Token counting and estimation
|
||||||
|
* Session transcript persistence
|
||||||
|
|
||||||
|
#### Analysis Documents (`docs/`)
|
||||||
|
|
||||||
|
| Document | Content |
|
||||||
|
| ------------------------------------------ | --------------------------------------------------------------------------------- |
|
||||||
|
| 01 - Telemetry and Privacy | Dual-layer analysis pipeline (Anthropic + Datadog), with no opt-out switch |
|
||||||
|
| 02 - Hidden Features and Model Codenames | Internal codenames such as Capybara, Tengu, Fennec, Numbat |
|
||||||
|
| 03 - Undercover Mode | Anthropic employees automatically entering undercover mode in public repositories |
|
||||||
|
| 04 - Remote Control and Emergency Switches | Hourly polling, 6+ killswitches, dangerous-change popups |
|
||||||
|
| 05 - Future Roadmap | KAIROS autonomous agent, voice mode, 17 unreleased tools |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. claw-code
|
||||||
|
|
||||||
|
A clean-room Python rewrite of Claude Code (without including original source copies), focused on architectural mirroring and research. Built by [@instructkr](https://github.com/instructkr) (Sigrid Jin), and became one of the fastest GitHub repositories in the world to reach 30K stars.
|
||||||
|
|
||||||
|
### Overall Architecture
|
||||||
|
|
||||||
|
```text
|
||||||
|
claw-code/
|
||||||
|
├── src/
|
||||||
|
│ ├── __init__.py # Package export interface
|
||||||
|
│ ├── main.py # CLI entry (~200 lines)
|
||||||
|
│ ├── query_engine.py # Core query engine
|
||||||
|
│ ├── runtime.py # Runtime session management
|
||||||
|
│ ├── models.py # Shared data classes
|
||||||
|
│ ├── commands.py # Command metadata and execution framework
|
||||||
|
│ ├── tools.py # Tool metadata and execution framework
|
||||||
|
│ ├── permissions.py # Permission context management
|
||||||
|
│ ├── context.py # Ported context layer
|
||||||
|
│ ├── setup.py # Workspace initialization
|
||||||
|
│ ├── session_store.py # Session persistence
|
||||||
|
│ ├── transcript.py # Session transcript storage
|
||||||
|
│ ├── port_manifest.py # Workspace manifest generation
|
||||||
|
│ ├── execution_registry.py # Execution registry
|
||||||
|
│ ├── history.py # History logs
|
||||||
|
│ ├── parity_audit.py # Parity audit against TypeScript source
|
||||||
|
│ ├── remote_runtime.py # Remote mode simulation
|
||||||
|
│ ├── bootstrap_graph.py # Bootstrap graph generation
|
||||||
|
│ ├── command_graph.py # Command graph partitioning
|
||||||
|
│ ├── tool_pool.py # Tool pool assembly
|
||||||
|
│ │
|
||||||
|
│ ├── reference_data/ # JSON snapshot data (drives command/tool metadata)
|
||||||
|
│ │ ├── commands_snapshot.json
|
||||||
|
│ │ └── tools_snapshot.json
|
||||||
|
│ │
|
||||||
|
│ ├── commands/ # Command implementation subdirectory
|
||||||
|
│ ├── tools/ # Tool implementation subdirectory
|
||||||
|
│ ├── services/ # Business logic services
|
||||||
|
│ ├── components/ # Terminal UI components (Python version)
|
||||||
|
│ ├── state/ # State management
|
||||||
|
│ ├── types/ # Type definitions
|
||||||
|
│ ├── utils/ # Utility functions
|
||||||
|
│ ├── remote/ # Remote mode
|
||||||
|
│ ├── bridge/ # Bridge modules
|
||||||
|
│ ├── hooks/ # Hook system
|
||||||
|
│ ├── memdir/ # Memory management
|
||||||
|
│ ├── vim/ # Vim mode
|
||||||
|
│ ├── voice/ # Voice mode
|
||||||
|
│ └── plugins/ # Plugin system
|
||||||
|
│
|
||||||
|
└── tests/ # Validation tests
|
||||||
|
```
|
||||||
|
|
||||||
|
### Core Classes
|
||||||
|
|
||||||
|
| Class / Module | Responsibility |
|
||||||
|
| ----------------------- | ----------------------------------------------------------------------------------- |
|
||||||
|
| `QueryEnginePort` | Query engine handling message submission, streaming output, and session compression |
|
||||||
|
| `PortRuntime` | Runtime manager responsible for routing, session startup, and turn-loop execution |
|
||||||
|
| `PortManifest` | Workspace manifest that generates Markdown overviews |
|
||||||
|
| `ToolPermissionContext` | Tool permission context (`allow` / `deny` / `ask`) |
|
||||||
|
| `WorkspaceSetup` | Environment detection and initialization reporting |
|
||||||
|
| `TranscriptStore` | Session transcript storage with append, compaction, and replay support |
|
||||||
|
|
||||||
|
### CLI Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 -m src.main [COMMAND]
|
||||||
|
|
||||||
|
# Overview
|
||||||
|
summary # Markdown workspace overview
|
||||||
|
manifest # Print manifest
|
||||||
|
subsystems # List Python modules
|
||||||
|
|
||||||
|
# Routing and indexing
|
||||||
|
commands # List all commands
|
||||||
|
tools # List all tools
|
||||||
|
route [PROMPT] # Route prompt to corresponding command/tool
|
||||||
|
|
||||||
|
# Execution
|
||||||
|
bootstrap [PROMPT] # Start runtime session
|
||||||
|
turn-loop [PROMPT] # Run turn loop (--max-turns)
|
||||||
|
exec-command NAME # Execute command
|
||||||
|
exec-tool NAME # Execute tool
|
||||||
|
|
||||||
|
# Session management
|
||||||
|
flush-transcript # Persist session transcript
|
||||||
|
load-session ID # Load saved session
|
||||||
|
|
||||||
|
# Remote mode
|
||||||
|
remote-mode TARGET # Simulate remote control
|
||||||
|
ssh-mode TARGET # Simulate SSH branch
|
||||||
|
teleport-mode TARGET # Simulate Teleport branch
|
||||||
|
|
||||||
|
# Audit and config
|
||||||
|
parity-audit # Compare consistency with TypeScript source
|
||||||
|
setup-report # Startup configuration report
|
||||||
|
bootstrap-graph # Bootstrap phase graph
|
||||||
|
command-graph # Command graph partition view
|
||||||
|
tool-pool # Tool pool assembly view
|
||||||
|
```
|
||||||
|
|
||||||
|
### Design Features
|
||||||
|
|
||||||
|
* **Snapshot-driven**: command/tool metadata is loaded through JSON snapshots without requiring full logical implementations
|
||||||
|
* **Clean-room rewrite**: does not include original TypeScript code; independently implemented
|
||||||
|
* **Parity audit**: built-in `parity_audit.py` tracks gaps from the original implementation
|
||||||
|
* **Lightweight architecture**: core framework implemented in 66 files, suitable for learning and extension
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Comparison of the Two Projects
|
||||||
|
|
||||||
|
| Dimension | claude-code-source-code | claw-code |
|
||||||
|
| ----------------------- | ----------------------------------------- | ------------------------------------------------ |
|
||||||
|
| Language | TypeScript | Python |
|
||||||
|
| Code Size | ~163,000 lines | ~5,000 lines |
|
||||||
|
| Nature | Decompiled source archive | Clean-room architectural rewrite |
|
||||||
|
| Functional Completeness | Complete (100%) | Architectural framework (~20%) |
|
||||||
|
| Core Loop | `query.ts` (785KB) | `QueryEnginePort` (~200 lines) |
|
||||||
|
| Tool System | 40+ fully implemented tools | Snapshot metadata + execution framework |
|
||||||
|
| Command System | ~87 fully implemented commands | Snapshot metadata + execution framework |
|
||||||
|
| Main Use Case | Deep study of full implementation details | Architectural understanding and porting research |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## License and Disclaimer
|
||||||
|
|
||||||
|
This repository is for academic research and educational purposes only. Both subprojects are built from publicly accessible information. Users are responsible for complying with applicable laws, regulations, and service terms.
|
||||||
|
|
||||||
Reference in New Issue
Block a user