Token导航 LogoToken导航

Agent Skill · 研究检索

understand(understand 分析)

understand 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

understand 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 17,839。

总安装 6,389周安装 261GitHub Stars 公开资料未说明下载 2,067核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.1.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:understand(understand 分析)
来源仓库:https://github.com/lum1104/understand
安装命令:
openclaw skills install understand
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install understand

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

understand 分析代码库生成交互式知识图,理解架构和组件关系。适合在 OpenClaw 中需要可视化代码结构的场景。通过 clawhub 安装后可启动本地分析服务。使用前需确认项目规模和资源消耗情况。understand 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

建议核对原始 README 了解支持的编程语言和分析深度。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install understand;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

understand 怎么安装?

在终端执行 openclaw skills install understand。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

understand 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

understand 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

understand 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

understand 用的人多吗?

公开数据是累计安装 6,389 次,近一周安装 261 次,下载 2,067 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

understand 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
understand

understand 分析 · 本页

6,389—需要联网MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
understand
description
Analyze a codebase to produce an interactive knowledge graph for understanding architecture, components, and relationships
argument-hint
[options]

/understand

Analyze the current codebase and produce a knowledge-graph.json file in .understand-anything/. This file powers the interactive dashboard for exploring the project's architecture.

Options

  • $ARGUMENTS may contain:

- --full — Force a full rebuild, ignoring any existing graph - A directory path — Scope analysis to a specific subdirectory


Phase 0 — Pre-flight

Determine whether to run a full analysis or incremental update.

  1. Set PROJECT_ROOT to the current working directory.
  2. Get the current git commit hash:
   git rev-parse HEAD
  1. Create the intermediate output directory:
   mkdir -p $PROJECT_ROOT/.understand-anything/intermediate
  1. Check if $PROJECT_ROOT/.understand-anything/knowledge-graph.json exists. If it does, read it.
  2. Check if $PROJECT_ROOT/.understand-anything/meta.json exists. If it does, read it to get gitCommitHash.
  3. Decision logic:
ConditionAction
--full flag in $ARGUMENTSFull analysis (all phases)
No existing graph or metaFull analysis (all phases)
Existing graph + unchanged commit hashReport "Graph is up to date" and STOP
Existing graph + changed filesIncremental update (re-analyze changed files only)

For incremental updates, get the changed file list:

   git diff <lastCommitHash>..HEAD --name-only

If this returns no files, report "Graph is up to date" and STOP.

  1. Collect project context for subagent injection:

- Read README.md (or README.rst, readme.md) from $PROJECT_ROOT if it exists. Store as $README_CONTENT (first 3000 characters). - Read the primary package manifest (package.json, pyproject.toml, Cargo.toml, go.mod, pom.xml) if it exists. Store as $MANIFEST_CONTENT. - Capture the top-level directory tree:

     find $PROJECT_ROOT -maxdepth 2 -type f -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' | head -100

Store as $DIR_TREE. - Detect the project entry point by checking for common patterns: src/index.ts, src/main.ts, src/App.tsx, main.py, main.go, src/main.rs, index.js. Store first match as $ENTRY_POINT.


Phase 1 — SCAN (Full analysis only)

Dispatch a subagent using the prompt template at ./project-scanner-prompt.md. Read the template file and pass the full content as the subagent's prompt, appending the following additional context:

Additional context from main session: Project README (first 3000 chars): `` $README_CONTENT ` Package manifest: ` $MANIFEST_CONTENT `` Use this context to produce more accurate project name, description, and framework detection. The README and manifest are authoritative — prefer their information over heuristics.

Pass these parameters in the dispatch prompt:

Scan this project directory to discover all source files, detect languages and frameworks. Project root: $PROJECT_ROOT Write output to: $PROJECT_ROOT/.understand-anything/intermediate/scan-result.json

After the subagent completes, read $PROJECT_ROOT/.understand-anything/intermediate/scan-result.json to get:

  • Project name, description
  • Languages, frameworks
  • File list with line counts
  • Complexity estimate

Gate check: If >200 files, inform the user and suggest scoping with a subdirectory argument. Proceed only if user confirms or add guidance that this may take a while.


Phase 2 — ANALYZE

Full analysis path

Batch the file list from Phase 1 into groups of 5-10 files each (aim for balanced batch sizes).

