Patterns
Agent Node Design
Visual language for ZGI's agent graph editor. Each node communicates type, state, and data flow without decoration. Every decision — icon, color, border, port — has exactly one job.
Canvas preview
Full editor layout: white palette sidebar with all 19 nodes, dot-grid canvas, toolbar, bottom controls.
流程控制
AI 能力
数据处理
扩展工具
Node types
Six shapes cover all graph operations. Shape encodes behavior, not aesthetics.
Triage
Agent
Agent
Executes an LLM call or sub-agent. Most common node type.
Classify
Classify
Category 1
Category 2
Category 3
Classify
Routes to N output branches. Each branch gets its own port.
Condition
If / else
input.output_parsed
.has_all_details == trueElse
True
Condition
Boolean branch. Shows the expression inline; True/Else ports on right.
If any data is missing, ask the user before proceeding.
Note
Non-executable sticky. Always yellow; no ports. Documentation only.
Start
Start
Entry point. Exactly one per graph. No left port — only right output.
New node
Placeholder shown when a branch has no target. Click to open palette.
Node anatomy
Three layers: header (always), subtitle (optional), body (optional).
LLM Reasoning
Agent
Qwen3-Max · temp 0.3
Outputs
draft_answer · confidence
Node states
State lives in the border and ring only. Background never changes.
LLM Reasoning
Agent
Qwen3-Max
Default
Neutral border · no ring
LLM Reasoning
Agent
Qwen3-Max
Selected
#2A6FDB border + selection ring
LLM Reasoning
Agent
Qwen3-Max
Running
Pulsing blue dot in header
LLM Reasoning
Agent
Qwen3-Max
Error
#dc2626 border + red ring
Node palette
Group is encoded by the icon-tile background color. Icons themselves stay uniform near-black (#1a1a1a).
流程控制
条件分支
人工审查
迭代
循环
直接回复
AI 能力
参数提取器
知识检索
LLM
图片生成
数据处理
变量聚合器
变量赋值
文档提取器
JSON 解析器
扩展工具
HTTP 请求
创建定时任务
发送短信
执行自定义SQL
智能SQL生成
代码执行
Palette sidebar
White panel with hairline right border · group encoded by icon-tile color family · 19 nodes across 4 groups. Width 180px.
流程控制
AI 能力
数据处理
扩展工具
Specifications
180–240px (fixed per type)10px28px · 7px radius · pastel bg14px · strokeWidth 1.7513px semibold · #0a0b0d11px · #6b7280 · below name11px · #6b7280 · border-t hairline10px circle · white 2px ring · #c8cdd61.5px #2A6FDB border · 0 0 0 3px rgba(42,111,219,0.12)1.5px #dc2626 border · 0 0 0 3px rgba(220,38,38,0.10)white · border-r rgba(10,11,13,0.06)180px1.5px · rgba(10,11,13,0.25)4 3 dash · conditional branches only#f5f4f2 · 20px dot gridRules
- Node name is the instance name ("Triage"), not the type ("Agent") — the type label appears below.
- Icon color and hue encode group membership. Never reuse a hue across groups.
- State lives in border + ring only. Background color never changes on hover, select, or run.
- Port dots are neutral (#c8cdd6) by default. They turn blue only during an active drag connection.
- Dashed edges indicate conditional or inactive paths. Solid edges are always-active.
- Palette uses a white background with a hairline right border — quiet container. Group is encoded by icon-tile color: AI=indigo, 流程控制=peach, 数据处理=lavender, 扩展工具=yellow.
- New node placeholders use a dashed border — they are invitations, not real graph nodes.
- Classify and Condition output ports sit on each output row, not on the node header.