Files
2026-01-11 12:05:37 +09:00

397 lines
13 KiB
Markdown

# 🚀🧠 Deep Agents CLI
The [deepagents](https://github.com/langchain-ai/deepagents) CLI is an open source coding assistant that runs in your terminal, similar to Claude Code.
**Key Features:**
- **Built-in Tools**: File operations (read, write, edit, glob, grep), shell commands, web search, and subagent delegation
- **Customizable Skills**: Add domain-specific capabilities through a progressive disclosure skill system
- **Persistent Memory**: Agent remembers your preferences, coding style, and project context across sessions
- **Project-Aware**: Automatically detects project roots and loads project-specific configurations
<img src="cli-banner.jpg" alt="deep agent" width="100%"/>
## 🚀 Quickstart
`deepagents-cli` is a Python package that can be installed via pip or uv.
**Install via pip:**
```bash
pip install deepagents-cli
```
**Or using uv (recommended):**
```bash
# Create a virtual environment
uv venv
# Install the package
uv pip install deepagents-cli
```
**Run the agent in your terminal:**
```bash
deepagents
```
**Get help:**
```bash
deepagents help
```
**Common options:**
```bash
# Use a specific agent configuration
deepagents --agent mybot
# Use a specific model (auto-detects provider)
deepagents --model claude-sonnet-4-5-20250929
deepagents --model gpt-4o
# Auto-approve tool usage (skip human-in-the-loop prompts)
deepagents --auto-approve
# Execute code in a remote sandbox
deepagents --sandbox modal # or runloop, daytona
deepagents --sandbox-id dbx_123 # reuse existing sandbox
```
Type naturally as you would in a chat interface. The agent will use its built-in tools, skills, and memory to help you with tasks.
## Model Configuration
The CLI supports three LLM providers with automatic provider detection based on model name:
**Supported Providers:**
- **OpenAI** - Models like `gpt-4o`, `gpt-5-mini`, `o1-preview`, `o3-mini` (default: `gpt-5-mini`)
- **Anthropic** - Models like `claude-sonnet-4-5-20250929`, `claude-3-opus-20240229` (default: `claude-sonnet-4-5-20250929`)
- **Google** - Models like `gemini-3-pro-preview`, `gemini-2.5-pro` (default: `gemini-3-pro-preview`)
**Specify model at startup:**
```bash
# Auto-detects Anthropic from model name pattern
deepagents --model claude-sonnet-4-5-20250929
# Auto-detects OpenAI from model name pattern
deepagents --model gpt-4o
```
**Or use environment variables:**
```bash
# Set provider-specific model defaults
export ANTHROPIC_MODEL="claude-sonnet-4-5-20250929"
export OPENAI_MODEL="gpt-4o"
export GOOGLE_MODEL="gemini-2.5-pro"
# Set API keys (required)
export ANTHROPIC_API_KEY="your-key"
export OPENAI_API_KEY="your-key"
export GOOGLE_API_KEY="your-key"
```
**Model name conventions:**
Model names follow each provider's official naming convention:
- **OpenAI**: See [OpenAI Models Documentation](https://platform.openai.com/docs/models)
- **Anthropic**: See [Anthropic Models Documentation](https://docs.anthropic.com/en/docs/about-claude/models)
- **Google**: See [Google Gemini Models Documentation](https://ai.google.dev/gemini-api/docs/models/gemini)
The active model is displayed at startup in the CLI interface.
## Built-in Tools
The agent comes with the following built-in tools (always available without configuration):
| Tool | Description |
|------|-------------|
| `ls` | List files and directories |
| `read_file` | Read contents of a file |
| `write_file` | Create or overwrite a file |
| `edit_file` | Make targeted edits to existing files |
| `glob` | Find files matching a pattern (e.g., `**/*.py`) |
| `grep` | Search for text patterns across files |
| `shell` | Execute shell commands (local mode) |
| `execute` | Execute commands in remote sandbox (sandbox mode) |
| `web_search` | Search the web using Tavily API |
| `fetch_url` | Fetch and convert web pages to markdown |
| `task` | Delegate work to subagents for parallel execution |
| `write_todos` | Create and manage task lists for complex work |
> [!WARNING]
> **Human-in-the-Loop (HITL) Approval Required**
>
> Potentially destructive operations require user approval before execution:
>
> - **File operations**: `write_file`, `edit_file`
> - **Command execution**: `shell`, `execute`
> - **External requests**: `web_search`, `fetch_url`
> - **Delegation**: `task` (subagents)
>
> Each operation will prompt for approval showing the action details. Use `--auto-approve` to skip prompts:
>
> ```bash
> deepagents --auto-approve
> ```
## Agent Configuration
Each agent has its own configuration directory at `~/.deepagents/<agent_name>/`, with default `agent`.
```bash
# List all configured agents
deepagents list
# Create a new agent
deepagents create <agent_name>
```
### Environment Variables
#### LangSmith Tracing
The CLI supports separate LangSmith project configuration for agent tracing vs user code tracing:
**Agent Tracing** - Traces deepagents operations (tool calls, agent decisions):
```bash
export DEEPAGENTS_LANGSMITH_PROJECT="my-agent-project"
```
**User Code Tracing** - Traces code executed via shell commands:
```bash
export LANGSMITH_PROJECT="my-user-code-project"
```
**Complete Setup Example:**
```bash
# Enable LangSmith tracing
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY="your-api-key"
# Configure separate projects
export DEEPAGENTS_LANGSMITH_PROJECT="agent-traces"
export LANGSMITH_PROJECT="user-code-traces"
# Run deepagents
deepagents
```
When both are configured, the CLI displays:
```
✓ LangSmith tracing enabled: Deepagents → 'agent-traces'
User code (shell) → 'user-code-traces'
```
**Why separate projects?**
- Keep agent operations separate from your application code traces
- Easier debugging by isolating agent vs user code behavior
- Different retention policies or access controls per project
**Backwards Compatibility:**
If `DEEPAGENTS_LANGSMITH_PROJECT` is not set, both agent and user code trace to the same project specified by `LANGSMITH_PROJECT`.
## Customization
There are two primary ways to customize any agent: **memory** and **skills**.
Each agent has its own global configuration directory at `~/.deepagents/<agent_name>/`:
```
~/.deepagents/<agent_name>/
├── AGENTS.md # Auto-loaded global personality/style
└── skills/ # Auto-loaded agent-specific skills
├── web-research/
│ └── SKILL.md
└── langgraph-docs/
└── SKILL.md
```
Projects can extend the global configuration with project-specific instructions and skills:
```
my-project/
├── .git/
└── .deepagents/
├── AGENTS.md # Project-specific instructions
└── skills/ # Project-specific skills
└── custom-tool/
└── SKILL.md
```
The CLI automatically detects project roots (via `.git`) and loads:
- Project-specific `AGENTS.md` from `[project-root]/.deepagents/AGENTS.md`
- Project-specific skills from `[project-root]/.deepagents/skills/`
Both global and project configurations are loaded together, allowing you to:
- Keep general coding style/preferences in global AGENTS.md
- Add project-specific context, conventions, or guidelines in project AGENTS.md
- Share project-specific skills with your team (committed to version control)
- Override global skills with project-specific versions (when skill names match)
### AGENTS.md files
`AGENTS.md` files provide persistent memory that is always loaded at session start. Both global and project-level `AGENTS.md` files are loaded together and injected into the system prompt.
**Global `AGENTS.md`** (`~/.deepagents/agent/AGENTS.md`)
- Your personality, style, and universal coding preferences
- General tone and communication style
- Universal coding preferences (formatting, type hints, etc.)
- Tool usage patterns that apply everywhere
- Workflows and methodologies that don't change per-project
**Project `AGENTS.md`** (`.deepagents/AGENTS.md` in project root)
- Project-specific context and conventions
- Project architecture and design patterns
- Coding conventions specific to this codebase
- Testing strategies and deployment processes
- Team guidelines and project structure
**How it works:**
- Loads memory files at startup and injects into system prompt as `<agent_memory>`
- Includes guidelines on when/how to update memory files via `edit_file`
**When the agent updates memory:**
- IMMEDIATELY when you describe how it should behave
- IMMEDIATELY when you give feedback on its work
- When you explicitly ask it to remember something
- When patterns or preferences emerge from your interactions
The agent uses `edit_file` to update memories when learning preferences or receiving feedback.
### Project memory files
Beyond `AGENTS.md`, you can create additional memory files in `.deepagents/` for structured project knowledge. These work similarly to [Anthropic's Memory Tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool). The agent receives instructions on when to read and update these files.
**How it works:**
1. Create markdown files in `[project-root]/.deepagents/` (e.g., `api-design.md`, `architecture.md`, `deployment.md`)
2. The agent checks these files when relevant to a task (not auto-loaded into every prompt)
3. The agent uses `write_file` or `edit_file` to create/update memory files when learning project patterns
**Example workflow:**
```bash
# Agent discovers deployment pattern and saves it
.deepagents/
├── AGENTS.md # Always loaded (personality + conventions)
├── architecture.md # Loaded on-demand (system design)
└── deployment.md # Loaded on-demand (deploy procedures)
```
**When the agent reads memory files:**
- At the start of new sessions (checks what files exist)
- Before answering questions about project-specific topics
- When you reference past work or patterns
- When performing tasks that match saved knowledge domains
**Benefits:**
- **Persistent learning**: Agent remembers project patterns across sessions
- **Team collaboration**: Share project knowledge through version control
- **Contextual retrieval**: Load only relevant memory when needed (reduces token usage)
- **Structured knowledge**: Organize information by domain (APIs, architecture, deployment, etc.)
### Skills
Skills are reusable agent capabilities that provide specialized workflows and domain knowledge. Example skills are provided in the `examples/skills/` directory:
- **web-research** - Structured web research workflow with planning, parallel delegation, and synthesis
- **langgraph-docs** - LangGraph documentation lookup and guidance
To use an example skill globally with the default agent, just copy them to the agent's skills global or project-level skills directory:
```bash
mkdir -p ~/.deepagents/agent/skills
cp -r examples/skills/web-research ~/.deepagents/agent/skills/
```
To manage skills:
```bash
# List all skills (global + project)
deepagents skills list
# List only project skills
deepagents skills list --project
# Create a new global skill from template
deepagents skills create my-skill
# Create a new project skill
deepagents skills create my-tool --project
# View detailed information about a skill
deepagents skills info web-research
# View info for a project skill only
deepagents skills info my-tool --project
```
To use skills (e.g., the langgraph-docs skill), just type a request relevant to a skill and the skill will be used automatically.
```bash
deepagents
"create a agent.py script that implements a LangGraph agent"
```
Skills follow Anthropic's [progressive disclosure pattern](https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills) - the agent knows skills exist but only reads full instructions when needed.
1. **At startup** - SkillsMiddleware scans `~/.deepagents/agent/skills/` and `.deepagents/skills/` directories
2. **Parse metadata** - Extracts YAML frontmatter (name + description) from each `SKILL.md` file
3. **Inject into prompt** - Adds skill list with descriptions to system prompt: "Available Skills: web-research - Use for web research tasks..."
4. **Progressive loading** - Agent reads full `SKILL.md` content with `read_file` only when a task matches the skill's description
5. **Execute workflow** - Agent follows the step-by-step instructions in the skill file
## Development
### Running Tests
To run the test suite:
```bash
uv sync --all-groups
make test
```
### Running During Development
```bash
# From libs/deepagents-cli directory
uv run deepagents
# Or install in editable mode
uv pip install -e .
deepagents
```
### Modifying the CLI
- **UI changes** → Edit `ui.py` or `input.py`
- **Add new tools** → Edit `tools.py`
- **Change execution flow** → Edit `execution.py`
- **Add commands** → Edit `commands.py`
- **Agent configuration** → Edit `agent.py`
- **Skills system** → Edit `skills/` modules
- **Constants/colors** → Edit `config.py`