For each batch, dispatch a subagent using the prompt template at ./file-analyzer-prompt.md. Run up to 3 subagents concurrently using parallel dispatch. Read the template once, then for each batch pass the full template content as the subagent's prompt, appending the following additional context:

Additional context from main session: Project: <projectName> — <projectDescription> Frameworks detected: <frameworks from Phase 1> Languages: <languages from Phase 1> Framework-specific guidance: - If React/Next.js: files in app/ or pages/ are routes, components/ are UI, lib/ or utils/ are utilities - If Express/Fastify: files in routes/ are API endpoints, middleware/ is middleware, models/ or db/ is data - If Python Django: views.py are controllers, models.py is data, urls.py is routing, templates/ is UI - If Go: cmd/ is entry points, internal/ is private packages, pkg/ is public packages Use this context to produce more accurate summaries and better classify file roles.

Fill in batch-specific parameters below and dispatch:

Analyze these source files and produce GraphNode and GraphEdge objects. Project root: $PROJECT_ROOT Project: <projectName> Languages: <languages> Batch index: <batchIndex> Write output to: $PROJECT_ROOT/.understand-anything/intermediate/batch-<batchIndex>.json All project files (for import resolution): <full file path list from scan> Files to analyze in this batch: 1. <path> (<sizeLines> lines) 2. <path> (<sizeLines> lines) ...

After ALL batches complete, read each batch-<N>.json file and merge:

  • Combine all nodes arrays. If duplicate node IDs exist, keep the later occurrence.
  • Combine all edges arrays. Deduplicate by the composite key source + target + type.

Incremental update path

Use the changed files list from Phase 0. Batch and dispatch file-analyzer subagents using the same process as above, but only for changed files.

After batches complete, merge with the existing graph:

  1. Remove old nodes whose filePath matches any changed file
  2. Remove old edges whose source or target references a removed node
  3. Add new nodes and edges from the fresh analysis

Phase 3 — ASSEMBLE

Merge all file-analyzer results into a single set of nodes and edges. Then perform basic integrity cleanup:

  • Remove any edge whose source or target references a node ID that does not exist in the merged node set
  • Remove duplicate node IDs (keep the last occurrence)
  • Log any removed edges or nodes for the final summary

Phase 4 — ARCHITECTURE

Dispatch a subagent using the prompt template at ./architecture-analyzer-prompt.md. Read the template file and pass the full content as the subagent's prompt, appending the following additional context:

Additional context from main session: Frameworks detected: <frameworks from Phase 1> Directory tree (top 2 levels): `` $DIR_TREE ` Framework-specific layer hints: - If React/Next.js: app/ or pages/ → UI Layer, api/ → API Layer, lib/ → Service Layer, components/ → UI Layer - If Express: routes/ → API Layer, controllers/ → Service Layer, models/ → Data Layer, middleware/ → Middleware Layer - If Python Django: views/ → API Layer, models/ → Data Layer, templates/ → UI Layer, management/ → CLI Layer - If Go: cmd/ → Entry Points, internal/ → Service Layer, pkg/ → Shared Library, api/` → API Layer Use the directory tree and framework hints to inform layer assignments. Directory structure is strong evidence for layer boundaries.

Pass these parameters in the dispatch prompt:

Analyze this codebase's structure to identify architectural layers. Project root: $PROJECT_ROOT Write output to: $PROJECT_ROOT/.understand-anything/intermediate/layers.json Project: <projectName> — <projectDescription> File nodes: ``json [list of {id, name, filePath, summary, tags} for all file-type nodes] ` Import edges: `json [list of edges with type "imports"] ``

After the subagent completes, read $PROJECT_ROOT/.understand-anything/intermediate/layers.json to get the layer assignments.

layers.json may be either:

  • a top-level JSON array of layer objects, or
  • an envelope object such as { "layers": [...] } from the current prompt/template output

Normalize either form into a final top-level layers array before assembling the graph. Each final saved layer object MUST match this exact shape:

[
  {
    "id": "layer:<kebab-case-name>",
    "name": "<layer name>",
    "description": "<what belongs in this layer>",
    "nodeIds": ["file:src/App.tsx", "file:src/main.tsx"]
  }
]

