Cortadel Doctor 是做什麼的?
端到端安裝診斷。執行以下所有檢查,並回報全部結果 — 不要在第一個失敗就停止。千萬不要使用 cortadel-plugin/scripts/lib.mjs 的 api() 輔助函式來執行任何這些檢查:它會把所有失敗(非 2xx 狀態碼、逾時、網路錯誤)都吞併成 null,這對診斷來說完全錯誤,因為診斷的整個目的就是要區分 401 和零結果。請使用原始 curl(或直接使用 MCP 工具),以便真實的狀態碼和錯誤主體保持可見。
執行
檢查 1 — 配置解析
解析插件自身鉤子所解析的相同必要值(base_url、user_id、api_key),優先級為 CLAUDE_PLUGIN_OPTION_<KEY> 層級第一,CORTADEL_* 環境變數層級第二 — 這與 cortadel-plugin/scripts/lib.mjs 的 cfg()/readOption() 優先級一致:
for pair in "CLAUDE_PLUGIN_OPTION_BASE_URL:CORTADEL_URL" \
"CLAUDE_PLUGIN_OPTION_USER_ID:CORTADEL_USER_ID" \
"CLAUDE_PLUGIN_OPTION_API_KEY:CORTADEL_API_KEY"; do
opt="${pair%%:*}"; fallback="${pair##*:}"
val="${!opt:-${!fallback:-}}"
if [ -n "$val" ]; then echo "$fallback: resolved"; else echo "$fallback: NOT SET"; fi
done
如果三個值都解析為非空值則為 PASS;如果任何一個為空則為 FAIL — 並將其餘檢查回報為「略過,無配置」。切勿印出 API 金鑰的實際值,僅需回報是否已解析。
注意事項,若相關則向使用者清楚說明:CLAUDE_PLUGIN_OPTION_* 的說明文件指出它會被注入到鉤子的子程序中。它是否也在技能本身的 shell 執行中可見,此儲存庫中並未確認 — 請檢查兩個層級並回報哪一個層級實際解析了每個值,而不是假設 marketplace 層級在此可被存取。
檢查 2 — 伺服器健康狀態(無需身份驗證)
GET /api/health 完全不需要任何憑證 — 這是最適合的首次網路探測,與你自身的 API 金鑰是否有效無關:
curl -s "$CORTADEL_URL/api/health"
回報頂層的 status(ok 或 degraded),以及如果存在的話的 checks 映射(例如 checks.memgraph.ok、checks.embeddings.ok)。degraded/503 回應是正常、非例外情況 — 不應因此停止執行其餘檢查。
檢查 3 — 身份驗證
curl -s -o /tmp/cortadel-doctor-auth.json -w "HTTP %{http_code}\n" \
-H "Authorization: Bearer $CORTADEL_API_KEY" \
"$CORTADEL_URL/api/v1/memories?user_id=$CORTADEL_USER_ID&size=1"
200→ PASS。401→ FAIL — API 金鑰遺失或無效。403→ FAIL — 金鑰有效但與user_id不符。- 其他任何狀態碼 → FAIL — 回報狀態碼和回應主體。
檢查 4 — 即時讀取
如果檢查 3 回傳 200,讀取 /tmp/cortadel-doctor-auth.json:確認它能解析為 JSON,並且具有 items 陣列和 total 計數(MemoryListPagedResponse 的結構)。將 total 回報為安裝的記憶體數量 — 這是伺服器暴露的唯一彙總數字;沒有單獨的統計資料端點,所以這就是任何地方可用的完整「統計資料」。
如果在此會話中同時也連線了 cortadel MCP 伺服器,請額外呼叫 mcp__cortadel__search_memory({ topK: 1 })(無 query — 瀏覽模式)作為第二條獨立的即時讀取路徑,透過 MCP 層面而非 REST。請單獨回報:REST 通過而 MCP 失敗(或相反)可以縮小實際故障的是安裝的哪一半。如果目前會話中沒有可用的 MCP 工具,則跳過此子檢查 — 不要讓它失敗。
顯示
一起回報所有四個檢查,每個檢查標註 PASS/FAIL/WARN,例如:
Config resolution PASS base_url、user_id、api_key 均已解析(CORTADEL_* 層級)
Server health PASS status=ok
Auth PASS HTTP 200
Live read PASS total=142 個記憶;MCP search_memory: PASS
如果任何檢查失敗,請添加具體的下一步動作,對應 docs/plugin.md 的疑難排解章節:401 → 檢查 CORTADEL_API_KEY;403 → 檢查 CORTADEL_USER_ID 是否與金鑰的使用者相符;degraded 健康狀態 → 指向失敗的 checks.* 條目。