Hooks silently not loaded from a local directory marketplace; ZCode 0.16.5 Stop transcript is assistant-only so stock sync always fails
還沒有人認領這個 Issue。
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 45/100
- Issue 類型
- 缺陷
- 描述清晰度
- 基本清楚
- 活躍度
- 冷清
- 技術堆疊
- javascript
- 領域
- devtools
研究方向
The report describes two independent failures: hooks not loading from a local directory marketplace and assistant-only Stop transcripts failing sync. Start by tracing hook registration and the Stop hook's transcript handling, then inspect the ZCode session-store workaround described in the issue. Done means the failures are handled or surfaced clearly and sync works for the reported ZCode 0.16.5 case; no relevant source files or tests are named.
由索引模型根據 Issue 內容生成。
描述
Environment: plugin 0.2.0, nmem 0.10.73, ZCode CLI 0.16.5 / App 3.10.0, macOS — two Macs with identical versions of both nmem and the plugin.
We spent a full day diagnosing why one Mac auto-synced ZCode sessions and the other silently synced nothing. Two independent failure modes found; documenting both so others (and the plugin) can short-circuit this.
1. Same plugin, different marketplace source → hooks loaded vs never loaded
- Mac A installed via the GitHub marketplace source → plugin hooks load, sessions auto-sync. ✅
- Mac B installed the same plugin 0.2.0 from a local directory marketplace (local clone registered as a
directory-type source) → ZCode never loads the plugin's hooks. ❌
The only observable signal is in ZCode's startup log (~/.zcode/cli/log/zcode-<date>.jsonl, event bootstrap.app.startup.plugins.completed): hookCount: 0 on Mac B vs a positive count on Mac A. Nothing surfaces in the UI; nmem doctor shows everything green on both. Sessions just silently never sync.
The marketplace registration itself looks healthy on Mac B: plugin listed as enabled, cache populated, commands/skills resolvable.
Suggestions:
- Make hooks from
directory-source marketplaces load identically to GitHub-sourced ones — or fail loudly / document the limitation. - Add a doctor check "ZCode actually registered the plugin's hooks" (reading the same
hookCountsignal), so this failure mode is diagnosable without cross-machine diffing.
2. ZCode 0.16.5's Stop transcript contains only the last assistant message
ZCode 0.16.5's hook runner writes the Stop transcript as a single JSONL line with only the final assistant message:
{"message":{"content":[{"text":"…","type":"text"}],"role":"assistant"}}
(see Hei() in zcode.cjs — JDr("assistant", e.responseText ?? e.responsePreview)).
nmem t sync --from zcode then rejects it with:
ZCode session needs at least one user and one assistant message
So on this ZCode build the stock Stop hook fires but the sync can never succeed — the error only appears in hook stderr.
Workaround we deployed (working reliably on 0.16.5): instead of copying transcript_path, the Stop hook exports the full user/assistant conversation for session_id straight from ~/.zcode/cli/db/db.sqlite (session/message/part schema is OpenCode-compatible), emits it in the same one-line-per-message format, and feeds that to t sync --from zcode --apply. Full conversation per turn, idempotent, and it also survives the assistant-only transcript limitation.
Longer-term options:
- Have the hook script fall back to reading the ZCode sqlite store (like the workaround above), or
- Have
t sync --from zcodetolerate assistant-only transcripts by pulling the missing user turns via--session-id.
Footnote
Two more things that extended our debugging session, in case they help others:
- The MCP server
typemust behttp(notstreamableHttp) in~/.zcode/cli/config.json— wrong values are silently skipped (only aconfig.mcp_server.skippedwarn in the same log file). - Hooks are registered when the ZCode process starts; editing
config.jsonrequires a full app restart for hooks (MCP reconnects per session and picks changes up immediately).
- 主要語言
- JavaScript
- 星號
- 3
- 分支
- 1
- 平均合併
- 1 分鐘
- 30 天內合併 PR
- 1
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
nowledge-co/zcode-plugin 的其他 Issue
-
難度 1/5 1-3 小時 新手友好度 82/100
查看 nowledge-co/zcode-plugin 的全部 Issue
相似的 Issue
-
ep:WebGPU platform:web quantization
難度 2/5 1-3 小時 新手友好度 66/100
microsoft/onnxruntime#33752 ·
維護者通常 2 天內回覆
-
icon request
難度 2/5 1-3 小時 新手友好度 66/100
tabler/tabler-icons#1693 ·
維護者通常 1 天內回覆
-
難度 1/5 1-3 小時 新手友好度 72/100
alvarotrigo/fullPage.js#4755 ·
-
難度 2/5 1-3 小時 新手友好度 64/100
jlab-sensing/ENTS-backend#854 ·
-
enhancement
難度 2/5 1-3 小時 新手友好度 76/100
andromarces/agent-loops#1242 ·
維護者通常 1 天內回覆