Rules:

  • id is required and must be unique
  • nodeIds is required and must contain graph node IDs, not raw file paths
  • If the intermediate output is an envelope object, unwrap its layers array before any other normalization
  • If the subagent returns file paths, convert them to file node IDs before assembling the final graph
  • Drop any nodeIds that do not exist in the merged node set
  • Do not use a nodes field in the final saved layer objects

For incremental updates: Always re-run architecture analysis on the full merged node set, since layer assignments may shift when files change.

Context for incremental updates: When re-running architecture analysis, also inject the previous layer definitions:

Previous layer definitions (for naming consistency): ``json [previous layers from existing graph] `` Maintain the same layer names and IDs where possible. Only add/remove layers if the file structure has materially changed.

Phase 5 — TOUR

Dispatch a subagent using the prompt template at ./tour-builder-prompt.md. Read the template file and pass the full content as the subagent's prompt, appending the following additional context:

Additional context from main session: Project README (first 3000 chars): `` $README_CONTENT ` Project entry point: $ENTRY_POINT` Use the README to align the tour narrative with the project's own documentation. Start the tour from the entry point if one was detected. The tour should tell the same story the README tells, but through the lens of actual code structure.

Pass these parameters in the dispatch prompt:

Create a guided learning tour for this codebase. Project root: $PROJECT_ROOT Write output to: $PROJECT_ROOT/.understand-anything/intermediate/tour.json Project: <projectName> — <projectDescription> Languages: <languages> Nodes (summarized): ``json [list of {id, name, filePath, summary, type} for key nodes] ` Layers: `json [layers from Phase 4] ` Key edges: `json [imports and calls edges] ``

After the subagent completes, read $PROJECT_ROOT/.understand-anything/intermediate/tour.json to get the tour steps.

tour.json may be either:

  • a top-level JSON array of tour step objects, or
  • an envelope object such as { "steps": [...] } from the current prompt/template output

Normalize either form into a final top-level tour array before assembling the graph. Each final saved tour step object MUST match this exact shape:

[
  {
    "order": 1,
    "title": "Start at the app entry",
    "description": "This step explains how the frontend boots and mounts.",
    "nodeIds": ["file:src/main.tsx", "file:src/App.tsx"]
  }
]

Rules:

  • If the intermediate output is an envelope object, unwrap its steps array before any other normalization
  • description is required; do not use whyItMatters in the final saved tour steps
  • nodeIds is required; do not use nodesToInspect in the final saved tour steps
  • nodeIds must reference existing graph node IDs
  • Preserve optional languageLesson when present
  • Sort by order before saving

Phase 5.5 — NORMALIZE

Before assembling the final graph:

  • Unwrap legacy or prompt-shaped envelopes before field renaming:

- { "layers": [...] } -> use the contained array as the working layers value - { "steps": [...] } -> use the contained array as the working tour value

  • Convert any layer nodes field to nodeIds
  • Convert any tour nodesToInspect field to nodeIds
  • Convert any tour whyItMatters field to description
  • If layers or tour reference file paths, map them to file node IDs using the file:<relative-path> convention
  • Synthesize missing layer IDs as layer:<kebab-case-name>
  • Drop unresolved layer and tour node references
  • Ensure the final layers value is an array of { id, name, description, nodeIds }
  • Ensure the final tour value is an array of { order, title, description, nodeIds }, preserving optional languageLesson

Phase 6 — REVIEW

Assemble the full KnowledgeGraph JSON object:

{
  "version": "1.0.0",
  "project": {
    "name": "<projectName>",
    "languages": ["<languages>"],
    "frameworks": ["<frameworks>"],
    "description": "<projectDescription>",
    "analyzedAt": "<ISO 8601 timestamp>",
    "gitCommitHash": "<commit hash from Phase 0>"
  },
  "nodes": [<all merged nodes from Phase 3>],
  "edges": [<all merged edges from Phase 3>],
  "layers": [<layers from Phase 4>],
  "tour": [<steps from Phase 5>]
}
  1. Before writing the assembled graph, validate that:

- layers is an array of objects with these required fields: id, name, description, nodeIds - tour is an array of objects with these required fields: order, title, description, nodeIds - tour[*].languageLesson is allowed as an optional string field - Every layers[*].nodeIds entry exists in the merged node set - Every tour[*].nodeIds entry exists in the merged node set

