feat(memos-local-openclaw): This PR merges the local plugin 0317 branch (openclaw-local-plugin-20260317).#1289
Merged
syzsunshine219 merged 36 commits intomainfrom Mar 19, 2026
Merged
Conversation
…earch & delete fixes - Add pre-save model validation: embedding required, test before save, fallback prompt for unconfigured summarizer/skill models - Add Chinese model providers: SiliconFlow, Zhipu, DeepSeek, Bailian, Moonshot with auto-fill endpoint and default models - Fix Chinese keyword search: fallback to LIKE when FTS5 returns empty (porter tokenizer does not support CJK); remove incorrect vector score filtering of FTS results - Fix deleteAll: add missing skill_embeddings cleanup, per-table error handling to prevent partial failures - Improve skill visibility error handling with detailed error messages - Bump version to 1.0.1 Made-with: Cursor
…odel health & timestamp fix - Summarize prompt: change from "text summarizer" to "title generator" for shorter output - Summarize quality gate: retry with fallback model when summary >= original length - Topic judge: prioritize skill evolution strong model, fallback to OpenClaw model - Model health UI: redesign to clean table layout - Dedup: remove silent skip for exact duplicates, show as greyed-out entries - Fix recalled-memory overlap filter silently dropping messages before ingest - Remove strongCfg from general Summarizer to avoid wrong model in health status - Fix timestamp bug in migration import: smart detect seconds vs milliseconds - Bump version to 1.0.2-beta.4 Made-with: Cursor
…ection, test result display Made-with: Cursor
…o in viewer Made-with: Cursor
…ewer UI improvements, topic judge & embedding warnings - Multi-agent data isolation: correctly pass agentId from OpenClaw hooks (ctx), owner-based filtering in search/FTS/timeline/get tools, skill guide updated - Viewer UI: sidebar stats always visible on all tabs, analytics page width fix, session section visibility toggle, tab switch jitter fix, unified content max-width - Topic judge prompt: rebalanced to correctly detect cross-domain topic shifts (e.g. cooking vs database config no longer merged) - Embedding banners: warning when using built-in mini model, error when model fails - Test infrastructure: accuracy test script (openclaw agent CLI), agent isolation test Made-with: Cursor
…te, import & postprocess UI improvements - Add semver-based update check: beta users compare against beta tag, stable users against latest tag - Add one-click update button in viewer banner with auto gateway restart - Show stable channel hint for beta users - Import page: show imported count, scan toast, resume button, phase labels - Postprocess: show existing tasks/skills totals, fix progress display on completion - Fix SSE client close timing to prevent last message loss Made-with: Cursor
- Fix ReferenceError in capture hook where `filteredCaptured` was used instead of `captured`, causing `capture failed` warnings on every message ingestion - Add native support for Zhipu, SiliconFlow, Bailian, Cohere, Mistral, and Voyage as LLM providers for both embedding and summarizer, routing them through the OpenAI-compatible path - Improve Model Health UI: classify long error messages into short labels (e.g. "Not found (404)", "Network error"), add JS-based hover tooltip to show full error details - Rewrite plugin auto-update flow using npm pack + tar extraction instead of `openclaw plugins install`, with proper native module rebuild and SIGUSR1-based gateway restart Made-with: Cursor
…lite3 rebuild 错误 - 更新流程中在 npm rebuild better-sqlite3 之后增加执行 node scripts/postinstall.cjs,与命令行安装路径一致(技能安装、版本标记、legacy 清理) - 去掉 rebuild 的 2>/dev/null; true,失败时打 warn 日志便于排查 - npm install 失败时立即返回错误,不再执行后续步骤 Made-with: Cursor
Made-with: Cursor
- Extend SummaryProvider with zhipu, siliconflow, bailian, cohere, mistral, voyage - Fix resultCleaned type narrowing in summarize() with explicit cast for length log - Pass content instead of summary in skill filterRelevant candidateList Made-with: Cursor
Made-with: Cursor
…Node 25+ compatibility - Show Node version in error box and thrown message for easier debugging - When Node >= 25: add hint that prebuilds are unavailable, build tools required - Suggest Node LTS (20/22) as alternative (e.g. nvm install 22) - Thrown error text: include 'install build tools' and 'Or use Node LTS (20/22)' Made-with: Cursor
Made-with: Cursor
fix(openclaw): sanitize FTS date queries with hyphen
When Anthropic (or Anthropic-compatible) endpoints are configured, the endpoint URL was incorrectly normalized by appending `/chat/completions` (OpenAI format), causing 404 errors during skill evolution. The fix detects the provider type from the config key name or base URL and uses the correct endpoint path (`/v1/messages`) and request/response format (x-api-key header, Anthropic message schema) for Anthropic providers. Three locations fixed: - src/shared/llm-call.ts: loadOpenClawFallbackConfig, callLLMOnce - src/ingest/providers/index.ts: loadOpenClawFallbackConfig - scripts/refresh-summaries.ts: callLLM Fixes #1254 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…back config When using Anthropic as the OpenClaw native model, the fallback config was incorrectly treating it as OpenAI-compatible, appending /chat/completions to the endpoint. Now detects provider type from the provider key or base URL and uses the correct endpoint format. Fixes #1254
…el config loadOpenClawFallbackConfig() was hardcoded to ~/.openclaw. Now uses OPENCLAW_STATE_DIR if set, making --profile instances work correctly. Fixes #1224
…ter-sqlite3 Use fileURLToPath(import.meta.url) instead of new URL().pathname for correct platform path handling, and normalize both plugin dir and resolved module path before comparison to avoid false negatives on Windows where backslash vs forward-slash formats differ. Fixes #1192
DeepSeek-style reasoning models emit <think…>…</think⟩ blocks that confuse downstream parsing and trigger error-retry loops, eventually causing timeouts. Strip these tags early in the capture pipeline. Closes #1268
…S RUM - Remove posthog-node dependency, use native fetch to POST events to Aliyun ARMS RUM endpoint in the browser SDK wire format - Persist session ID to disk (.session file with 30-min TTL) so all Gateway subsystem instances share one session and avoid extra billing - Add first_seen_date field to daily_active event for retention analysis - Wire up viewer_opened, skill_evolved (created/upgraded), and plugin_error events to actual call sites - Simplify TelemetryConfig: remove posthogApiKey/posthogHost fields - Privacy: zero user data collected, only anonymous counts/latencies Made-with: Cursor
Closes #1268 ## Summary Strips `<think…>…</think⟩` tags from assistant messages before downstream processing in the OpenClaw local plugin. ## Problem When using models that emit thinking tags (e.g. DeepSeek), the `<think…>` … `</think⟩` blocks were being passed through to capture/storage, cluttering the actual assistant response content. ## Fix - Added `stripThinkingTags()` utility in `apps/memos-local-openclaw/src/capture/index.ts` - Applies regex-based stripping of thinking blocks before processing assistant messages
…ter-sqlite3 (#1265) Fixes #1192. On Windows, the plugin incorrectly reported `better-sqlite3 resolved outside plugin dir` because of path format mismatches (`C:\Users\...` vs `C:/Users/...`). Changes: - Use `fileURLToPath(import.meta.url)` instead of `new URL().pathname` - Add `normalizeFsPath()` to normalize both paths before comparison - Handles `\` vs `/`, case sensitivity, and relative/absolute path differences
…sues (#1251) ## Description resolve search and SQLite installation issues Related Issue (Required): Fixes @tangbotony ## Type of change Please delete options that are not relevant. - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] Refactor (does not change functionality, e.g. code style improvements, linting) - [ ] Documentation update ## How Has This Been Tested? Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration - [ ] Unit Test - [ ] Test Script Or Test Steps (please provide) - [ ] Pipeline Automated API Test (please provide) ## Checklist - [ ] I have performed a self-review of my own code | 我已自行检查了自己的代码 - [ ] I have commented my code in hard-to-understand areas | 我已在难以理解的地方对代码进行了注释 - [ ] I have added tests that prove my fix is effective or that my feature works | 我已添加测试以证明我的修复有效或功能正常 - [ ] I have created related documentation issue/PR in [MemOS-Docs](https://github.com/MemTensor/MemOS-Docs) (if applicable) | 我已在 [MemOS-Docs](https://github.com/MemTensor/MemOS-Docs) 中创建了相关的文档 issue/PR(如果适用) - [ ] I have linked the issue to this PR (if applicable) | 我已将 issue 链接到此 PR(如果适用) - [ ] I have mentioned the person who will review this PR | 我已提及将审查此 PR 的人 ## Reviewer Checklist - [ ] closes #1227 - [ ] Made sure Checks passed - [ ] Tests have been provided
…d clean quickstart text
…' into plugin # Conflicts: # apps/memos-local-openclaw/.gitignore # apps/memos-local-openclaw/tests/storage.test.ts
…oint-normalization
…1260) ## Summary - Anthropic API endpoints were incorrectly normalized by appending `/chat/completions` (OpenAI format), causing 404 errors during skill evolution - Added provider detection logic (from config key name or base URL) to route Anthropic providers to `/v1/messages` with correct headers (`x-api-key`, `anthropic-version`) and response parsing - Fixed three locations: `src/shared/llm-call.ts`, `src/ingest/providers/index.ts`, and `scripts/refresh-summaries.ts` Fixes #1254 ## Test plan - [x] TypeScript compilation passes (`tsc --noEmit`) - [x] All 101 existing tests pass (`vitest run`) - [ ] Manual test: configure Anthropic provider in `openclaw.json` and verify skill evolution succeeds - [ ] Manual test: verify OpenAI-compatible providers continue to work unchanged 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…S RUM
Description
Please include a summary of the change, the problem it solves, the implementation approach, and relevant context. List any dependencies required for this change.
Related Issue (Required): Fixes @issue_number
Type of change
Please delete options that are not relevant.
How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Checklist
Reviewer Checklist