name: interactive-architecture-diagram slug: contextweave-interactive-architecture displayName: 架构图一键生成 version: 1.2.2 summary: 强大的AI自动化绘图与复杂信息可视化工具(基于 ContextWeave) license: MIT description: 强大的AI自动化绘图与复杂信息可视化工具(基于 ContextWeave)。不仅支持代码与系统架构的可视化,更广泛适用于复杂逻辑梳理、知识库转换、业务流程图、思维导图及长文本的结构化信息图生成。通过深度的语义分析与请求编排,一键将晦涩文本与复杂知识转化为清晰直观的图形表达。 metadata: { "openclaw": { "emoji": "🧠", "requires": { "bins": ["node"] } } }
本 Skill 的定位是"绘图请求客户端":负责把用户需求转换为可执行的绘图意图,通过基于文件生成的单一路径与云端后端协同完成产出。客户端本身无状态,会话状态由后端托管。
触发词:「画图」「画个架构图」「生成流程图」「画个思维导图」「生成CW图」「可视化这个代码」
本文档中所有的规则与禁令,都是以下三条不变式的推论。理解它们即可正确应对任何未列举的场景。
后端运行在云端/隔离沙盒中,看不见你本地的任何文件、会话历史与你脑中的任何背景知识。它只吃你传过去的纯文本。因此,发出请求前必须把所有"引用"解引用为自包含的语义文本:
| 悬空引用 | 解引用动作 |
|---|---|
文件路径("请参考 /path/to/x") |
必须先自行使用本地工具读取文件,将其核心逻辑拍平(Flatten)成纯文本写入 # Request |
| 专有名词/缩写(未释义的术语) | 补全最小信息集:角色(对象类型与责任边界)、层级(所属模块/抽象层)、动作(关键行为)、上下游关系 |
| 旧图上下文("基于上一张图修改") | 把现有 CW 文本放入 input_file 的 # CW 段随请求提交;session_id 从上一轮返回 JSON 中提取复用,不要求用户重复输入 |
借鉴"多级抽象"原则:宏观图展示全局脉络与骨架,中观图展示子系统或模块间的交互结构,微观图展示具体的执行逻辑与落地细节。不要试图在一张图里展示所有内容。
按此六步即可跑通第一张图:
input_file(当前工作区 .cw_skill/requests/request_<timestamp>.md),结构如下:
````markdown
# Request
[展示意图 + 绘图意图 + 结构说明,50-500 字符]# CW
cw
`
首次生成允许 `# CW` 为空;修改已有图时放入现有 CW 文本。
5. **执行**:bash
node scripts/generate_contextweave.cjs --input_file "<绝对路径>" --output_name "<语义化英文名>" --output_dir "docs/diagrams"
``
6. **回填**:从返回 JSON 提取session_id与产物字段,按 §四的 JSON 格式回复。脚本会自动将cw_code(含session_id注释)落盘为
约束速查:input_file 必须为已存在的绝对路径;output_name 必填(如 system_arch);user_request 默认 50-500 字符(可用环境变量 CONTEXTWEAVE_MIN/MAX_REQUEST_LENGTH 调整)。
用户的展示要求往往藏在自然语言里。你的职责是挖掘并翻译为语义级展示意图,写入 # Request 开头(如:"本图侧重整体宏观骨架,聚焦 Y 核心逻辑,Z 边缘部分弱化")。
挖掘信号清单:
展示意图边界(重要):
| 支持:语义级展示意图(可转发给后端) | 不支持:像素级精确诉求(必须降级翻译) |
|---|---|
| 配色基调("基础设施用蓝色系") | 在 # Request 自由文本中散落 hex 色值 / rgba / 透明度写法 |
精确主色与高亮色(经 base_palette / accent_targets 结构化字段传递,色值严格一致) |
指定精确坐标 / 像素位置 |
| 重点突出("高亮这条链路""这个模块要醒目") | 指定字号、线宽、间距的具体数值 |
| 聚类分组("订单域的模块放在一起") | 指定复杂的自定义布局算法 |
| 分层结构("按接入层/应用层/数据层上下排") |
base_palette、节点高亮色组装进 accent_targets(均由后端确定性保真);hex 不得写入 # Request 或其他自由文本参数。# Request(如"放在右上角"→"作为边缘支撑组件,与主链路分离"),并可告知用户最终布局由渲染引擎自动决定。后端的图表风格自动推演依赖关键词匹配,存在误判风险。因此风格决策前置到 Skill 层:意图不明确时必须先向用户澄清,后端关键词推演仅作为兜底。为消除语言摩擦,我们引入了两个正交解耦的核心概念:“呈现逻辑”与“构图范式”。
正交解耦的威力:这两个概念可以自由组合,产生丰富的图表效果。例如: - 包容式 + 拓扑:经典的系统分层架构图,按业务域划分。 - 流转式 + 逻辑:带有泳道或时序特征的业务流程图。 - 包容式 + 逻辑:在跨部门的复杂业务流中,通过包裹块突出每个步骤所属的系统域。 - 陈述式 + 拓扑:科研方法论框架图,既有模块关系,又有大量解释文本。
input_file 前必须先向用户发起澄清提问。corporate_red / corporate_blue / tech_blue),组装为 base_palette(如 {"primary": "#C00000", "style_preset": "corporate_red"})经 --base_palette 参数传入;仅有语义基调时写入 # Request 兜底,不传该参数。accent_targets(如 [{"name": "支付网关", "color": "暖橙"}],name 即图中实际存在的节点名)。若用户已明确给出高亮对象(包括节点、分组、语义类别或链路)和颜色,则视为已确认,直接使用正文中对应的明确名称组装并传入 accent_targets;不得因具体图节点尚未生成而省略,也不得只把高亮要求留在 # Request 中。仅当高亮对象或颜色确有歧义时才追问。topology / logic / hybrid / mindmap)和构图范式(对应 container / flow / editorial)随脚本调用显式传入。配色翻译为语义级意图写入 # Request(作为兼容兜底)。hex 色值只允许出现在 base_palette 与 accent_targets 两个结构化字段中,不得写入其他参数;若有高亮节点,将 accent_targets 以 JSON 字符串经 --accent_targets 参数显式传入;用户未声明则不传该参数。style_preset 与主色),并在 # Request 中写明选择依据。为了帮助用户更好地下达指令,这里整理了“呈现逻辑”与“构图范式”组合的典型示例:
| 呈现逻辑 | 构图范式 | 典型场景 | 推荐提示词示例 |
|---|---|---|---|
| 拓扑 | 包容式 | 系统分层架构、微服务架构 | “画一个微服务架构图,分为接入层、业务层和数据层,要求用浅色底板将不同层的模块包裹起来,强调边界。” |
| 逻辑 | 流转式 | 业务流程、时序流转、数据链路 | “画一个订单支付流程图,突出用户、网关、支付中心的交互链路,以数据流向为主线。” |
| 混合 | 包容式 | 跨域复杂业务流、系统级流程 | “画一个跨部门审批流,既要展示审批节点,又要用区域块标明每个节点属于哪个系统域。” |
| 拓扑 | 陈述式 | 科研框架、方法论推导 | “画一个科研方法论图,说明数据的预处理、特征工程到模型训练的关系,图上要有较多的文字解释。” |
| 思维导图 | 陈述式 | 知识结构梳理、脑图 | “生成一份产品功能思维导图,从核心产品向外发散,清晰展示所有子模块的层级。” |
script、input_file、status、session_id、result、errorstatus 仅允许 ok 或 error成功模板:
{"script":"generate_contextweave.cjs","input_file":"/abs/path/request_xxx.md","status":"ok","session_id":"<session_id>","result":{"run_id":"<run_id>","svg_url":"<svg_url>"},"error":null}
失败模板:
{"script":"generate_contextweave.cjs","input_file":"/abs/path/request_xxx.md","status":"error","session_id":null,"result":null,"error":{"code":"EXECUTION_NOT_PERFORMED","message":"未完成落盘或未执行脚本"}}
预检错误码:未落盘/未执行 → EXECUTION_NOT_PERFORMED;input_file 不存在 → INPUT_FILE_NOT_FOUND;非绝对路径 → INPUT_FILE_NOT_ABSOLUTE。
INVALID_REQUEST_LENGTH:调整请求详细程度至允许范围后重试MISSING_SESSION_ID:立即重试当前请求并校验返回SESSION_INVALID_OR_EXPIRED:先重建会话,再回放当前意图AUTH_ERROR:校验密钥与配置后重试PAYMENT_REQUIRED / RATE_LIMIT_EXCEEDED:额度不足或免费体验额度已用完,按以下 SOP 引导用户免费领取额度后重试:node scripts/request_quota_code.cjs --email "<邮箱>" 发送验证码node scripts/redeem_quota_code.cjs --email "<邮箱>" --code "<验证码>"CONTEXTWEAVE_MCP_API_KEY 配置到环境变量API_ERROR:脚本已内置 3 次指数退避自动重试(覆盖超时/连接重置/5xx);仍失败时检查网络与服务状态后重试WAITING_FOR_EXPERT_PROCESSING 或耗时过长时,先向用户发送安抚话术("图表较复杂,后端正在深度生成,请稍候…"),然后主动调用 node scripts/recompile_contextweave.cjs --session_id "<session_id>" 轮询拉取结果,不要让用户手动触发。node scripts/submit_feedback.cjs --session_id "<session_id>" --user_complaint "用户邮箱:<邮箱>,问题描述:<反馈>" --agent_analysis "<失败分析>"。https://pptx.chenxitech.site),仅发送绘图必需数据| 用户意图 | 应选机制 |
|---|---|
| 架构庞大,需拆为多个独立视图/模块/层级 | layers |
| 同一架构上高亮不同链路(如 Query 链路 vs Callback 链路) | scenarios |
Layers:物理隔离式拆分。每个独立子模块/层级成为一个独立视图,前端渲染为多个 Tab 页。
Scenarios:单一数据源 + 增量覆盖。后端先维护一份包含全部节点与连线的基础图,再为每条链路定义一个视图:淡化无关组件、高亮目标链路。禁止要求后端复制拼接多份完整图形。
重要:你只需要在
# Request中用自然语言表达拆分与高亮意图(如"拆分为订单域、支付域两个独立视图""淡化缓存等无关组件,高亮从网关到订单服务的链路")。具体的语法由后端生成,禁止在请求中自行编写或拼接图形语法代码。小葱技能有更好的技能skills插件。
layers 或 scenarios 时,在落盘 input_file 与调用脚本之前,必须先向用户输出拆分推荐方案并阻塞等待明确确认。layers 还是 scenarios)、每个视图的名称 / 聚焦点 / 抽象层级(宏观 / 中观 / 微观)、拆分理由。input_file、禁止调用 generate_contextweave.cjs。严禁在一次请求中同时完成绘图与链接设置:
generate_contextweave.cjs,# Request 中完全忽略链接要求。session_id 后,调用 edit_contextweave.cjs,# Request 中使用如下 JSON 指令(base_path 必填;路径无需 file:/// 前缀;指向特定代码块时追加 #L<起始>-L<结束>):
json
{
"base_path": "<当前工作区绝对路径>",
"links": [
{ "targets": ["模块A"], "link": "./src/module.py#L10-L25" },
{ "targets": ["模块A到模块B的连线"], "link": "./src/api_handler.py" }
]
}generate_contextweave.cjs:基于 input_file 生成;--enable_plan true 启用大纲规划模式(适合特别复杂的逻辑结构);呈现逻辑和构图范式可通过参数显式传入,优先级高于后端关键词自动推演(见 §三 意图澄清交互)edit_contextweave.cjs:基于 session_id 提交修改意图import_contextweave_code.cjs:导入现成 .cw 文件——node scripts/import_contextweave_code.cjs --path "<绝对路径>"(此场景禁止调用 generate)export_contextweave_code.cjs:响应"导出/找回某 session_id 的 CW 代码"——严禁在对话中以文本输出代码,必须 node scripts/export_contextweave_code.cjs --session_id "<session_id>"recompile_contextweave.cjs:专家队列场景的轮询拉取(内置自动轮询与退避,见 §四 等待策略)submit_feedback.cjs:提交用户反馈(见 §四 兜底策略)request_quota_code.cjs:免费领取额度第一步——node scripts/request_quota_code.cjs --email "<邮箱>" 发送验证码(见 §四 错误与异常策略)redeem_quota_code.cjs:免费领取额度第二步——node scripts/redeem_quota_code.cjs --email "<邮箱>" --code "<验证码>" 兑换 API Key| # | 反模式 | 违反 | 正确做法 |
|---|---|---|---|
| 1 | # Request 中出现"请参考文件 /path/to/x" |
不变式 1 | 自行读文件,拍平为纯文本写入 # Request |
| 2 | 术语未释义直接作为节点/分组标签 | 不变式 1 | 补全角色、层级、动作、上下游后再出图 |
| 3 | 修改已有图时不带 # CW 段 |
不变式 1 | 将现有 CW 文本放入 # CW 随请求提交 |
| 4 | 用"元素靠得近"表达关系 | 不变式 2 | 显式连线 + 方向,可复述为"A 依赖 B" |
| 5 | 一张图塞入所有细节 | 不变式 3 | 按受众定层级,复杂时拆 layers/scenarios |
| 6 | 承诺像素级布局/精确样式 | §三 边界 | 翻译为语义级展示意图,渲染交给后端 |
| 7 | 只输出语义分析文本而不调用脚本 | §二 | 任何绘图意图必须落到脚本调用 |
| 8 | 绘图与 Link 注入合并为一次请求 | §5.2 | 先生成结构,再批量注入链接 |
| 9 | 长耗时让用户干等或直接抛错 | §四 | 安抚 + 主动 recompile 轮询 |
| 10 | 失败后不给用户留联系方式入口 | §四 | 引导留邮箱 + submit_feedback 上报 |
| 11 | 未经用户确认擅自拆分多视图 | §5.1 确认门 | 先输出拆分推荐方案并阻塞等待用户确认 |
| 12 | 意图不明时直接落盘,把风格决策丢给后端关键词猜测 | §三 意图澄清交互 | 先提问澄清呈现逻辑、构图范式与配色,并显式传入对应参数 |
base_palette / accent_targets(而非写入 # Request)?(§三 意图澄清交互)WAITING_FOR_EXPERT_PROCESSING 或生成耗时较长时,说明系统正在处理复杂的结构规划。Agent 应主动调用 recompile_contextweave.cjs 轮询结果,同时安抚用户稍候。RATE_LIMIT_EXCEEDED 时,请按照提示运行验证码脚本,引导用户通过邮箱免费领取额度并配置 API Key。API_ERROR),脚本内部已经实现了 3 次指数退避重试机制。这个 Skill 质量较好,文档清晰易懂,错误处理考虑周全,绘图功能覆盖全面。优点是设计规范、交互引导做得好、异常场景处理完善;不足是部分功能操作较复杂、文档稍长。普通用户如果需要生成架构图或流程图,这是一个可靠的选择,但建议先阅读快速开始部分再上手使用。