{
  "schemaVersion": "1.0",
  "item": {
    "slug": "crabpath",
    "name": "CrabPath",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/jonathangu/crabpath",
    "canonicalUrl": "https://clawhub.ai/jonathangu/crabpath",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/crabpath",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=crabpath",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "CONTRIBUTING.md",
      "README.md",
      "REPRODUCE.md",
      "SKILL.md",
      "benchmarks/external/README.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/crabpath"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/crabpath",
    "agentPageUrl": "https://openagent3.xyz/skills/crabpath/agent",
    "manifestUrl": "https://openagent3.xyz/skills/crabpath/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/crabpath/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "CrabPath",
        "body": "Pure graph core: zero required deps and no network calls. Caller provides callbacks."
      },
      {
        "title": "Design Tenets",
        "body": "No network calls in core\nNo secret discovery (no dotfiles, keychain, or env probing)\nNo subprocess provider wrappers\nEmbedder identity in state metadata; dimension mismatches are errors\nOne canonical state format (state.json)"
      },
      {
        "title": "Quick Start",
        "body": "from crabpath import split_workspace, HashEmbedder, VectorIndex\n\ngraph, texts = split_workspace(\"./workspace\")\nembedder = HashEmbedder()\nindex = VectorIndex()\nfor nid, content in texts.items():\n    index.upsert(nid, embedder.embed(content))"
      },
      {
        "title": "Embeddings and LLM callbacks",
        "body": "Default: HashEmbedder (hash-v1, 1024-dim)\nReal: callback embed_fn / embed_batch_fn (e.g., text-embedding-3-small)\nLLM routing: callback llm_fn using gpt-5-mini (example)"
      },
      {
        "title": "Session Replay",
        "body": "replay_queries(graph, queries) can warm-start from historical turns."
      },
      {
        "title": "CLI",
        "body": "--state is preferred:\n\ncrabpath query TEXT --state S [--top N] [--json]\ncrabpath query TEXT --state S --chat-id CID\n\ncrabpath doctor --state S\ncrabpath info --state S\ncrabpath init --workspace W --output O --embedder openai\ncrabpath query TEXT --state S --llm openai\ncrabpath inject --state S --type TEACHING [--type DIRECTIVE]\n\nReal-time correction flow:\npython3 query_brain.py --chat-id CHAT_ID\npython3 learn_correction.py --chat-id CHAT_ID"
      },
      {
        "title": "Quick Reference",
        "body": "crabpath init/query/learn/inject/health/doctor/info\nquery_brain.py --chat-id and learn_correction.py for real-time correction pipelines\nquery_brain.py traversal limits: beam_width=8, max_hops=30, fire_threshold=0.01\nHard traversal caps: max_fired_nodes and max_context_chars (defaults None; query_brain.py defaults max_context_chars=20000)\nexamples/correction_flow/, examples/cold_start/, examples/openai_embedder/"
      },
      {
        "title": "API Reference",
        "body": "Core lifecycle:\n\nsplit_workspace\nload_state\nsave_state\nManagedState\nVectorIndex\n\n\nTraversal and learning:\n\ntraverse\nTraversalConfig\nTraversalConfig.beam_width, .max_hops, .fire_threshold, .max_fired_nodes, .max_context_chars, .reflex_threshold, .habitual_range, .inhibitory_threshold\nTraversalResult\napply_outcome\n\n\nRuntime injection APIs:\n\ninject_node\ninject_correction\ninject_batch\n\n\nMaintenance helpers:\n\nsuggest_connections, apply_connections\nsuggest_merges, apply_merge\nmeasure_health, autotune, replay_queries\n\n\nEmbedding utilities:\n\nHashEmbedder\nOpenAIEmbedder\ndefault_embed\ndefault_embed_batch\nopenai_llm_fn\n\n\nLLM routing callbacks:\n\nchat_completion\n\n\nGraph primitives:\n\nNode\nEdge\nGraph\nsplit_workspace\ngenerate_summaries"
      },
      {
        "title": "CLI Commands",
        "body": "crabpath init --workspace W --output O [--sessions S] [--embedder openai]\ncrabpath query TEXT --state S [--top N] [--json] [--chat-id CHAT_ID]\ncrabpath learn --state S --outcome N --fired-ids a,b,c [--json]\ncrabpath inject --state S --id NODE_ID --content TEXT [--type CORRECTION|TEACHING|DIRECTIVE] [--json] [--connect-min-sim 0.0]\ncrabpath inject --state S --id NODE_ID --content TEXT --type TEACHING\ncrabpath inject --state S --id NODE_ID --content TEXT --type DIRECTIVE\ncrabpath health --state S\ncrabpath doctor --state S\ncrabpath info --state S\ncrabpath replay --state S --sessions S\ncrabpath merge --state S [--llm openai]\ncrabpath connect --state S [--llm openai]\ncrabpath journal [--stats]\nquery_brain.py --chat-id CHAT_ID\nlearn_correction.py --chat-id CHAT_ID"
      },
      {
        "title": "Traversal defaults",
        "body": "beam_width=8\nmax_hops=30\nfire_threshold=0.01\nreflex_threshold=0.6\nhabitual_range=0.2-0.6\ninhibitory_threshold=-0.01\nmax_fired_nodes (hard node-count cap, default None)\nmax_context_chars (hard context cap, default None; query_brain.py default is 20000)"
      },
      {
        "title": "Paper",
        "body": "https://jonathangu.com/crabpath/"
      }
    ],
    "body": "CrabPath\n\nPure graph core: zero required deps and no network calls. Caller provides callbacks.\n\nDesign Tenets\nNo network calls in core\nNo secret discovery (no dotfiles, keychain, or env probing)\nNo subprocess provider wrappers\nEmbedder identity in state metadata; dimension mismatches are errors\nOne canonical state format (state.json)\nQuick Start\nfrom crabpath import split_workspace, HashEmbedder, VectorIndex\n\ngraph, texts = split_workspace(\"./workspace\")\nembedder = HashEmbedder()\nindex = VectorIndex()\nfor nid, content in texts.items():\n    index.upsert(nid, embedder.embed(content))\n\nEmbeddings and LLM callbacks\nDefault: HashEmbedder (hash-v1, 1024-dim)\nReal: callback embed_fn / embed_batch_fn (e.g., text-embedding-3-small)\nLLM routing: callback llm_fn using gpt-5-mini (example)\nSession Replay\n\nreplay_queries(graph, queries) can warm-start from historical turns.\n\nCLI\n\n--state is preferred:\n\ncrabpath query TEXT --state S [--top N] [--json] crabpath query TEXT --state S --chat-id CID\n\ncrabpath doctor --state S crabpath info --state S crabpath init --workspace W --output O --embedder openai crabpath query TEXT --state S --llm openai crabpath inject --state S --type TEACHING [--type DIRECTIVE]\n\nReal-time correction flow: python3 query_brain.py --chat-id CHAT_ID python3 learn_correction.py --chat-id CHAT_ID\n\nQuick Reference\ncrabpath init/query/learn/inject/health/doctor/info\nquery_brain.py --chat-id and learn_correction.py for real-time correction pipelines\nquery_brain.py traversal limits: beam_width=8, max_hops=30, fire_threshold=0.01\nHard traversal caps: max_fired_nodes and max_context_chars (defaults None; query_brain.py defaults max_context_chars=20000)\nexamples/correction_flow/, examples/cold_start/, examples/openai_embedder/\nAPI Reference\nCore lifecycle:\nsplit_workspace\nload_state\nsave_state\nManagedState\nVectorIndex\nTraversal and learning:\ntraverse\nTraversalConfig\nTraversalConfig.beam_width, .max_hops, .fire_threshold, .max_fired_nodes, .max_context_chars, .reflex_threshold, .habitual_range, .inhibitory_threshold\nTraversalResult\napply_outcome\nRuntime injection APIs:\ninject_node\ninject_correction\ninject_batch\nMaintenance helpers:\nsuggest_connections, apply_connections\nsuggest_merges, apply_merge\nmeasure_health, autotune, replay_queries\nEmbedding utilities:\nHashEmbedder\nOpenAIEmbedder\ndefault_embed\ndefault_embed_batch\nopenai_llm_fn\nLLM routing callbacks:\nchat_completion\nGraph primitives:\nNode\nEdge\nGraph\nsplit_workspace\ngenerate_summaries\nCLI Commands\ncrabpath init --workspace W --output O [--sessions S] [--embedder openai]\ncrabpath query TEXT --state S [--top N] [--json] [--chat-id CHAT_ID]\ncrabpath learn --state S --outcome N --fired-ids a,b,c [--json]\ncrabpath inject --state S --id NODE_ID --content TEXT [--type CORRECTION|TEACHING|DIRECTIVE] [--json] [--connect-min-sim 0.0]\ncrabpath inject --state S --id NODE_ID --content TEXT --type TEACHING\ncrabpath inject --state S --id NODE_ID --content TEXT --type DIRECTIVE\ncrabpath health --state S\ncrabpath doctor --state S\ncrabpath info --state S\ncrabpath replay --state S --sessions S\ncrabpath merge --state S [--llm openai]\ncrabpath connect --state S [--llm openai]\ncrabpath journal [--stats]\nquery_brain.py --chat-id CHAT_ID\nlearn_correction.py --chat-id CHAT_ID\nTraversal defaults\nbeam_width=8\nmax_hops=30\nfire_threshold=0.01\nreflex_threshold=0.6\nhabitual_range=0.2-0.6\ninhibitory_threshold=-0.01\nmax_fired_nodes (hard node-count cap, default None)\nmax_context_chars (hard context cap, default None; query_brain.py default is 20000)\nPaper\n\nhttps://jonathangu.com/crabpath/"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/jonathangu/crabpath",
    "publisherUrl": "https://clawhub.ai/jonathangu/crabpath",
    "owner": "jonathangu",
    "version": "11.2.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/crabpath",
    "downloadUrl": "https://openagent3.xyz/downloads/crabpath",
    "agentUrl": "https://openagent3.xyz/skills/crabpath/agent",
    "manifestUrl": "https://openagent3.xyz/skills/crabpath/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/crabpath/agent.md"
  }
}