Communitygithub.com

cortadel/cortadel

为AI智能体提供自托管的长期时序图记忆——在一个容器内集成MCP、REST和仪表盘,支持FalkorDB或Memgraph。

cortadel 是什么?

该技能是一个诊断工具,用于全面检查Cortadel记忆服务器的安装状态。它通过一系列逐步执行的检查,验证配置解析、服务器健康状态、认证有效性以及实时读写能力。技能通过原始curl命令进行网络探测,避免使用可能掩盖错误的API辅助函数,从而确保每个检查都能返回真实的状态码和错误信息。它支持REST和MCP两种接口路径,帮助定位安装中具体哪个环节出现问题。最终生成一个清晰的PASS/FAIL报告,并在失败时提供具体的故障排除建议。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add cortadel/cortadel

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

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

如果三个值都解析为非空值,则通过;如果任何一个为空,则失败——并报告其余检查为“跳过,无配置”。切勿打印API密钥的实际值,仅报告是否解析成功。

如果相关,向用户明确说明:CLAUDE_PLUGIN_OPTION_*按文档说明被注入到钩子的子进程中。它是否在技能自身的shell执行中可见,本仓库中未确认——请检查两个层级并报告每个值实际由哪个层级解析,而不是假定市场层级在这里可访问。

检查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 → 通过。
  • 401 → 失败——API密钥缺失或无效。
  • 403 → 失败——密钥有效但与user_id不匹配。
  • 其他 → 失败——报告状态码和响应体。

检查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 all resolved (CORTADEL_* tier)
Server health       PASS  status=ok
Auth                PASS  HTTP 200
Live read           PASS  total=142 memories; MCP search_memory: PASS

如果任何检查失败,添加具体的后续步骤,与docs/plugin.md的故障排除部分保持一致:401 → 检查CORTADEL_API_KEY;403 → 检查CORTADEL_USER_ID是否与密钥的用户匹配;健康降级 → 指向出错的checks.*条目。

相关技能