Install
openclaw skills install interactive-arch-diagram-creator生成代码仓架构可视化图,输出为独立静态 HTML 网页。 仅支持在代码仓根目录下运行,自动扫描当前目录。 Claude 扫描代码文件、理解架构、生成层次思维导图和各模块子流程图, 最终输出可在浏览器直接打开的 HTML 文件。
openclaw skills install interactive-arch-diagram-creator将任意本地代码仓转换为一份交互式架构可视化 HTML 页面,流程分三个阶段:
本 skill 所在目录(以下用 $SKILL_DIR 指代)包含:
scripts/scan_repo.py — 扫描代码文件scripts/parse_mindmap.py — 解析 mindmap,提取节点列表scripts/build_html.py — 构建最终 HTMLassets/arch_diagram_static.html — HTML 模板references/prompts.md — 所有 prompt 模板(使用前必须读取)用户要求生成当前代码仓的架构图,直接在当前目录下运行。
确认以下信息后再开始:
./output,可让用户指定)cache/code_map_dict_<name>.json 时默认复用)在开始处理之前,先读取 references/prompts.md,里面包含 Stage 1/2/3 所需的完整 prompt 模板。
运行扫描脚本,优先使用缓存:
python $SKILL_DIR/scripts/scan_repo.py \
. \
--cache <cache_dir>/code_map_dict_<repo_name>.json \
--stats-output /tmp/<repo_name>_meta.json
--stats-output 会将文件数、LOC、技术栈等元信息写入 JSON,供最终 HTML 标题栏使用。"source" 是 "cache",直接使用缓存的 summary 字典,跳到 Stage 2(--stats-output 仍会被写入)。"scan",需要生成摘要。将扫描结果的 files 数组分批处理:
references/prompts.md 中的「Stage 1」prompt 模板,构造请求:
=== 文件: path ===\n<内容> 的形式{"文件路径": "摘要"}code_summary 字典注意:摘要要体现业务语义,不超过30字。如果某个文件内容过长(>5000字),只取前3000字生成摘要。
将 code_summary 字典保存到 <cache_dir>/code_map_dict_<repo_name>.json,供下次使用。
<cache_dir> 默认是当前工作目录下的 cache/,如用户有指定则使用用户指定的路径。
使用 references/prompts.md 中的「Stage 2」prompt 模板。
粗略估算 code_summary 的总字符数(乘以 0.7 估算 token 数):
分块大小:每块约 76,800 tokens,按文件顺序依次分组。
得到 PlantUML mindmap 字符串,格式如下:
@startmindmap
* {"name": "项目名"}
** {"name": "层级名", "files": ["path/to/file"]}
*** {"name": "模块名", "files": ["path/to/file"]}
@endmindmap
将 mindmap 字符串保存到临时文件:/tmp/<repo_name>_mindmap.txt
python $SKILL_DIR/scripts/parse_mindmap.py /tmp/<repo_name>_mindmap.txt
得到节点列表:[{"name": "节点名", "key": "唯一key", "files": ["..."]}]
对每个节点,串行处理:
code_summary 中提取该节点 files 对应的摘要,格式化为 文件路径: 摘要 的形式references/prompts.md 中「Stage 3」prompt 模板生成 Mermaid flowchart```mermaid ... ``` 代码块中的内容,存入 flowchart_data[node_key]如果某节点生成失败或返回内容不符合 Mermaid 语法,跳过该节点,继续处理下一个,不中断整体流程。
将 flowchart_data 字典保存为 /tmp/<repo_name>_flowchart.json
Stage 2 的输出包含两个代码块:plantuml mindmap 和 json edges。
从 Stage 2 的输出中提取 ```json ... ``` 代码块的内容,
得到节点间关系数组,格式为 [{"from": "节点名A", "to": "节点名B", "label": "调用"}, ...]。
将其保存为 /tmp/<repo_name>_edges.json。
注意:对提取出的 edges 做以下过滤后再保存:
python $SKILL_DIR/scripts/build_html.py \
--repo-name "<repo_name>" \
--mindmap /tmp/<repo_name>_mindmap.txt \
--flowchart /tmp/<repo_name>_flowchart.json \
--edges /tmp/<repo_name>_edges.json \
--meta /tmp/<repo_name>_meta.json \
--template $SKILL_DIR/assets/arch_diagram_static.html \
--output <output_dir>
可选:如果用户提供了代码仓简介,追加
--description "一句话介绍该仓库的用途"参数, 它将显示在 HTML 标题栏的仓库名下方。
脚本输出 SUCCESS: /path/to/output/<repo_name>.html
生成的 HTML 顶部会展示一个深色标题栏,包含:
--repo-name)--description,可选)scan_repo.py 扫描结果)scan_repo.py 扫描结果)告诉用户:
open <path> 或直接拖入浏览器)没有找到代码文件:告知用户当前支持的文件类型(.py .js .ts .java .go .rs 等),并建议检查是否在代码仓根目录运行。
Stage 2 返回空内容:重试一次,提示摘要过多可能影响质量,建议缩小仓库范围。
Mermaid 渲染失败:这是浏览器侧的问题,HTML 文件本身是正确的,建议用现代浏览器(Chrome/Edge)打开。