相关产品
手机端可长按上方图片保存到相册,或点击「下载/分享」分享到微信
使用 agentmemory,你可以:
基于真实场景基准测试的 AI 编码智能体长时记忆工具,提供稳定持久化记忆能力,大幅提升智能体上下文理解与任务执行能力。
用户评论 (0)
2026年04月08日
2026年06月05日
2026年04月07日
2026年09月09日
2026年07月17日
2026年06月09日
v0.9.29
2026年08月16日
No breaking changes, drop-in upgrade.
Added
- Cursor plugin: 7 auto-capture hooks + 17 skills + MCP, IDE and
cursor-agentCLI - Devin support:
connect devin --with-hooks(6 native hooks) and a Devin plugin manifest for/agentmemory:<skill>commands - DeepSeek Harness connector (
connect dsh), with--with-hooksfor full auto-capture connect pinow actually installs the extension; capture reaches parity with the Claude Code plugin- Two new skills, 15 → 17:
memory-discipline(when to recall and save) and/lesson(corrections become confidence-weighted rules) - Write-time provenance on every record: origin channel stamped at capture, save, and import
- Keyless graph extraction: the knowledge graph now populates without an LLM key
AGENTMEMORY_LLM_NOTHINK=1to skip the hidden thinking pass during graph extraction- Viewer clarity pass: two-pane session explorer, expandable records, honest zero states
Fixed
- MCP
initializenow negotiates the client's protocol version instead of hardcoding2024-11-05(#908) - Hybrid BM25 + vector + graph ranking reaches
memory_recall, not just smart-search - Superseded memory versions leave the search indexes; recall stops returning stale facts as current
- Lesson recall runs off a real index instead of scanning the whole corpus per query
agentIdthreads through every save path (#1159, #1160, #1197)- Prompt dedup no longer swallows prompts after the first in a TTL window (#1173)
- Stop hook no longer summarizes twice (#1203)
- Per-session project attribution in the OpenCode plugin (#1188)
- Safe
agentmemory stopin Docker mode (#1151) ~/.agentmemory/.envnow applies to every module at boot
Changed
- Provider default models bumped to current generations (OpenAI, Anthropic, Gemini, MiniMax, OpenRouter); explicit
*_MODELoverrides unaffected
Full changelog: v0.9.28...v0.9.29
详细ChangeLogv0.9.28
2026年07月19日
No breaking changes, drop-in upgrade.
Security
- Closed cross-agent memory leak via
/agentmemory/contextunderAGENTMEMORY_AGENT_SCOPE=isolated(#1057)
Fixed
- Hooks no longer crash ("hook exited with code 1") on a null payload from Codex CLI / Claude Code (#1047)
- Engine conflict no longer hangs in a WS reconnect loop; clean recovery and pinned-engine guidance (#984)
- Onboarding stat drift and over-strict engine version gate (#852)
Added
agentmemory demo --serve: one-command seed and recall demo, no second terminal (#852)- opencode
connectadapter; onboarding agent picker single-sourced from adapters (#883) - Session summaries now returned by
GET /agentmemory/sessions(#882) - 15 detailed, self-updating skills covering the whole system (#854)
- Agent-driven install runbook (
INSTALL_FOR_AGENTS.md) and Windows/WSL2 clarity (#853) - Colored CLI output and quieter boot (#984)
Full changelog: v0.9.27...v0.9.28
详细ChangeLogv0.9.27
2026年06月07日
Wave release closing several breaking regressions reported against v0.9.26, plus an agent-scope isolation security fix, an iii version-pin audit fix, and a benchmark scorecard correction. No breaking changes; drop-in upgrade.
Security
AGENTMEMORY_AGENT_SCOPE=isolatednot enforced onmem::search/POST /agentmemory/search/memory_recall/recall_context(#817). PR #654's isolation work covered smart-search,/memories,/observations, and/sessionsbut missed the BM25-only recall path. An isolated worker booted withAGENT_ID=Bcould read agent A's memories via the standard MCPmemory_recalltool. Fail-closed: if isolated mode is on and no agent id resolves, the call throws rather than dropping the filter.
Fixed
/graph/queryand/graph/statstimed out with"Invocation stopped"on large existing corpora (#814, PR #816). Refactoredmem::graph-extractto maintain three side-indexes (graphNameIndex,graphEdgeKey,graphNodeDegree) so every extract path is O(1), never O(n). Hot path reads exclusively from a precomputed top-degree snapshot updated inline on every extract.- All data lost on
agentmemory stopfollowed by restart (#843). Stop order inverted: worker first with a 5s SIGTERM grace so index flush can land, engine second. mem::graph-snapshot-rebuildandmem::graph-resetheartbeat-crashed on legacy >25K-node corpora (#825). Rebuild now refuses pre-flight when no prior snapshot exists. Reset is now enumeration-free: writes empty snapshot withresetAtepoch marker. Future extracts treat any pre-resetAtrow as orphan.- Multi-instance port collisions on one host (#750, PR #815).
--port Nnow drags streams + engine. New--instance Nshortcut picks a 100-port block. - iii console install pulled latest engine instead of the pinned v0.11.2 (audit). Install command now passes
VERSION=${IIPINNED_VERSION}. Render path is platform-aware: Windows users get a PowerShell hint.
Added
POST /agentmemory/graph/snapshot-rebuild(≤25K nodes,force: trueto bypass).POST /agentmemory/graph/resetenumeration-free clean-restart.--instance NCLI flag for multi-daemon (max N=50).GraphSnapshot.topDegrees,GraphSnapshot.resetAt,GraphQueryResult.fromSnapshot,GraphQueryResult.warning.
Changed
- REST endpoint count: 126 → 128.
mem::graph-statsreads exclusively from snapshot.mem::graph-queryempty-body / nodeType path reads exclusively from snapshot.mem::searchover-fetch triggers on agentId filter too.
Docs
- Corrected coding-agent-life-v1 P@5 numbers (#796).
- README refresh: stats 174 files / 1,390+ tests / 258 functions; "New in vX.Y.Z" callout removed.
import-jsonlusers warned about Claude Code'scleanupPeriodDays30-day default.
Full changelog: CHANGELOG.md
详细ChangeLogv0.9.26
2026年06月03日
Hotfix on top of v0.9.25. Closes #797.
Fixed
- First boot crash:
TypeError: Cannot read properties of undefined (reading 'v')(#797). The sharded index load path checkedmanifest.value !== nullbefore forwarding, but some iii-state adapters returnundefined(notnull) for a missing key.loadManifestData(undefined)then crashed onundefined.v. Now treats both null + undefined + non-object values as 'no manifest' and falls through to the legacy load path.
Self-healing was already in place — the next debounced save rebuilt a fresh manifest — but the crash on first boot scared every fresh upgrader.
Upgrade
npm install -g @agentmemory/agentmemory@0.9.26
If you already saw the warning on v0.9.25 and the daemon kept running, you're fine — the index was already rebuilt. v0.9.26 just makes the first-run boot quiet.
Verified
- 125 test files / 1381 tests pass
- Build clean
v0.9.25
2026年06月03日
Bug-fix wave closing every breaking 0.9.24 regression, plus a feature lane. Eleven issues closed. No breaking changes; drop-in upgrade.
Fixed
- Cross-provider fallback always 404'd and tripped the circuit breaker (#778). Fallback resolved each provider's own env-driven default model instead of inheriting the primary's.
import-jsonlaborted entire batch on legacy session row missingid(#775). Re-keys onparsed.sessionId, backfills missingexisting.id.parseSummaryXmlsilently dropped summaries wrapped in markdown fences (#783). NewstripXmlWrappers()peels fences + pre/postamble; final-merge parse retries once.sdk.triggerVoid is not a functionon iii-sdk 0.11.2 (#758 / #726). All 9 call sites migrated totrigger({ action: TriggerAction.Void() }).- pi integration recorded every observation as "No content provided" (#759). Field-name fix:
tool_input/tool_output. - Fresh global install refused to boot when PATH iii didn't match the runtime pin (#752). Private install at
~/.agentmemory/bin/+ auto-fallback. Existing user iii stays untouched. mem::obsidian-exportHTTP 500[object Object]on any record missingid(#729). Four-layer hardening + outer try/catch.- Concurrent agent-sdk summarize chunks failed with
too_many_chunks_skipped(#781).AsyncLocalStoragerecursion guard + reference-counted env marker. - Viewer #graph tab blank on large graphs (#753).
graph/querypagination + degree-ranked default cap + viewer error banner with Retry.
Upgrade
npm install -g @agentmemory/agentmemory@0.9.25iii-sdk and iii-engine pins stay at v0.11.2.
Full changelog: https://github.com/rohitg00/agentmemory/blob/main/CHANGELOG.md
详细ChangeLogv0.9.23
2026年05月29日
0.9.23 — 2026-05-28
Bug-fix + integration wave. GitHub Copilot CLI joins the supported agent matrix with plugin + hooks + MCP coverage. Three silent DX bugs fixed end-to-end: graph extraction never fired on session end, agentmemory status reported zero memories, consolidation defaulted off even with an LLM provider configured. Five additional adapters and a clearer local-LLM story for Ollama / LM Studio users. agentmemory connect now points users at npx skills add for the native-skills install path (50+ agents).
Added
- GitHub Copilot CLI (PR #534). Full first-class support:
plugin/plugin.jsonmanifest,hooks.copilot.jsonlifecycle hooks for all 11 Copilot events with camelCase payload normalization,agentmemory connect copilot-cliMCP path, first-run onboarding default-select viaCOPILOT_CLI/COPILOT_AGENT_SESSION_IDenv detection, Windows-safecmd.exe /d /s /c npxwrapper. Standalone MCP transport now speaks LSP-styleContent-Lengthframed JSON-RPC alongside the existing newline-delimited form so Copilot's stdio init handshake works. - Five new MCP adapters (PR #677). Warp, Cline, Continue, Zed, and Droid.
createJsonMcpAdapterextended withwrapperKey(Zed usescontext_serversinstead ofmcpServers) andextraEntryFields(Droid requirestype: "stdio").ADAPTERScount: 11 → 17. /agentmemory/graph/buildendpoint (PR #698). Backfills the knowledge graph from existing compressed observations across every session in configurable batches. Wires up the viewer's "Build Graph" button that previously returned 404.- 11 README translations + language picker (PR #675). zh-CN, zh-TW, ja-JP, ko-KR, es-ES, pt-BR, fr-FR, de-DE, ru-RU, tr-TR, hi-IN.
npx skills addhint in connect output (PR #709). After a successfulagentmemory connect <agent>, the CLI now prints the matchingnpx skills add rohitg00/agentmemory -ycommand so users get the native-skills install alongside MCP wiring. TheskillsCLI covers 50+ agents including the 5 added in PR #677. README "Other agents" section gains a dedicated subsection explaining the two-step pattern (connectwrites MCP config,skills addinstalls the 8 SKILL.md files into the agent's native skill directory).
Changed
- Consolidation auto-enables when an LLM provider is configured (PR #696, closes #612).
CONSOLIDATION_ENABLEDdefaulted tofalse, so users with a working provider got compression + summarization but zero graph nodes / crystals / lessons. Now defaultstruewhenever any ofANTHROPIC_API_KEY/OPENAI_API_KEY/OPENROUTER_API_KEY/GEMINI_API_KEY/GOOGLE_API_KEY/MINIMAX_API_KEY/OPENAI_BASE_URLis set, orAGENTMEMORY_PROVIDER=agent-sdk. Explicit=false/AGENTMEMORY_PROVIDER=noopstill opt out.OPENAI_API_KEY_FOR_LLM=falsehonored (key scoped to embeddings). - Fire-and-forget telemetry hooks (PR #688, closes #573). Nine telemetry-only hooks (notification, post-tool-failure, post-tool-use, prompt-submit, stop, session-end, subagent-start, subagent-stop, task-completed) switched to unawaited
fetch(...).catch(() => {})paired withsetTimeout(() => process.exit(0), 500).unref()(1500ms for the multi-fetchstop+session-endhooks). No longer blocks Claude Code's next-prompt boundary on every assistant turn. - Observability defaults tamed (PR #686, closes #519).
iii-config.yamldefaults:sampling_ratio: 0.1,logs_console_output: false.findIiiConfig()precedence reversed soAGENTMEMORY_III_CONFIGenv > cwd >~/.agentmemory/iii-config.yaml> bundled.
Fixed
- Graph extraction never fires automatically (PR #698, closes #666).
event::session::stoppedlistens onagentmemory.session.stoppedbut nothing in the codebase ever published that topic.api::session::endnow directly callssdk.triggerVoid("event::session::stopped", { sessionId })(try/catch guarded so a fan-out error doesn't fail the HTTP response). Knowledge graphs now materialize automatically when sessions end. agentmemory statusshows Memories/Observations = 0 (PR #698, closes #666). CLI fetched/agentmemory/exportfor counts but that endpoint times out (>5s) on iii-engine's file-based KV under concurrentkv.list(). Switched to/memories?count=true(count-only, constant-time) + sum ofsessions[].observationCount.- Hooks send full filesystem path as
projectinstead of repo basename (PR #687, closes #474). Native sessions, replay-import, andmemory_lesson_saveall use repo basename — the path/basename mismatch silently filtered out the bulk of relevant lessons from auto-injected context. NewresolveProject(cwd?)helper:AGENTMEMORY_PROJECT_NAMEenv >git rev-parse --show-toplevelbasename >basename(cwd). Applied to 9 hooks. - Cross-project memory leakage (PR #662). Memories created in one project leaking into recall on another. Wildcard guard pattern
(!project || !m.project || m.project === project)preserves backward-compat for legacy unscoped memories while scoping new ones strictly. - Graph parser tolerates reordered XML attributes (PR #685, closes #635). Order-dependent regex replaced with order-independent
parseAttrshelper. Self-closing trailing-/handling preserved. - Defensive null guards on
Memory.sessionIds(PR #684). Older exports + hand-edited dumps can omit this field; now treated as empty array on read. - Vector index Buffer slice metadata round-trip (PR #683, closes #587, #584).
byteOffset+byteLengthpreserved onBuffer.fromandFloat32Arrayconstruction so base64 round-trips don't corrupt vectors stored as slices. - Slots HTTP triggers return 503 not 500 (PR #682, closes #678). Feature-flag-disabled responses now use the documented 503 shape with
enableHow+docsHref..envpropagation fixed (now reads viagetEnvVar()not rawprocess.env). agentmemory doctorpoints to correct iii install URL (PR #681).- Separate
OPENAI_EMBEDDING_BASE_URL+OPENAI_EMBEDDING_API_KEY(PR #503). Lets users route embeddings and LLM calls to different OpenAI-compatible endpoints (e.g. cloud OpenAI for embeddings + local LM Studio for LLM, or vice versa). - Viewer Memories tab sorts newest first (PR #701, closes #674). Memories list rendered in KV-insertion order, hiding just-saved entries at the bottom of long lists.
loadMemories()now sorts oncreatedAtdesc (fallbackupdatedAt) before items reach state — matches thelocaleComparepattern Sessions / Metrics tabs already use.
Docs
- Local-LLM section in README (PR #697, closes #671). Dedicated "Local models (Ollama / LM Studio / vLLM)" subsection with copy-paste configs, model-pick table (qwen2.5-coder:7b, llama3.2:3b, mistral:7b-instruct, deepseek-r1:7b), and reasoning-model empty-content callout. Existing OpenAI-compatible support was buried in a one-line env comment.
- Three pipeline layers, not three primitives (PR #690). Website + README copy: the three primitives are worker / function / trigger (iii). HOOKS / RECALL / CONSOLIDATE are pipeline layers. Section anchor renamed
#primitives→#stackto match the nav label.
Infrastructure
- Hook scripts now bundle per-entry instead of sharing chunks, so
plugin/scripts/_project-*.mjshashed artifacts no longer churn the diff on every build. AGENTS.md"Hook Scripts" section documents the two patterns (context-injecting vs telemetry-only) and the 500ms / 1500ms exit-delay rule for single vs multi-fetch hooks.- Test suite: 1271 → 1291 (+20 new tests covering project basename resolver, fire-and-forget wiring, consolidation default behavior, session-end → graph extraction, the graph-build endpoint, and the viewer memories sort).
v0.9.22
2026年05月26日
Stability + ecosystem wave. Three install-broken bugs (npm install ERESOLVE, non-OpenAI base URLs, broken Claude bridge path) closed. Six runtime bugs from active users fixed end-to-end. Three new agent integrations (Qwen Code, Antigravity, Kiro). New AGENT_ID scope for multi-agent setups. Port mapping documented.
Fixed
-
npm installERESOLVE on fresh install (PR #649, closes #631).@anthropic-ai/sdkbumped from^0.39.0to^0.93.0soclaude-agent-sdk's peer is satisfied. Verified clean install with only the publisheddependenciesblock. -
Non-OpenAI base URLs silent-404 (PR #649, closes #646, #628).
buildChatUrl+buildEmbeddingUrlno longer blindly prepend/v1/. DeepSeek, SiliconFlow, Zhipu (/api/paas/v4), vLLM, LM Studio, Ollama all resolve correctly. -
CLAUDE_MEMORY_BRIDGEwrites to a path Claude Code reads (PR #649, closes #625). Slug now preserves the leading-on POSIX absolute paths and drops the spurious/memory/subdir, matching~/.claude/projects/<slug>/MEMORY.md. -
OpenAI provider reads
reasoning_contentfor thinking models (PR #648, closes #627). DeepSeek V4 / Qwen3 / GLM / Kimi returnmessage.reasoning_content. Previously onlymessage.reasoningwas checked — compress silently failed every call and tripped the circuit breaker. -
agentmemory stopreaps the worker process (PR #648, closes #640, #474). Worker pid is written to~/.agentmemory/worker.pidon boot;stopsignals both engine + worker. -
OpenCode plugin implicit-creates the session on first observation (PR #648, closes #638).
mem::observecreates the session row when one doesn't exist. No more orphan observations orSession not found for summarize. -
OpenCode plugin zero-config auto-context injection (PR #648, closes #431).
POST /session/startcontext is cached per-session; the existingexperimental.chat.system.transformhook reads from the cache. -
Viewer graph settles on 1000+ node graphs (PR #648, closes #563). Tick-decayed damping, per-node velocity cap, raf park on quiescence. Mousedown / wheel / zoom / recenter re-wake the parked loop.
-
/memories+/exportpaginate (PR #648, closes #544). New?count=trueand?limit=N&offset=Mon/memories./exportforwards?maxSessions+?offset. Stops large corpora (8K+ memories) from timing out at the iii-engine invocation boundary. -
Claude Code drops the MCP server silently (PR #650, closes #510).
plugin/.mcp.jsonenv block uses${VAR:-default}form. Unset required vars no longer fail config parse. -
Full 51-tool MCP surface by default (PR #650, closes #553).
getVisibleTools()default flipped fromcore(8) toall(51) to match what every plugin manifest advertises.AGENTMEMORY_TOOLS=corestill gives the lean set. -
Connect adapters write
${VAR:-default}env block (PR #650).agentmemory connectfor Claude Code / Cursor / Gemini CLI / Windsurf writes the same default form. -
Hermes
memory statusno longer reports the plugin as Missing (PR #643, closes #520). Hermes plugin seedsAGENTMEMORY_URLtohttp://localhost:3111at import. Works for systemd-managed agentmemory where the env file is loaded viaEnvironmentFile=and never reaches the interactive shell. -
Deleted memories cleared from BM25 + vector indices (PR #636 by @abhinav-m22, closes #632).
SearchIndex.remove()added and called from every delete path. Snapshot flushed synchronously so a SIGKILL between mutation + debounce can't resurrect deleted entries. -
PostToolUse hook reads
tool_response, falls back totool_output(PR #561 by @faraz152, closes #539). Claude Code's PostToolUse payload usestool_response. Now readstool_response ?? tool_outputso legacy integrations keep working. -
iii-sdk pinned to exact
0.11.2(PR #567, closes #555).iii-sdk@0.11.6introduced a routing regression where every/agentmemory/*route returned 404. Pin removes the caret. -
OpenAI provider sends explicit
stream: false(PR #526 by @Ptah-CT). Some OpenAI-compatible proxies default totext/event-streamwhenstreamis absent. -
Viewer search uses NFKC normalisation for CJK / fullwidth input (PR #542 by @kaushalrog).
-
Viewer splash shows actual bound viewer port (PR #560 by @Tanmay-008, closes #521).
/agentmemory/liveznow returnsviewerPort+viewerSkipped. -
Viewer tab bar height stable across tab switches (PR #325 by @hungtd119, closes #324).
-
Graph parser accepts self-closing
<entity .../>tags (PR #494 by @Rex57, closes #492). -
Plugin MCP server inherits remote/auth env (PR #386 by @LaplaceYoung, closes #375).
-
@agentmemory/mcprejects literal${VAR}placeholders. AnyAGENTMEMORY_URL/AGENTMEMORY_SECRETvalue of the form${...}is treated as unset and falls back tohttp://localhost:3111. -
Codex
stophook closes session (PR #579, closes #493).Stopwas missing from the Codex bundle; session never got marked completed. -
Claude Code
--with-hooksworks for MCP-standalone users (PR #581, closes #508).
Added
-
AGENT_IDmulti-agent memory isolation (PR #654, closes #554). OptionalAGENT_IDenv tags every Session / RawObservation / CompressedObservation / Memory.AGENTMEMORY_AGENT_SCOPE=isolated(opt-in;shareddefault) also filters every recall path (mem::smart-search,/memories,/observations,/sessions). Per-call overrides via request body +?agentId=<role>/?agentId=*query params.?includeOrphans=truesurfaces pre-tag rows. -
Qwen Code connect adapter (PR #651, closes #647).
agentmemory connect qwenwrites the standardmcpServersblock to~/.qwen/settings.json. -
Antigravity connect adapter (PR #651, closes #614). Replacement for Gemini CLI (sunset 2026-06-18). Writes
mcp_config.jsonto the platform-specific User dir. -
Kiro connect adapter (PR #651, closes #618). Writes user-level
~/.kiro/settings/mcp.json. -
Cost-aware model selection (PR #654, closes #613). Runtime warning when
OPENROUTER_MODELmatches the premium pattern. README cost-tier table with measured workload data. Suppress viaAGENTMEMORY_SUPPRESS_COST_WARNING=1. -
Pluggable benchmark harness (PR #562). New
eval/directory with thecoding-agent-life-v1corpus (15 sessions + 15 graded queries) and three adapters (grep, OpenAI embeddings + cosine, agentmemory hybrid). LongMemEval support. Sandboxed agentmemory + iii-engine on alt ports viaeval/scripts/sandbox.sh. Dev-only — no runtime impact. -
agentmemory connect codex --with-hooksopt-in flag (PR #564, closes #509). Workaround for openai/codex#16430. -
Cross-platform CI matrix (PR #556). Ubuntu + macOS × Node 20 + 22,
paths-ignore, per-branch concurrency cancellation.
Docs
-
Port mapping table (PR #651, closes #629).
3111REST /3112streams /3113viewer /49134engine WS + env overrides + stale-process cleanup recipe. -
Pairings recipe (PR #641).
docs/recipes/pairings.mdcovers stacking agentmemory with codegraph, Understand Anything, and Graphify. -
Multi-agent README section (PR #654).
AGENT_ID+AGENTMEMORY_AGENT_SCOPEsemantics, per-endpoint behavior table. -
Supply-chain policy in SECURITY.md (PR #654, closes #540). Explains why no lockfile is committed (
dist/ships pre-built) and what monitoring exists. -
README "Config File" section + Windows path (PR #321 by @aqilaziz, closes #293).
Infrastructure
- 108 test files, 1171 tests pass.
- Agent count: 8 → 11 (claude-code, codex, cursor, gemini-cli, qwen, antigravity, kiro, openclaw, hermes, pi, openhuman).
v0.9.21
2026年05月20日
0.9.21 — 2026-05-19
Quality + integration wave. Headline: native OpenCode plugin with full Claude Code hook parity (#237 by @cl0ckt0wer). Ten more PRs alongside: memory_recall returning the wrong shape, env-file AGENTMEMORY_DROP_STALE_INDEX silently ignored, hook scripts crashing on Windows usernames with spaces, viewer search inputs interrupting CJK IME composition, large sessions silently failing at the LLM context limit, lessons invisible to smart-search, Hermes plugin manifest missing hooks, cli onboarding crashing in non-TTY contexts, rebuildIndex blocking boot on large corpora, 25h embed-loop bottleneck during rebuild, and the v0.9.19 iii-console installer workaround can come out now that upstream is fixed.
Added
- OpenCode plugin with 22 auto-capture hooks (PR #237 by @cl0ckt0wer, closes #236 + #244). Complete OpenCode plugin in
plugin/opencode/matching Claude Code hook parity. Covers session lifecycle (8 hooks), messages (3), tool lifecycle (2), part tracking, permissions, task tracking, plus a two-layer enrichment pipeline (memory context on first turn, file enrichment on subsequent turns) and two slash commands (/recall,/remember). Full gap analysis inplugin/opencode/README.md.
Fixed
-
memory_recallendpoint + format/token_budget forwarding (PR #516 by @serhiizghama, closes #507 + #440). MCPmemory_recallalways returned compact mode and droppedformat+token_budgetparams. Two root causes fixed: standalone shim routed through/agentmemory/smart-searchinstead of/agentmemory/search, and the local-fallback path didn't read either param. Now routes correctly, forwards both params end-to-end, defaultsformatto"full"matching the MCP schema. -
env-file
AGENTMEMORY_DROP_STALE_INDEXflag now honored (PR #461 by @honor2030, closes #456). Setting the flag in~/.agentmemory/.envwas silently ignored because the boot path readprocess.envdirectly. NewisDropStaleIndexEnabled()helper reads merged env. Combined with #455 + #469 reports, this is the unblock path for the stale-index server-crash recovery loop. -
Windows hook scripts quote plugin paths correctly (PR #487 by @honor2030, closes #477). Hook command strings referenced
${CLAUDE_PLUGIN_ROOT}/scripts/*.mjswithout quotes — Windows users with spaces in their username had every hook crash. Quotes added + regression test. -
Viewer search inputs honor IME composition (PR #517 by @jonathanzhan1975). CJK users typing in the viewer's search inputs hit mid-character interruption — every keystroke fired the
oninput=re-render handler, breaking IME composition mid-syllable. NewbindImeSafeSearchhelper defers re-render untilcompositionend. -
Chunk large sessions to fit LLM context window (PR #472 by @efenex). Sessions with >7000 observations silently failed at the LLM provider's context limit — the consolidation pipeline silently skipped the session. New chunking splits oversized sessions across multiple compress calls + restitches the narrative via a
REDUCE_SYSTEMprompt. Legacy single-call path preserved when obs count is under the chunk size. Backfill script underscripts/for users hitting the pre-fix bug. -
Surface lessons in smart-search + diagnose tally (PR #473 by @efenex). Closes the lesson round-trip with #458 (lessons auto-injected into
mem::context): lessons are now also returned alongside hybrid search results in a separatelessonsfield onsmart-search, and thediagnosehealth surface tallies per-store counts so the trust-shock pattern (save succeeds, recall empty, diagnose says 0) goes away. -
Declare all Hermes plugin hooks (PR #486 by @honor2030). The Hermes
plugin.yamlmanifest only declared 3 of the 6 implemented hooks. All 6 now declared (prefetch,sync_turn,on_session_end,on_pre_compress,on_memory_write,system_prompt_block). -
rebuildIndexnon-blocking on boot (PR #500 by @efenex). Boot path previouslyawait-edrebuildIndex(kv), so the viewer + later boot steps stalled — on large corpora this was 25h+ of blocked startup. Replaced withvoid rebuildIndex(kv).then(...).catch(...)so the rebuild runs in the background. -
Batched embed calls in
rebuildIndex(25h → 3h on large corpora) (PR #504 by @efenex). The rebuild loop made one embed call per observation, paying full HTTP RTT per item. NewvectorIndexAddBatchGuardedhelper batches embeds (default 32, configurable viaREBUILD_EMBED_BATCH_SIZE) and try/catches per-item failures. Measured 25h → 3h on a 250k-observation corpus. -
CLI skips onboarding prompts without a tty (PR #491 by @honor2030). Onboarding prompts crashed in non-interactive contexts (CI,
docker run -d, piped input). New guard short-circuits with sensible defaults when stdin/stdout aren't TTYs orCI=1.
Changed
- Drop iii-console installer
--nextworkaround (PR #546). v0.9.19 routed first-run iii-console install throughbash -s -- --nextto dodge an upstream tag-prefix bug at iii-hq/iii#1652. Upstream iii-hq/iii#1660 shipped 2026-05-19;install.iii.dev/console/main/install.shis a CDN proxy serving upstream main HEAD so the fix is live without an iii release tag. Reverted to canonical barecurl ... | sh.
Infrastructure
- 95 test files (was 92), 1067 tests pass (was 1038) on
chore(release): v0.9.21. - Bundles 11 PRs: 1 contributor feature + 9 bug fixes across MCP / hooks / viewer / summarize / lessons / Hermes / rebuildIndex / CLI + 1 upstream-installer revert.
- New contributors landing first PRs this release: @cl0ckt0wer, @serhiizghama, @jonathanzhan1975.
v0.9.20
2026年05月19日
0.9.20 — 2026-05-18
Hotfix: revert the Codex Stop → session-end chain shipped in v0.9.19.
Fixed
- Revert Codex Stop hook session-end chain (PR #501 by @Rex57, reverts v0.9.19's #495, re-opens #493). Post-merge field-testing surfaced the underlying issue: Codex
Stopfires before the overall conversation is truly finished — multiple Stops bracket each assistant turn within one session. Chainingsession-end.mjsfrom Stop marked sessions completed too early, with later observations still arriving against anendedAt-stamped record. Restored to summarize-only Stop; the SessionEnd-shaped solution stays open as #493.