From Official OpenClaw to NexAgent Lingxiao: Complete Version Timeline & Migration Guide
I. OpenClaw Version Timeline (v2026.3.8 → v2026.4.2)
v2026.3.8 (2026-03-09)
- Backup tools:
openclaw backup create/verifywith manifest validation - Talk mode: configurable
silenceTimeoutMsauto-send silence threshold - TUI: infer active agent from current workspace
- Brave web search: new
llm-contextmode returning LLM-ready grounding snippets
v2026.3.11 (2026-03-12)
- 🔒 Security fix: WebSocket CSWSH (GHSA-5wcw-8jjv-m286), enforce browser origin validation
sessions_yield: orchestrators can end turn immediately, skip queued tools, carry hidden payload to next turn- Fast mode: Anthropic (
service_tier) + OpenAI both support session-level fast inference toggle - iOS welcome: live agent overview, auto-refresh on reconnect/foreground
v2026.3.12 (2026-03-13)
- Control UI Dashboard v2: modular overview/chat/config/agent/session views, command palette, mobile bottom tabs, export, search, pinned messages
- Ollama onboarding: first-class Local or Cloud+Local setup, curated model suggestions
- GPT-5.4 fast mode: session-level toggle parallel to Anthropic fast
v2026.3.13 (2026-03-14) — Bug fix
- Fix: session reset loses
lastAccountId/lastThreadId - Fix: Discord gateway metadata fetch failures
- Fix: compaction uses full-session token count for sanity check
v2026.3.22 (2026-03-23) — ⚠️ BREAKING
- Plugin install priority: ClawHub over npm; fallback to npm only when ClawHub misses
- Chrome MCP: remove legacy extension relay path; migrate via
openclaw doctor --fix - image_generate standardized: remove
nano-banana-probundled skill; useagents.defaults.imageGenerationModel - New Plugin SDK:
openclaw/plugin-sdk/*is the public path;openclaw/extension-apiremoved, no shim
v2026.3.23 (2026-03-23)
- Qwen/ModelStudio: standard DashScope pay-as-you-go endpoints alongside Coding Plan
- Control UI Knot theme: black-and-red palette, WCAG 2.1 AA contrast, config section icons
- CSP: SHA-256 hashes for inline scripts in
script-srcdirective
v2026.3.24 (2026-03-25)
- OpenAI compat:
/v1/models,/v1/embeddings, explicit model overrides on/v1/chat/completions /toolsdynamic: shows actual available tools for current agent; "Available Right Now" in Control UI- Teams: official SDK migration, streaming replies, welcome cards, typing indicators, AI labeling
- Skills one-click recipes: coding-agent, gh-issues, whisper-api with dependency auto-install
- Skills Control UI: filter tabs, detail dialog with toggle/install/API key entry
v2026.3.28 (2026-03-29)
- xAI/Grok: Responses API, first-class
x_searchtool, auto-enable xAI plugin from web-search config - MiniMax:
image-01generation + image-to-image editing with aspect ratio - Plugin hooks
requireApproval:before_tool_callpauses for user approval via Discord buttons/Telegram/exec overlay - Unified
/approve: handles exec + plugin approvals with fallback - ACP: Discord/iMessage current-conversation bind for Codex spawning
v2026.3.31 (2026-03-31) — ⚠️ BREAKING
- Remove
nodes.runwrapper: all node shell execution throughexec host=node - Plugin SDK compat paths deprecated: migrate to
openclaw/plugin-sdk/*+api.ts/runtime-api.ts - Skill install dangerous-code fails closed: critical findings require
--dangerously-force-unsafe-install - Gateway
trusted-proxy: reject mixed shared-token configs; local-direct needs explicit token - Node commands: locked until pairing approval — device pairing alone no longer enough
v2026.4.1 (2026-04-01)
/taskschat-native board: background task list for current session with recent details- SearXNG provider: bundled
web_searchwith configurable self-hosted instance - Amazon Bedrock Guardrails support
- Voice Wake: trigger Talk Mode on macOS
agents.defaults.params: global default provider parameters- Auth failover: rate-limit retry cap +
auth.cooldowns.rateLimitedProfileRotationsknob openclaw cron --tools: per-job tool allowlists
v2026.4.2 (2026-04-02) — ⚠️ BREAKING
- xAI config path migration:
tools.web.x_search.*→plugins.entries.xai.config.xSearch.*; runopenclaw doctor --fix - Firecrawl config path migration:
tools.web.fetch.firecrawl.*→plugins.entries.firecrawl.config.webFetch.* - Task Flow restoration: managed vs mirrored sync, durable state + revision tracking,
openclaw flowsinspect/recover - Managed child tasks + sticky cancel: stop scheduling immediately, parent Task Flow settles to
cancelled api.runtime.taskFlowseam: plugins create/drive managed Task Flows without owner identifiers
II. Official vs NexAgent Lingxiao: Full Comparison
| Aspect | Official OpenClaw | NexAgent Lingxiao |
|---|---|---|
| Platform | Cross-platform: macOS app, Windows service, Linux Docker/native, K8s | Linux-native systemd only (Samsung laptop yaosong, Ubuntu 24.04) |
| AI Model | Multi-provider: Anthropic/OpenAI/Ollama/xAI/Qwen/MiniMax (user's choice) | Claude Sonnet 4.6 exclusively (Anthropic API) |
| Persistent Memory | None — session-only | Custom Memory Service: PostgreSQL 17 + pgvector 1024-dim + bge-m3 embedding, hybrid search |
| Channels | Full coverage: Discord/Telegram/iMessage/WhatsApp/Signal/Feishu/Teams | Discord only (DM + OpenClaw Club guild) |
| Skills | ClawHub community + npm public ecosystem | 17 proprietary custom skills for vertical business domains |
| Agent Persona | Stateless tool, no personality | Lingxiao (SOUL.md + IDENTITY.md): opinionated, bilingual, consistent style |
| Deployment | npm global / Docker Compose / K8s / macOS dmg / Windows exe | Zero Docker: Next.js PM2 + Flask systemd + nginx + Cloudflare Tunnel |
| Config | openclaw.json only | Multi-layer: openclaw.json + AGENTS.md + SOUL.md + IDENTITY.md + MEMORY.md |
| Scheduled Tasks | openclaw cron + native cron | Direct crontab → Python scripts (blog fetch/publish, OpenClaw update analysis, self-improvement) |
| Memory Architecture | None | pgvector (semantic) + PostgreSQL facts (structured) + Redis (hot cache) — 3-tier |
| Learning | None | self-improvement skill: error recording → correction learning → hot-knowledge cache → pattern upgrade |
III. How to Organize Custom Skills: A Layered Approach
Official OpenClaw's ClawHub provides a general-purpose skill ecosystem. The key to customization is designing skills in business-aligned layers, not just stacking features.
We organize custom skills into five layers:
🧠 Layer 1 — Memory & Learning (foundation, global)
This layer underpins everything else. All other skills depend on it.
- Memory skill: encapsulates PostgreSQL + pgvector read/write, provides a unified memory query/store interface.
- Self-improvement skill: auto-record errors, correction learning, hot-knowledge cache. The agent gets smarter with use.
Portability: These two skills work for any OpenClaw customization. Use them as-is.
🏢 Layer 2 — Platform Core (your own products/services)
Encapsulates operations on platforms you own and maintain — your website, course platform, APIs.
Principle: one skill per platform, all calls go through Bot Token + REST API, never direct DB access.
📰 Layer 3 — Content Operations (automated content production)
Daily news scraping, AI article writing, auto-publishing. This layer makes the agent a content engine.
- News scrape skill: multi-source RSS + Tavily real-time search, standardized JSON output
- AI writing skill: Claude generates bilingual Markdown, publishes by category
- Search skill: Tavily / DuckDuckGo, multi-key rotation with quota failover
Portability: Make scrape sources and publish targets configurable — works with any blog platform.
⚙️ Layer 4 — Productivity Integration (external SaaS)
One skill per external service you use daily.
- Google Workspace (email / calendar / docs / sheets)
- GitHub (code ops, PRs, issues)
- Reminders / iCal subscriptions
- Cloud deployment (Cloudflare Tunnel, Docker)
- Background task queue (async Claude Code execution)
Principle: these handle your personal/team workflow. Private data stays private.
🔒 Layer 5 — Private Business Skills (never published)
Any skill tightly coupled to your specific business — proprietary CRMs, internal time-clock systems, client-specific workflows — lives only in your workspace and is never shared.
This layer is the real "customization". Everyone's Layer 5 is different. That's the point.
Design Guidance
Layer 1 (memory/learning) ← universal, reuse directly
Layer 2 (platform core) ← determined by your products
Layer 3 (content operations) ← generic framework, swap sources/targets
Layer 4 (productivity) ← pick by your SaaS stack
Layer 5 (private business) ← fully private, never shared
The AGENTS.md Skills Index routing table manages all five layers under one roof: natural-language intent → skill file path.
IV. Migration Steps: Official OpenClaw → This Setup
Step 1 — Install base OpenClaw
npm install -g openclaw
openclaw onboard # choose Anthropic, enter sk-ant-...
Step 2 — Configure Discord channel
openclaw configure --section channels
# Select Discord, enter Bot Token and Guild ID
Step 3 — Set Claude Sonnet 4.6 as default model
In openclaw.json or agent config: agents.defaults.model: "anthropic/claude-sonnet-4-6"
Step 4 — Deploy Memory Service (strongly recommended)
sudo apt install postgresql-17
pip install pgvector fastapi uvicorn sentence-transformers
sudo -u postgres psql -c "CREATE EXTENSION vector"
cd ~/openclaw-memory-service && uvicorn main:app --host 127.0.0.1 --port 18800
Step 5 — Install custom skills
cp -r skills/ ~/.openclaw/workspace/skills/
# No registration needed — AGENTS.md routing table handles dispatch
Step 6 — Create workspace config files
In ~/.openclaw/workspace/:
AGENTS.md— Skills Index routing + exec policy + memory rules + self-learning rulesSOUL.md— AI persona baseline (a few lines defining style)IDENTITY.md— Name, pronouns, timezone, language preference
Step 7 — Native systemd deployment (optional, replaces Docker)
Create .service files for Flask API, Memory Service; enable and start with systemctl.
Step 8 — Configure cron jobs
# Blog auto-fetch + publish — 6AM Vancouver (13:00 UTC)
0 13 * * * cd ~/openclaw-services/blog_fetcher && python3 fetcher.py && python3 auto_publisher.py
# OpenClaw daily update analysis — 6:30AM Vancouver
30 13 * * * python3 openclaw_blog_writer.py
# Self-improvement hot-knowledge promotion — 7AM Vancouver
0 14 * * * curl -s -X POST http://localhost:18800/maintenance/promote-learnings
V. Version Impact on Our Setup
| Version | Key Change | Impact | Action |
|---|---|---|---|
| v2026.3.8–3.11 | sessions_yield, fast mode, security fix | sessions_yield powers task-queue skill | None needed |
| v2026.3.22 | Plugin SDK old paths deprecated | Verify openart skill uses new SDK path | Check openart skill |
| v2026.3.28 | Unified /approve, Discord buttons | Smoother Discord exec approvals | None — already works |
| v2026.3.31 | nodes.run removed, dangerous-code fails closed | No node operations in AGENTS.md | Verify yao-clock/github-contributor |
| v2026.4.1 | /tasks board, cron --tools | task-queue skill can expose /tasks integration | Optional: upgrade task-queue |
| v2026.4.2 | xAI/Firecrawl path migration, Task Flow | We don't use xAI/Firecrawl — no impact | Optional: adopt Task Flow for orchestration |
VII. Database Migration: SQLite → PostgreSQL Dual-Database Architecture
Official OpenClaw defaults to SQLite for sessions, memories, and tasks. We completely replace it with PostgreSQL 17, split into two logical databases.
Architecture Overview
Official OpenClaw
└── SQLite (openclaw.db)
├── sessions
├── memories (session-only, no persistence)
└── tasks
NexAgent Lingxiao
├── PostgreSQL: openclaw_club (business DB)
│ ├── Course platform (users/lectures/cohorts/assignments/attendance)
│ ├── Blog system (posts/vector embeddings/full-text index)
│ ├── Discord moderation (violations)
│ └── Task tracking (task_runs / task_delivery_state)
│
└── PostgreSQL: memory schema (same PG instance)
├── memory.embeddings ← semantic vector memories (pgvector)
├── memory.facts ← structured facts (domain/key/value)
├── memory.files ← file metadata (MinIO object refs)
├── memory.access_log ← access log (time-decay scoring)
├── skill_reminder.* ← reminders + calendar subscriptions
└── skill_task.* ← async task queue
Step 1 — Install PostgreSQL 17 + pgvector
# Ubuntu 24.04
sudo apt install -y postgresql-17 postgresql-17-pgvector
psql --version # PostgreSQL 17.x
Step 2 — Create database and user
sudo -u postgres psql << 'SQL'
CREATE USER oc_admin WITH PASSWORD 'your_secure_password';
CREATE DATABASE openclaw_club OWNER oc_admin;
GRANT ALL PRIVILEGES ON DATABASE openclaw_club TO oc_admin;
SQL
Step 3 — Enable pgvector extension
PGPASSWORD=your_password psql -h 127.0.0.1 -U oc_admin -d openclaw_club -c "CREATE EXTENSION IF NOT EXISTS vector;"
Step 4 — Create memory schema (persistent memory system)
PGPASSWORD=your_password psql -h 127.0.0.1 -U oc_admin -d openclaw_club -f /path/to/agentic-memory/sql/schema.sql
Key tables:
memory.embeddings — semantic vector memories, 1024-dim bge-m3, HNSW index
memory.facts — structured key/value store with JSONB and expiry support
skill_reminder.* — reminders with iCal RRULE repeat rules + calendar feed subscriptions
skill_task.* — async task queue with status tracking and Discord notification flag
Step 5 — Create business tables (openclaw_club)
cd ~/openclaw-services/backend
python3 -c "from app import db; db.create_all()"
Key tables: users, cohorts, lectures, lecture_attendance, announcements, assignments, submissions, blog_posts (with pgvector embedding), task_runs, violations, sessions.
Step 6 — Configure connections
# Memory Service + Flask backend
DATABASE_URL=postgresql://oc_admin:[email protected]:5432/openclaw_club
REDIS_URL=redis://localhost:6379/0
Step 7 — systemd ordering
Ensure oc-api.service and memory service have After=postgresql.service in their [Unit] section.
Step 8 — Backup (recommended)
# Daily pg_dump at 3AM
0 3 * * * pg_dump -h 127.0.0.1 -U oc_admin openclaw_club | gzip > ~/backups/$(date +%Y%m%d).sql.gz
SQLite vs PostgreSQL: Key Differences
| Aspect | Official SQLite | Our PostgreSQL 17 |
|---|---|---|
| Vector search | ❌ None | ✅ pgvector HNSW, 1024-dim bge-m3 |
| Persistent memory | ❌ Session-only | ✅ Permanent, configurable time decay |
| Concurrency | Write locks | ✅ Full concurrent connections |
| Full-text search | Basic LIKE | ✅ GIN index + tsvector |
| Schema layering | Single file | ✅ memory.* + skill.* + business tables |
| Backup | File copy | ✅ pg_dump, WAL streaming |
| JSON support | Text | ✅ JSONB + GIN index |
Summary
Five core upgrades when moving from official OpenClaw to Lingxiao setup:
- Persistent memory — pgvector hybrid search; remember everything across sessions
- Defined persona — SOUL.md gives consistent, opinionated personality
- Vertical skills — 17 custom skills encapsulating real business logic
- Granular governance — AGENTS.md unifies routing, exec policy, memory rules in one file
- Lightweight ops — native systemd, zero Docker, runs on a thin-and-light laptop
This configuration is maintained in the NexAgent workspace and serves as practical material for OpenClaw Club courses.