If validation fails, automatically normalize and rewrite the graph into this shape before saving. If the graph still fails final validation after the normalization pass, save it with warnings but mark dashboard auto-launch as skipped.

  1. Write the assembled graph to $PROJECT_ROOT/.understand-anything/intermediate/assembled-graph.json.
  1. Dispatch a subagent using the prompt template at ./graph-reviewer-prompt.md. Read the template file and pass the full content as the subagent's prompt, appending the following additional context:
Additional context from main session: Phase 1 scan results (file inventory): ``json [list of {path, sizeLines} from scan-result.json] ` Phase warnings/errors accumulated during analysis: - [list any batch failures, skipped files, or warnings from Phases 2-5] Cross-validate: every file in the scan inventory should have a corresponding file: node in the graph. Flag any missing files. Also flag any graph nodes whose filePath` doesn't appear in the scan inventory.

Pass these parameters in the dispatch prompt:

> Validate the knowledge graph at $PROJECT_ROOT/.understand-anything/intermediate/assembled-graph.json. > Project root: $PROJECT_ROOT > Read the file and validate it for completeness and correctness. > Write output to: $PROJECT_ROOT/.understand-anything/intermediate/review.json

  1. After the subagent completes, read $PROJECT_ROOT/.understand-anything/intermediate/review.json.
  1. If approved: false:

- Review the issues list - Apply automated fixes where possible: - Remove edges with dangling references - Fill missing required fields with sensible defaults (e.g., empty tags -> ["untagged"], empty summary -> "No summary available") - Remove nodes with invalid types - Re-run the final graph validation after automated fixes - If critical issues remain after one fix attempt, save the graph anyway but include the warnings in the final report and mark dashboard auto-launch as skipped

  1. If approved: true: Proceed to Phase 7.

Phase 7 — SAVE

  1. Write the final knowledge graph to $PROJECT_ROOT/.understand-anything/knowledge-graph.json.
  1. Write metadata to $PROJECT_ROOT/.understand-anything/meta.json:
   {
     "lastAnalyzedAt": "<ISO 8601 timestamp>",
     "gitCommitHash": "<commit hash>",
     "version": "1.0.0",
     "analyzedFiles": <number of files analyzed>
   }
  1. Clean up intermediate files:
   rm -rf $PROJECT_ROOT/.understand-anything/intermediate
  1. Report a summary to the user containing:

- Project name and description - Files analyzed / total files - Nodes created (broken down by type: file, function, class) - Edges created (broken down by type) - Layers identified (with names) - Tour steps generated (count) - Any warnings from the reviewer - Path to the output file: $PROJECT_ROOT/.understand-anything/knowledge-graph.json

  1. Only automatically launch the dashboard by invoking the /understand-dashboard skill if final graph validation passed after normalization/review fixes.

If final validation did not pass, report that the graph was saved with warnings and dashboard launch was skipped.


Error Handling

  • If any subagent dispatch fails, retry once with the same prompt plus additional context about the failure.
  • Track all warnings and errors from each phase in a $PHASE_WARNINGS list. Pass this list to the graph-reviewer in Phase 6 for comprehensive validation.
  • If it fails a second time, skip that phase and continue with partial results.
  • ALWAYS save partial results — a partial graph is better than no graph.
  • Report any skipped phases or errors in the final summary so the user knows what happened.
  • NEVER silently drop errors. Every failure must be visible in the final report.

Reference: KnowledgeGraph Schema

Node Types

TypeDescriptionID Convention
fileSource filefile:<relative-path>
functionFunction or methodfunc:<relative-path>:<name>
classClass, interface, or typeclass:<relative-path>:<name>
moduleLogical module or packagemodule:<name>
conceptAbstract concept or patternconcept:<name>

Edge Types (18 total)

CategoryTypes
Structuralimports, exports, contains, inherits, implements
Behavioralcalls, subscribes, publishes, middleware
Data flowreads_from, writes_to, transforms, validates
Dependenciesdepends_on, tested_by, configures
Semanticrelated, similar_to

Edge Weight Conventions

Edge TypeWeight
contains1.0
inherits, implements0.9
calls, exports0.8
imports0.7
depends_on0.6
tested_by0.5
All others0.5 (default)

平台分布

OpenClaw

75.01%
按下载量换算1,550

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills