8.2 KiB
Learnings Log
[LRN-20260210-001] Cron CLI workaround via exec
Logged: 2026-02-10T23:00:00 CST Priority: high Status: promoted Area: config
Summary
When the cron tool fails due to deadlock, use exec to run the OpenClaw CLI instead. This bypasses the deadlock entirely.
Details
The ez-cronjob skill revealed that direct cron tool invocation creates deadlock between agent and gateway. The CLI (openclaw cron) doesn't have this issue.
Suggested Action
Always use exec for cron operations:
exec: openclaw cron list
exec: openclaw cron add --name "..." --cron "..." --tz "..." --session isolated ...
Key flags for reliable cron jobs:
--session isolated- Prevents message loss--tz "America/Chicago"- Explicit timezone--deliver --channel discord --to "ID"- Delivery routing--best-effort-deliver- Graceful degradation
Resolution
- Promoted: TOOLS.md
- Notes: Added to memory system and cron mastery workflow
Metadata
- Source: user_feedback
- Related Files: skills/ez-cronjob/SKILL.md
- Tags: cron, scheduling, troubleshooting
- See Also: ERR-20260210-001
[LRN-20260210-002] Weather API fallbacks
Logged: 2026-02-10T23:05:00 CST Priority: medium Status: pending Area: tools
Summary
wttr.in weather service may timeout or be blocked on some networks. Open-Meteo API provides reliable fallback with JSON responses.
Details
Primary weather skill uses wttr.in but it failed silently (no output). Open-Meteo worked immediately with PowerShell's Invoke-RestMethod.
Suggested Action
When wttr.in fails, use Open-Meteo with coordinates:
Invoke-RestMethod -Uri "https://api.open-meteo.com/v1/forecast?latitude=30.3&longitude=-92.2¤t_weather=true"
Metadata
- Source: error
- Related Files: skills/weather/SKILL.md
- Tags: weather, api, networking
[LRN-20260210-003] Windows curl vs PowerShell
Logged: 2026-02-10T23:05:00 CST Priority: low Status: pending Area: tools
Summary
On Windows, curl command often invokes PowerShell's Invoke-WebRequest alias which has different syntax. Use curl.exe for real curl, or use Invoke-RestMethod for native PowerShell HTTP calls.
Details
# FAILS - PowerShell interprets as Invoke-WebRequest
curl -s "wttr.in/Chicago?format=3"
# Works - explicit exe call
curl.exe -s "wttr.in/Chicago?format=3"
# Better - native PowerShell
Invoke-RestMethod -Uri "http://wttr.in/Chicago?format=3"
Suggested Action
Prefer Invoke-RestMethod or Invoke-WebRequest on Windows for HTTP calls.
Metadata
- Source: error
- Tags: windows, curl, powershell, http
[LRN-20260211-004] YouTube Summary Tool Created
Logged: 2026-02-11T11:54:00 CST Priority: medium Status: pending Area: tools
Summary
Created tools/youtube-summarizer.py for auto-transcribing and summarizing YouTube videos from URLs.
Tool Features
- Extract video ID from multiple URL formats
- Download auto-generated captions via yt-dlp
- Parse SRT timestamps into key points
- Generate bullet summary with timestamps
Dependencies
- yt-dlp needs to be installed (not currently on system)
- Install:
pip install yt-dlpor download from yt-dlp/releases
Usage
python tools/youtube-summarizer.py "https://youtube.com/watch?v=VIDEO_ID"
Channel Integration
- New channel: #youtube-summaries (ID: TBD_Corey_will_provide)
- Auto-detects YouTube URLs
- Posts transcript + summary back
Next Steps
- Install yt-dlp on Windows system
- Test with sample video
- Add auto-detection logic for Discord messages
Metadata
- Source: user_request
- Related Files: tools/youtube-summarizer.py, notes/youtube-summaries-channel.md
- Tags: youtube, transcription, video, tool
[LRN-20260211-001] F1 News - No Spoilers Policy
Logged: 2026-02-11T09:33:00 CST Priority: critical Status: active Area: workflow
Summary
Never include F1 race results, standings, or leaderboards in daily news briefing. User watches races delayed and spoilers ruin the experience.
Approved Topics
- Pre-race previews and analysis
- Technical updates and car development
- Driver/team news and announcements
- Schedule changes
- Regulatory updates
Forbidden Topics
- Race winners, podium finishers
- Championship standings
- Race results of any kind
- "Verstappen extends lead" type headlines
- Qualifying results
Suggested Action
Pre-filter search results before including in briefing. Skip any headline containing: "wins", "wins championship", "standings", "results", "podium", "classified"
Metadata
- Source: user_feedback
- Related Files: notes/news-sources.md
- Tags: f1, spoilers, critical-rule
[LRN-20260214-001] Worker Agent Template Pattern
Logged: 2026-02-16T19:00:00 CST Priority: high Status: active Area: architecture
Summary
Created reusable template for spawning specialized worker agents via cron. Template includes identity, mission, and HEARTBEAT-driven execution checklist.
Pattern
workspace-agents/ +-- TEMPLATE-worker/ ¦ +-- IDENTITY.md (who am I, emoji, role) ¦ +-- SOUL.md (mission, principles, boundaries) ¦ +-- USER.md (who I serve, purpose) ¦ +-- HEARTBEAT.md (daily routine checklist) ? ¦ +-- your_script.py (actual logic) +-- [specific-worker]/ (copy of template, customized)
Cron Setup
Uses message: 'Read IDENTITY.md, SOUL.md, HEARTBEAT.md, then follow your routine'
Key Insight
HEARTBEAT.md acts as the agent's 'script' — self-directed execution without hardcoded cron logic.
Active Workers
- Memory Worker (extracts to DB)
- Job Verifier (checks overnight jobs)
Metadata
- Source: system_design
- Related: FUTURE_WORKER_IDEAS.md
- Tags: workers, agents, cron, templates
[LRN-20260215-001] Hybrid File + Database Memory
Logged: 2026-02-16T10:00:00 CST Priority: high Status: active Area: memory
Summary
Built hybrid memory system: human-readable files (me) + structured SQLite (worker agent). Best of both worlds.
Architecture
- I write to files (daily notes, MEMORY.md)
- Memory Worker extracts structured data to SQLite
- I can query DB when needed for structured info
Database Schema
- memory_cells: tasks, decisions, facts, projects
- scenes: daily summaries
- memory_fts: full-text search
Metadata
- Source: system_design
- Related: workspace-agents/memory-worker/
- Tags: memory, database, sqlite, architecture
[LRN-20260216-001] Python Unicode on Windows
Logged: 2026-02-16T10:30:00 CST Priority: low Status: active Area: scripting
Summary
Windows PowerShell has issues with Unicode characters in print statements. Use ASCII alternatives.
Problem
print('>= 0.8') with Unicode U+2265 FAILS print('?') emoji FAILS
Workaround
Use '>= 0.8' (ASCII) and '[OK]' instead of emoji
Metadata
- Source: error
- Tags: windows, python, encoding
[LRN-20260217-001] Manual Context Limit Fix - File Chopping
Logged: 2026-02-17T20:30:00 CST Priority: high Status: active Area: sessions
Summary
When session hits token limit (256k/256k 100%) and /terminate or /compact fail, manually edit the session JSON file to remove old context.
Scenario
- Coding channel hits 'HTTP 400: prompt too long'
- /terminate doesn't clear the session
- /compact doesn't work or is disabled
- Session file grows to >100MB
Solution
- Open session file: ~/.openclaw/agents/main/sessions/[SESSION-ID].jsonl
- Delete first ~50% of lines (oldest messages)
- Keep the newest half (recent context)
- Save file
- New messages spawn with trimmed context
Why It Works
- Session file is append-only JSON lines
- Each line is one message/tool call
- Removing old lines = forgetting old context
- Keeps recent conversation intact
Trade-offs
- Loses old conversation history
- But keeps current task context
- Better than losing everything with /terminate
Prevention
- Compact regularly during long sessions
- Spawn sub-agents for big tasks
- Monitor token count with /session_status
- Coding sessions bloat fastest (code snippets)
Metadata
- Source: user_workaround
- Related: sessions, context, coding
- Tags: context-limit, manual-fix, session-management
- See Also: ERR-20260217-001