360 Secure SkillHub
360 安全技能中心

Openclaw Session Compact

面向 OpenClaw 的会话压缩插件,通过 openclaw 命令与配置文件启用;会话超过 Token 阈值时保留最近若干条消息,把更早历史压缩为结构化摘要(统计、近期请求、待办、关键文件、使用工具、时间线),宣称可节省 85-95% Token;LLM 不可用时回退为代码抽取,仓库含 TypeScript 源码与测试。

sdc-creator
sdc-creator
热度 30.74
最近更新 2026-04-06 23:31:51
分类:效率依赖:代码执行 / 读写文件 / 内部调用大模型应用场景:摘要总结 / 工作流 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add openclaw-session-compact
Metadata
name
openclaw-session-compact
description
Intelligent session compression plugin for OpenClaw that automatically manages token consumption and supports unlimited-length conversations. Compresses historical messages into structured summaries to reduce token usage by 85-95%. Provides CLI commands: compact, compact-status, compact-config.

OpenClaw Session Compact Plugin

Intelligent session compression plugin for OpenClaw that automatically manages token consumption and supports unlimited-length conversations. By automatically compressing historical messages into structured summaries, it significantly reduces token usage (typically 85-95% savings).

🚀 Quick Start

Installation

# Install from ClawHub
openclaw skills install openclaw-session-compact

Configuration

Add to ~/.openclaw/openclaw.json:

{
  "plugins": {
    "allow": ["openclaw-session-compact"],
    "entries": {
      "openclaw-session-compact": { "enabled": true }
    }
  },
  "skills": {
    "entries": {
      "openclaw-session-compact": {
        "enabled": true,
        "max_tokens": 10000,
        "preserve_recent": 4,
        "auto_compact": true,
        "model": "qwen/qwen3.5-122b-a10b"
      }
    }
  }
}

💡 Usage Scenarios

Scenario 1: CLI Commands

# Check current session status
openclaw compact-status

# Manually trigger compression
openclaw compact

# Force compression (ignores threshold)
openclaw compact --force

# View configuration
openclaw compact-config

Scenario 2: Automatic Compression

# Start OpenClaw - compression works automatically
openclaw start

# When conversation history exceeds the threshold, it auto-compresses
# and continues seamlessly without user intervention

Scenario 3: Long Conversation Handling

Problem: Conversations exceeding 10,000 tokens cause:

  • Rapid token consumption
  • Slower response times
  • Potential model limits exceeded

Solution: Session Compact automatically compresses history:

Before: 50 messages (1,250 tokens)
        ↓ [Auto-compress]
After:  5 messages (360 tokens) - 92% token savings

🔧 Configuration Options

Parameter Type Default Description Recommended
max_tokens number 10000 Token threshold for compression 5000-20000
preserve_recent number 4 Number of recent messages to keep 4-6
auto_compact boolean true Enable automatic compression true
model string '' Model for summary generation Global default

Configuration Examples

Conservative Mode (frequent compression, max token savings):

{
  "max_tokens": 5000,
  "preserve_recent": 6
}

Aggressive Mode (fewer compressions, more context retained):

{
  "max_tokens": 20000,
  "preserve_recent": 3
}

📊 How It Works

Compression Flow

1. Monitor token usage
   ↓
2. Exceeds threshold (90%)?
   ├─ No → Continue conversation
   └─ Yes → Trigger compression
        ↓
3. Keep last N messages (default: 4)
   ↓
4. Compress old messages into structured summary
   ├─ Scope: Statistics
   ├─ Recent requests: Last 3 user requests
   ├─ Pending work: To-dos
   ├─ Key files: Important files
   ├─ Tools used: Tools mentioned
   └─ Key timeline: Conversation timeline
   ↓
5. Replace old messages with System summary
   ↓
6. Seamlessly continue conversation

Fallback Mechanism

When LLM is unavailable, automatically falls back to code extraction mode:

  • Extract timeline directly from message content
  • Use preset templates for summary fields
  • Ensures functionality without LLM dependency

🛠️ Troubleshooting

Common Issues

1. Compression Not Triggered

Cause: Token count below threshold Solution:

# Check current token usage
openclaw compact-status

# Lower threshold for testing
openclaw compact --force

2. Poor Summary Quality

Cause: LLM misconfigured or unavailable Solution:

  • Verify model configuration
  • Ensure OpenClaw Gateway is running: openclaw gateway start
  • System auto-falls back to code extraction

3. Context Loss After Compression

Cause: preserve_recent set too low Solution:

{
  "preserve_recent": 6  // Increase to 6 or more
}

4. Plugin Not Recognized

Cause: Missing plugin configuration Solution:

# Check plugin status
openclaw plugins list | grep compact

# Ensure plugin is in plugins.allow in openclaw.json

📈 Performance Metrics

  • Test Coverage: 63.63% (65 tests passing)
  • Core Function Coverage: 89.76%
  • Average Compression Time: < 1 second (without LLM)
  • Token Savings: Typically 85-95%
  • Memory Usage: Low (no leaks)

🧪 Testing

# Run tests
npm test

# Check coverage
npm run test:coverage

📚 Technical Documentation

For detailed API documentation and examples, see README.md.

Core API

// Compress session
const result = await compactSession(messages, config);

// Check if compression is needed
const needsCompact = shouldCompact(messages, config);

// Estimate token count
const tokens = estimateTokenCount(messages);

🤝 Contributing

Contributions are welcome! Please submit Issues and Pull Requests.

  1. Fork the project
  2. Create a feature branch
  3. Commit changes
  4. Push to the branch
  5. Open a Pull Request

📄 License

MIT License


Status: ✅ Stable Release Tests: ✅ 65/65 Passing Coverage: 📈 63.63% Version: v1.0.0 Maintainer: SDC-creator