Repository navigation
Replies: 3 comments 4 replies
|
There is already a host-side diagnostic for this. I checked the published A missing For the instability variant, the comparisons include persisted snapshots, persistence-binding identity and live session IDs. A newly attached session can matter even before a turn writes anything. For the exception variant, valid Zstandard framing does not rule out a failure in A clean-plugin run is useful as a comparison, but capture the warning first. That identifies which branch to investigate without guessing at configuration or moving more archives. The code links show the corresponding source; this does not reproduce your Windows failure or identify its cause. |
|
Follow-up after the mitigations you may not have tried yet — the failure mode changed, and the new data narrows it to the observation-stability requirement. Status change: from "every call fails" to "intermittent"After the initial report we changed two things in our profile:
With that, "every call fails" is gone, but session search is now intermittent: 13 failed calls in ~10 hours on 0.2.1-rc.2 (win-x64), while the surrounding calls succeed. Failure distributionOf the 13 failures, 12 surface as The 21:48–21:49 cluster is the one we can correlate: host event logs show another session doing turn-end / tool work in the same seconds, i.e. the session store was being written while the observation ran. (Indirect, but consistent with #9743's "live-session churn prevents the observation from stabilising".) Code reading (packaged 0.2.1-rc.2)
Mitigations measured (for the record)
Suggestions (small, code-level)
One question on the diagnostic you mentionedYou noted the tool boundary logs Related: #9743 covers the "churn prevents stabilisation" half of this in detail; this report adds the 0.2.1-rc.2 after-mitigation numbers and the failure clustering. |
|
Captured the cause. Instrumenting the tool boundary with a logger exporter ( Reproduced within ~3 seconds once I added churn. The record: Reading Reproduction here:
So this is consistent with your churn reading, but the trigger is session-set churn, not persistence-snapshot churn. Fix suggestion, if useful: treat additive changes as stable — a newly created session can just be indexed incrementally, instead of abandoning the whole observation and retrying (which currently buys exactly one more try). Only removals, or a persistence-binding change, would need the retry. Failing that, making Environment: Windows desktop, runtime 0.2.1-rc.2. Raw records are retained locally and I can share them (paths redacted) if that helps. |
Uh oh!
There was an error while loading. Please reload this page.
Environment
0.2.1-rc.2(win-x64, Windows 11), Electron-bundled nodev24.21.0desktop(DSH_HOMEoutside the default location)sessions/Symptom
Enabling 会话搜索 (
@deepseek-ai/dsh-experimental-session-search) in the plugin page does register its tools (all 5 appear), but every call fails:From the packaged error table this is
SESSION_QUERY_PERSISTENCE_FAILED:Reproduction (deterministic, 3 ways)
session_searchwith any query → fails.session_search→ fails.So it is not a "first call while a session is being written" race, at least not only that.
Composition verified via
cordis_inspect_query(hostConfigprovider)include:session-query-sqlite(base)include:optional-session-query-sqlite(bundle)include:optional-tool-session-queryinclude:session-persistence-jsonlThere is no
.sqlitefile in the profile — expected, since the bundle's patch setspath: ':memory:',openAt: first-search, so the index is in-memory and lazily opened. (Mentioning it because it was my first wrong guess.)Hypotheses we ruled out
cordis.patch.ymlusesisolate: { sessionQuery: true }on the group, so this is by design.session.v4.jsonl.zstd, 1 dir with no.zstdat all, 1 more 0-byte), quarantined them (moved aside, not deleted); afterwards 220/220 archives read cleanly — we re-read the whole corpus (407 MB) with an RFC 8878 frame-aware zstd reader: 0 bad frames, 0 truncated. Still fails.Questions
SESSION_QUERY_PERSISTENCE_FAILEDthe expected outcome when the provider inside anisolate: { sessionQuery: true }group cannot seesessionPersistence? The provider acquires it viactx.inject(["sessionPersistence"], …). Is there a known composition where that optional injection never fires inside an isolated group?cause— we only get the generic message, so we cannot distinguishreadColdSessionLogfailing from "did not stabilize after one retry". Is there a documented debug flag / log line to surface the underlying error?session-persistence-jsonl, that we are missing?Third-party plugins in the same profile (possible interference?)
We run a local plugin set —akasha-book (
@local/akasha-gate,akasha-hooks,akasha-session,akasha-sleep,mcp-akasha, source: https://github.com/Ersith/akasha-book). It is an external-memory project; its session layer reads the same.zstdsession archives and maintains its own index, but it does not registersessionQueryand does not write to the session store.Two things we want your read on:
sessions/directory (and holds open read handles / stats files while the provider is taking its two snapshots) makepersistence.list()snapshots differ, or otherwise interfere withreadColdSessionLog?Versions
@deepseek-ai/dsh-desktop0.2.1-rc.2@deepseek-ai/dsh-session-query-sqlite,@deepseek-ai/dsh-tool-session-query,@deepseek-ai/dsh-session-persistence-jsonl— shipped with the same buildv24.21.0(runtime),v24.19.0(system toolchain)Thanks!
All reactions