Install
openclaw skills install secondmindClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Autonomous three-tier memory with proactive initiative, project tracking, and social intelligence. Ingests OpenClaw conversations, extracts knowledge + emotions, and proactively suggests automations, fixes, and project ideas. v1.4.0: Project tracking, semantic dedup, bulk feedback, archive retrieval, gentle reminders. All models via OpenRouter Cloud. Cross-platform: Linux + Windows.
openclaw skills install secondmindActivate this skill when the user:
If the database does not exist at {baseDir}/data/secondmind.db:
node {baseDir}/setup.js
Then guide the user through editing {baseDir}/config.json:
openrouter.apiKey (required – get one at https://openrouter.ai/keys)openclaw.sessionsDir matches their agent's session pathWhen the user sends /new or /reset:
node {baseDir}/scripts/flush.js
When telegramMode is "integrated" in config.json, the OpenClaw agent handles
these commands directly. Execute the corresponding script and format the response.
node {baseDir}/scripts/status.js
node {baseDir}/scripts/proposals.js [proposed|accepted|rejected|all]
node {baseDir}/scripts/feedback.js accept <ID...> [comment]
Supports multiple IDs: /accept 1 3 5 or /accept all
After accepting, a project is automatically created to track progress.
follow_up field from the database:
sqlite3 {baseDir}/data/secondmind.db "SELECT follow_up, description FROM proposals WHERE id=<ID>"/accept 5node {baseDir}/scripts/feedback.js reject <ID...> [comment]
Supports multiple IDs: /reject 2 4 or /reject all
Acknowledge briefly. Don't make a big deal out of it.
node {baseDir}/scripts/feedback.js defer <ID...> [comment]
node {baseDir}/scripts/feedback.js drop <ID...>
node {baseDir}/scripts/feedback.js drop all older_than 14d
Permanently kills proposals – they will never be suggested again, not even reformulated.
Supports: /drop 2 4, /drop all, /drop all older_than 14d
node {baseDir}/scripts/proposals.js # (projects are shown in status)
Lists tracked projects. Filter: active (default), completed, all.
Projects are auto-created when proposals are accepted.
node {baseDir}/scripts/feedback.js complete <ID...>
Marks a project as completed. Completed projects are permanently excluded from future suggestions. The ID refers to the original proposal ID.
node {baseDir}/scripts/feedback.js mute 1d
node {baseDir}/scripts/feedback.js mute 1w
node {baseDir}/scripts/feedback.js unmute
Pauses all notifications and initiative runs for the given duration.
Durations: 1h, 1d, 1w, 2w
The bot understands natural language feedback on the most recently shown proposals:
node {baseDir}/scripts/search.js "<query>" --no-rerank
Query the database at {baseDir}/data/secondmind.db:
SELECT mood, COUNT(*) as count FROM social_context
WHERE detected_at > datetime('now', '-7 days')
GROUP BY mood ORDER BY count DESC;
Format with emoji: 😤frustration 🎉excitement 😰worry 🥳celebration 😫stress 🤔curiosity 😴boredom 🙏gratitude
cd {baseDir} && node scripts/ingest.js && node scripts/consolidate.js && node scripts/initiative.js
When telegramMode is "standalone", the user runs a separate bot daemon:
node {baseDir}/scripts/telegram-bot.js
This requires a dedicated Telegram bot token (different from the OpenClaw agent's bot). The standalone bot handles all the same commands listed above via its own polling loop.
Edit {baseDir}/config.json:
openrouter.apiKey: OpenRouter API key (REQUIRED)openclaw.sessionsDir: Path to your agent's sessions directorytelegramMode: "integrated" (via OpenClaw) or "standalone" (separate daemon)notifications.enabled: true to push proposals to Telegramnotifications.telegram.botToken: Your Telegram bot tokennotifications.telegram.chatId: Your Telegram chat IDmodels.*: LLM model assignments (pre-optimized, change only if needed)initiative.reminderCooldownDays: Days before reminding about deferred proposals (default: 7)initiative.maxNudgesPerProposal: Max reminders before auto-archiving (default: 2)initiative.dedupThreshold: Semantic similarity threshold for dedup (default: 0.85)openclaw.sessionsDir in config.jsonnode {baseDir}/setup.js --reset~$0.60-1.65/month via OpenRouter Cloud. See https://openrouter.ai/models for current prices.