Files
g3/docs/CONTROL_COMMANDS.md
Dhanji R. Prasanna f6b84d864a Rename G3 -> g3 in docs and comments
Standardize project name to lowercase 'g3' throughout documentation,
comments, and configuration files. Environment variables (G3_*) are
unchanged as they follow the uppercase convention.
2026-01-13 14:36:33 +05:30

297 lines
7.7 KiB
Markdown

# g3 Control Commands
**Last updated**: January 2025
**Source of truth**: `crates/g3-cli/src/lib.rs`
## Purpose
Control commands are special commands you can use during an interactive g3 session to manage context, refresh documentation, and view statistics. They start with `/` and are processed by the CLI, not sent to the LLM.
## Available Commands
| Command | Description |
|---------|-------------|
| `/compact` | Manually trigger conversation compaction |
| `/thinnify` | Replace large tool results with file references (first third) |
| `/skinnify` | Full context thinning (entire context window) |
| `/clear` | Clear session and start fresh |
| `/resume` | List and switch to a previous session |
| `/readme` | Reload README.md and AGENTS.md from disk |
| `/stats` | Show detailed context and performance statistics |
| `/help` | Display all available control commands |
---
## /compact
Manually trigger conversation compaction to reduce context size.
**When to use**:
- Context usage is getting high (70%+)
- You want to start a new phase of work
- Conversation has accumulated irrelevant history
**What it does**:
1. Sends conversation history to LLM for compaction
2. Replaces detailed history with concise summary
3. Preserves key decisions and context
4. Significantly reduces token usage
**Example**:
```
g3> /compact
📝 Compacting conversation history...
✅ Reduced context from 45,000 to 8,000 tokens (82% reduction)
```
**Notes**:
- Summarization uses tokens, so there's a small cost
- Some detail is lost; use before major context shifts
- Auto-triggered at 80% context usage if `auto_compact = true`
---
## /thinnify
Replace large tool results with file references to save context space.
**When to use**:
- Large file contents are consuming context
- Tool outputs are taking up space
- You want to preserve conversation structure but reduce size
**What it does**:
1. Scans the first third of context for large tool results
2. Saves content to `.g3/sessions/<session>/thinned/`
3. Replaces inline content with file reference
4. Preserves the ability to re-read if needed
**Example**:
```
g3> /thinnify
🔧 Thinning context window...
✅ Thinned 3 large tool results, saved 12,000 characters
```
**Notes**:
- Only processes the first third of context (older content)
- Recent tool results are preserved inline
- Auto-triggered at 50%, 60%, 70%, 80% thresholds
---
## /skinnify
Full context thinning - processes the entire context window.
**When to use**:
- Context is critically full
- `/thinnify` wasn't enough
- You need maximum space recovery
**What it does**:
- Same as `/thinnify` but processes entire context
- More aggressive space recovery
- May thin recent tool results too
**Example**:
```
g3> /skinnify
🔧 Full context thinning...
✅ Thinned 8 tool results, saved 35,000 characters
```
**Notes**:
- Use sparingly; may thin content you still need inline
- Consider `/compact` first for better context preservation
---
## /clear
Clear the current session and start fresh.
**When to use**:
- You want to start a completely new task
- The current context is cluttered or confused
- You want to discard all conversation history
**What it does**:
1. Clears all conversation history (keeps system prompt)
2. Removes the session continuation symlink
3. Resets context to initial state
**Example**:
```
g3> /clear
🧹 Clearing session...
✅ Session cleared. Starting fresh.
```
**Notes**:
- This is irreversible for the current session
- Previous session data remains in `.g3/sessions/` and can be resumed with `/resume`
- Use when you want a clean slate
---
## /resume
List available sessions and switch to a previous one.
**When to use**:
- You want to continue work from a previous session
- You accidentally cleared or lost context
- You want to switch between different tasks/sessions
**What it does**:
1. Scans `.g3/sessions/` for sessions in the current directory
2. Displays a numbered list with timestamps and context usage
3. Prompts for selection
4. Saves current session before switching
5. Restores the selected session's context
**Example**:
```
g3> /resume
📋 Scanning for available sessions...
Available sessions:
1. [2025-01-11 14:30] implement_auth_feature_abc123 (45%) 📝
2. [2025-01-11 10:15] fix_bug_in_parser_def456 (23%)
3. [2025-01-10 16:45] refactor_database_layer_ghi789 (67%)
Enter session number to resume (or press Enter to cancel):
> 1
🔄 Switching to session: implement_auth_feature_abc123
✅ Full context restored from session.
```
**Notes**:
- Sessions marked with 📝 have incomplete TODO items
- Current session is marked with "(current)"
- Only sessions from the current working directory are shown
- Full context is restored if usage was <80%, otherwise summary is used
---
## /readme
Reload README.md and AGENTS.md from disk without restarting.
**When to use**:
- You've updated project documentation
- AGENTS.md has new instructions
- README.md has changed
**What it does**:
1. Re-reads README.md from workspace root
2. Re-reads AGENTS.md from workspace root
3. Updates the agent's system context
4. New instructions take effect immediately
**Example**:
```
g3> /readme
📖 Reloading documentation...
✅ Loaded README.md (5,234 chars)
✅ Loaded AGENTS.md (2,100 chars)
```
**Notes**:
- Useful during iterative documentation updates
- Changes apply to subsequent messages
- Previous context retains old documentation
---
## /stats
Show detailed context and performance statistics.
**What it shows**:
- Current context usage (tokens and percentage)
- Session duration
- Token usage breakdown
- Tool call metrics
- Thinning and compaction events
- First-token latency statistics
**Example**:
```
g3> /stats
📊 Session Statistics
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Context Usage: 45,230 / 200,000 tokens (22.6%)
Session Duration: 1h 23m 45s
Total Tokens Used: 125,430
Tool Calls: 47 (45 successful, 2 failed)
Thinning Events: 3 (saved 28,000 chars)
Summarizations: 1 (saved 35,000 chars)
Avg First Token: 1.2s
```
---
## /help
Display all available control commands with brief descriptions.
**Example**:
```
g3> /help
📚 Available Commands:
/compact - Summarize conversation to reduce context
/thinnify - Replace large tool results with file refs
/skinnify - Full context thinning (entire window)
/clear - Clear session and start fresh
/resume - List and switch to a previous session
/readme - Reload README.md and AGENTS.md
/stats - Show context and performance statistics
/help - Show this help message
```
---
## Context Management Strategy
g3 automatically manages context, but manual intervention can help:
### Proactive Management
1. **Check stats regularly**: Use `/stats` to monitor usage
2. **Thin early**: Use `/thinnify` before hitting thresholds
3. **Compact at transitions**: Use `/compact` when switching tasks
### Reactive Management
When context gets high:
1. **50-70%**: Consider `/thinnify`
2. **70-80%**: Use `/compact`
3. **80-90%**: Use `/skinnify` then `/compact`
4. **90%+**: Auto-compaction triggers
### Best Practices
- **Long sessions**: Compact periodically to maintain quality
- **Large files**: Thin after reading large codebases
- **Documentation updates**: Use `/readme` instead of restarting
- **Before complex tasks**: Ensure adequate context space
---
## Automatic Context Management
g3 performs automatic context management:
| Threshold | Action |
|-----------|--------|
| 50% | Thin oldest third of context |
| 60% | Thin oldest third of context |
| 70% | Thin oldest third of context |
| 80% | Auto-compaction (if `auto_compact = true`) |
| 90% | Aggressive thinning before tool calls |
Manual commands give you finer control over when and how this happens.