112 lines
3.3 KiB
Plaintext
112 lines
3.3 KiB
Plaintext
---
|
|
title: "Endless Mode (Beta)"
|
|
description: "Experimental biomimetic memory architecture for extended sessions"
|
|
---
|
|
|
|
# Current State of Endless Mode
|
|
|
|
## Core Concept
|
|
|
|
Endless Mode is a **biomimetic memory architecture** that solves Claude's context window exhaustion problem. Instead of keeping full tool outputs in the context window (O(N²) complexity), it:
|
|
|
|
- Captures compressed observations after each tool use
|
|
- Replaces transcripts with low token summaries
|
|
- Achieves O(N) linear complexity
|
|
- Maintains two-tier memory: working memory (compressed) + archive memory (full transcript on disk, maintained by default claude code functionality)
|
|
|
|
## Implementation Status
|
|
|
|
**Status**: FUNCTIONAL BUT EXPERIMENTAL
|
|
|
|
**Current Branch**: `beta/endless-mode` (ahead of main)
|
|
|
|
**Recent Activity**:
|
|
- Merged main branch changes
|
|
- Resolved merge conflicts in save-hook, SessionStore, SessionRoutes
|
|
- Updated documentation to remove misleading token reduction claims
|
|
- Added important caveats about beta status
|
|
|
|
## Key Architecture Components
|
|
|
|
1. **Pre-Tool-Use Hook** - Tracks tool execution start, sends tool_use_id to worker
|
|
2. **Save Hook (PostToolUse)** - **CRITICAL**: Blocks until observation is generated (110s timeout), injects compressed observation back into context
|
|
3. **SessionManager.waitForNextObservation()** - Event-driven wait mechanism (no polling)
|
|
4. **SDKAgent** - Generates observations via Agent SDK, emits completion events
|
|
5. **Database** - Added `tool_use_id` column for observation correlation
|
|
|
|
## Configuration
|
|
|
|
```json
|
|
{
|
|
"CLAUDE_MEM_ENDLESS_MODE": "false", // Default: disabled
|
|
"CLAUDE_MEM_ENDLESS_WAIT_TIMEOUT_MS": "90000" // 90 second timeout
|
|
}
|
|
```
|
|
|
|
**Enable via**: Manual checkout of beta branch (see instructions below)
|
|
|
|
## Flow
|
|
|
|
```
|
|
Tool Executes → Pre-Hook (track ID) → Tool Completes →
|
|
Save-Hook (BLOCKS) → Worker processes → SDK generates observation →
|
|
Event fired → Hook receives observation → Injects markdown →
|
|
Clears input → Context reduced
|
|
```
|
|
|
|
## Known Limitations
|
|
|
|
From the documentation:
|
|
- ⚠️ **Slower than standard mode** - Blocking adds latency
|
|
- ⚠️ **Still in development** - May have bugs
|
|
- ⚠️ **Not battle-tested** - New architecture
|
|
- ⚠️ **Theoretical projections** - Efficiency gains not yet validated in production
|
|
|
|
## What's Working
|
|
|
|
- ✅ Synchronous observation injection
|
|
- ✅ Event-driven wait mechanism
|
|
- ✅ Token reduction via input clearing
|
|
- ✅ Database schema with tool_use_id
|
|
- ✅ Web UI for version switching
|
|
- ✅ Graceful timeout fallbacks
|
|
|
|
## What's Not Ready
|
|
|
|
- ❌ Production validation of token savings
|
|
- ❌ Comprehensive test coverage
|
|
- ❌ Stable channel release
|
|
- ❌ Performance benchmarks
|
|
- ❌ Long-running session data
|
|
|
|
## How to Try Endless Mode
|
|
|
|
Endless Mode is currently only available on the beta branch. To try it:
|
|
|
|
```bash
|
|
# Navigate to your claude-mem installation
|
|
cd ~/.claude/plugins/marketplaces/thedotmack/
|
|
|
|
# Checkout the beta branch
|
|
git checkout beta/endless-mode
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Restart the worker
|
|
npm run worker:restart
|
|
```
|
|
|
|
**To return to stable:**
|
|
|
|
```bash
|
|
cd ~/.claude/plugins/marketplaces/thedotmack/
|
|
git checkout main
|
|
npm install
|
|
npm run worker:restart
|
|
```
|
|
|
|
## Summary
|
|
|
|
The implementation is architecturally complete and functional, but remains experimental pending production validation of the theoretical efficiency gains.
|