Skip to content

Releases: rikouu/cortex

v0.10.5 — Bug Fixes

31 Mar 10:38

Choose a tag to compare

Bug Fixes

  • Fix duplicate memory injection across conversation turns — Each turn was re-injecting all previously recalled memories, causing context bloat that grew linearly with turn count. Added exclude_ids support to the recall API and session-level memory ID tracking in the bridge plugin so only net-new memories are injected per turn.

  • Fix relative dbPath resolution (Closes #19) — Relative storage.dbPath (e.g. cortex/brain.db) was used as-is, causing DB file drift when the server's working directory differed from expectations. Now resolved to absolute path once at config load time, ensuring initDatabase, sqlite export, markdown export, and backup all use the same file. Dashboard /api/v1/config now exposes resolvedDbPath for visibility.

Packages

v0.10.4 — Bug Fixes

28 Mar 07:15

Choose a tag to compare

Bug Fixes

  • OpenClaw plugin ID mismatch fixed@cortexmem/openclaw now correctly declares plugin id "openclaw", resolving the plugin id mismatch (manifest uses "cortex-bridge", entry hints "openclaw") error on install (reported by @rollingshmily, #17)
  • Reindex now rebuilds vec0 table on dimension change — Clicking "重建向量索引" after switching embedding models (e.g. voyage-3.5 → text-embedding-3-large) no longer fails with Expected 1536 dimensions but received 1024. The reindex endpoint now reinitializes the vector backend before re-embedding (reported by @rollingshmily, #17)
  • Embedding hot-reload reinitializes vector backend — Saving a new embedding config via Dashboard or PATCH /api/v1/config now immediately rebuilds the vec0 table if dimensions changed, no restart needed
  • Neo4j relation deduplication — Repeated extraction of the same (subject, predicate, object, agent_id) tuple now updates a single edge instead of creating duplicate edges (contributed by @xieyuanqing, #16)
  • Correction cascade for state memoriescorrection memories now correctly supersede related todo, decision, goal, project_state memories; search coverage expanded to include todo, constraint, policy categories (contributed by @xieyuanqing, #16)

Packages


感谢 @rollingshmily 提交详细的 bug 报告 (#17),以及 @xieyuanqing 贡献 PR #16 修复 Neo4j 去重和 correction cascade 问题 🙏

v0.10.3 — Agent Namespace Isolation + Bug Fixes

25 Mar 13:20

Choose a tag to compare

Features

  • pairing_code: Agent namespace isolation — Multiple OpenClaw/MCP/API instances sharing the same agent_id no longer mix memories. Set CORTEX_PAIRING_CODE per instance for isolated namespaces.

Bug Fixes

  • Fix 415 Unsupported Media Type on Dashboard test/reindex buttons (#15)
  • pairing_code filter properly applied in hybrid search + memory-writer

Packages

v0.10.2 — Recall Performance

21 Mar 05:37

Choose a tag to compare

⚡ Performance

  • Recall timeout: Configurable recallTimeoutMs (default 5000ms). If total recall exceeds budget, returns partial results instead of blocking agent response
  • Reranker instant failover: Auth errors (401/403) skip immediately (<100ms) instead of waiting for timeout
  • Parallel variant embedding: All expansion variants embedded in a single batch API call (1 request instead of N)
  • Budget-aware sub-timeouts: Reranker and expansion respect remaining recall budget — no more overshooting

🎨 Dashboard

  • Recall timeout config in Gate section with recommendations:
    • 1 variant → 3000ms
    • 3 variants → 5000ms (default)
    • 6 variants → 8000ms
    • 10+ variants → 12000ms

🐛 Fixes

  • Timer leak: recall timeout timer properly cleaned in try/finally
  • Reranker/expansion no longer use hardcoded timeouts that ignore the total budget

v0.10.1

21 Mar 05:18

Choose a tag to compare

Fixes

  • Auto-rebuild vec table on embedding dimension change: Switching embedding models (e.g. text-embedding-3-small 1536d → text-embedding-3-large 3072d) now automatically drops and recreates the vec0 virtual table with correct dimensions on startup. Previously this would silently fail, leaving vector search broken.
  • Reindex reports upsert errors: Vector upsert failures during reindex are now caught and reported in the errors field, instead of being silently swallowed while reporting success.

v0.10.0 — Memory Self-Improvement + Dashboard Redesign

21 Mar 03:14

Choose a tag to compare

🧠 Memory Self-Improvement System

Cortex memories now learn from usage. Recalled memories get implicit feedback based on whether the agent actually uses them, and users/agents can submit explicit feedback (+1/0/-1).

How it works

  • Implicit feedback: When memories are recalled, Cortex tracks which ones the agent actually uses
  • Explicit feedback: POST /api/v1/memories/:id/feedback with +1 (useful), 0 (neutral), -1 (wrong)
  • Auto-adjustment: Lifecycle engine adjusts importance based on accumulated feedback
  • Stability safeguards: Min 3 feedbacks, ±0.1 max delta, configurable window size
  • Full audit trail: Every adjustment logged for rollback

New API Endpoints

  • POST /api/v1/memories/:id/feedback — Submit feedback
  • GET /api/v1/memories/:id/feedback — Feedback history
  • POST /api/v1/recall/:recallId/usage — Report implicit usage
  • GET /api/v1/feedback/overview — Dashboard overview

🎨 Dashboard UX/UI Redesign

Complete visual overhaul inspired by Linear/Vercel dashboard aesthetic:

  • New CSS design system with layered backgrounds and 4-level text hierarchy
  • Redesigned sidebar with section dividers
  • Stats page with improved charts and trend indicators
  • Memory browser with category-colored cards and inline feedback buttons (👍😐👎)
  • Self-improvement configuration panel in Settings
  • All pages polished and modernized

🔒 Security

  • Rate limiting on feedback endpoints
  • Input validation (maxLength, maxItems)
  • Recall session map size cap with TTL cleanup

Thanks to @DeemoASCII for the multi-agent feedback in #12!

v0.9.5

20 Mar 17:35

Choose a tag to compare

v0.9.5 — Security & Quality Release

🔒 Security

  • Fix timing leak in safeCompare — pad both strings to equal length before constant-time comparison, preventing token length inference via timing side-channel

🐛 Fixes

  • Deep merge for env config overridesloadConfig now uses deepMerge so env vars like CORTEX_DB_PATH don't clobber other nested config keys
  • PLUGIN_VERSION corrected to match package version (was showing stale 0.5.1)
  • README accuracy — Node.js requirement fixed (>= 20), removed speculative model names, added cortex_relations to MCP tools table

📄 Docs

  • Added MIT LICENSE file
  • CHANGELOG updated with dates and missing v0.9.3 entry
  • Multi-agent isolation docs clarified

📦 cortex-bridge v0.6.2

  • Synced PLUGIN_VERSION with package version
  • Published to npm: @cortexmem/[email protected]

Thanks to @DeemoASCII for the multi-agent isolation feedback in #12 that drove the v0.9.4 improvements!

v0.9.4

20 Mar 17:03

Choose a tag to compare

What's New

🔀 Multi-Agent Memory Isolation

  • OpenClaw Plugin: Automatic isolation via ctx.agentId — no config needed
  • MCP: Use --agent-id per server instance for full isolation
  • Tools: Optional agent_id parameter on all tools
  • Per-session agent caching with race condition mitigation
  • Per-agent dedup hash map

⚡ Config Hot-Reload Improvements

  • Selective engine rebuild — only reconstruct what actually changed
  • Added hot-reload for sieve, flush, lifecycle, markdownExport configs
  • Fixed MarkdownExporter not rebuilt on config change

🎨 Dashboard Improvements

  • Switching providers preserves previously entered API keys
  • Keys seeded from initial config on mount

🐛 Fixes

  • Version endpoint now reads from root package.json only
  • Fixed wrong version display after deploy

Closes #12

v0.9.3

19 Mar 03:25

Choose a tag to compare

Bug Fixes

  • Fix pre-lifecycle backup always failing due to non-existent config.dataDir field (#11)
    • Replaced config.dataDir with config.storage.dbPath in backupDb()

Closes

v0.9.2

13 Mar 09:41

Choose a tag to compare

What's Changed

🧠 Fast Channel Accuracy Overhaul

Comprehensive audit and fix of all regex-based signal detection patterns. 55 regression tests passing.

False positive fixes:

  • skill: "我会去超市" no longer misdetected as a skill (requires skill verbs like 写/开发/部署)
  • todo: "记得吗" and "需要注意的是" no longer misdetected as todos
  • decision: "你决定吧" no longer misdetected (requires first person 我)
  • correction: "其实是我忘了" no longer misdetected as a correction
  • preference: Adverb support — "我比较讨厌", "我非常喜欢", "我有点不想" now correctly detected

Question detection improved:

  • Added 吗/呢 sentence-ending particle detection
  • Indirect patterns (觉得...好, 还是...好) correctly skipped for questions

🌍 Multi-language & Multi-scenario Coverage

  • Korean (한국어): Preference, identity, and smalltalk patterns added
  • Identity: 20+ non-tech professions (护士/律师/厨师/主妇/骑手/销售...), colloquial "我是做...的", expanded EN roles
  • Skill: Life skills (弹琴/做饭/开车/画画/游泳/修东西...)
  • Smalltalk: Emoji-only messages, repeated chars (ㅋㅋㅋ/哈哈哈/666666), 晚安/早安/拜拜

📝 Prompt Improvements

  • Added double-negation example ("不是说不喜欢" → do not extract)
  • Added infrastructure relation example with new predicates: deployed_on, configured_with, runs_on
  • nothing_extracted field now explicitly required
  • Smart Update prompt: 4 few-shot examples (conflict/merge/replace/keep)

Full Changelog

v0.9.1...v0.9.2