# Circuit Analyze

> 硬件原理图分析——上传电路图截图，AI 识别拓扑/元件/连接关系，分类每个元件的功能角色，计算关键参数，给出工程加固建议。覆盖模拟电路、数字电路、电源电路、混合信号电路。触发词："分析电路"/"电路分析"/"analyze circuit"/"看看这个电路"/"帮我分析下这张电路图"/"这个电路是什么"。

- Skill: `q1109/circuit-analyze` (Agent Skill)
- Install (CLI): `npx skillmds@latest add q1109/circuit-analyze`
- Raw SKILL.md: https://api.skillmd.com/api/skills/q1109/circuit-analyze/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: q1109 (https://skillmd.com/u/q1109)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/q1109/circuit-analyze

---


# /circuit-analyze — 硬件原理图分析

结构化分析流水线：识别 → 连接表 → 确认 → 角色分类 → 参数计算 → 工程加固 → 报告。

核心价值：回答"每个元件为什么在这里"和"这个电路拿到产线上会出什么问题"。

## Overview

```
用户上传原理图图片（单张或多张）
  ↓
判断模式: 单图 / 多图（同项目分页）/ 连续分析
  ↓
Phase 1: 电路识别 — 提取元件/值/连接/拓扑 + 跨页网络标签
  ↓
Phase 2: 连接表(初学) + 解读(教学) + 网表(计算) — 三层输出，各司其职
  ↓
Phase 3: 元件角色分类 + 选型依据 — 基于网表，每个元件为什么在这里 + 为什么选这个型号
  ↓
Phase 4: 关键参数计算 — 基于网表（内部数据模型）推导传递函数/增益/截止频率
  ↓
Phase 5: 工程加固检查 — 从原理图到产品电路，给出补完建议
  ↓
Phase 6: 结构化报告 — 控制台输出（多图时附加板级汇总）
```

## 多图/项目模式

### 识别规则

当前分析启动时，检查是否存在**之前的分析上下文**：

- **单图模式**: 用户传一张图，没有前序上下文 → 独立分析
- **批量模式**: 用户一次传多张图 → 逐张分析 + 最后汇总
- **连续模式**: 用户分析完一张后又传一张 → 视为同一项目的下一页，维护上下文

### 上下文追踪

分析每张图时，记录该页出现的**跨页网络标签**（如 `VPRO`、`485A`、`VLCD`、`+5V`、`GND` 等带有跨页连接属性的 net name）：

| 追踪项 | 作用 |
|--------|------|
| 电源轨 | `+12V`、`+5V`、`VLCD`、`V11`... → 构建板级电源树 |
| 信号跨页 | `485A`、`ADC_OUT`、`ISN_P`... → 标记信号来源/去向 |
| 未解析 net | 某个 net 的来源不在当前页 → 标注"来自页 X?" |

### 板级汇总

所有页分析完后，询问用户"要做板级汇总吗？"如果用户同意：

```
┌─────────────────────────────────────────┐
│  项目板级汇总                              │
│                                           │
│  📐 电源树                                 │
│  24V → Buck → 5V → VLCD → 运放电路        │
│               5V → RS-485 收发器           │
│               24V → V11(?) → VPRO编程      │
│                                           │
│  🔗 信号流                                 │
│  [传感器] → ISN_P/N → 差分放大 → ADC_OUT   │
│  MCU → 485_TX → RS-485收发器 → 485总线     │
│                                           │
│  ⚠️ 跨页悬空 net: V11 来源未找到            │
│                                           │
│  🛡️ 全局问题                               │
│  - 电源入口无保险丝（Buck 输入侧）           │
│  - 无统一 ESD 策略（各接口各自为政）         │
└─────────────────────────────────────────┘
```

### 上下文清除

用户说"新项目"/"重新开始" → 清除所有上下文。

---

## 适用范围

覆盖所有常见硬件原理图类型：

| 类别 | 典型电路 |
|------|---------|
| 模拟电路 | 运放电路（反相/同相/差分/跟随器/求和/仪表放大器/积分器/微分器）、有源滤波器（Sallen-Key/MFB/状态变量）、三极管放大电路（共射/共基/共集/差分对）、MOSFET 开关/放大、二极管电路（整流/钳位/稳压/续流） |
| 电源电路 | 线性稳压（78xx/LDO）、DC-DC 开关电源（Buck/Boost/Buck-Boost）、电荷泵、电源滤波/保护 |
| 数字电路 | 逻辑门电路、电平转换、隔离（光耦/磁耦）、MCU 外围（复位/晶振/调试接口）、接口电路（RS232/RS485/CAN/USB） |
| 混合信号 | ADC/DAC 前端调理、采样保持、Vref 基准源 |

遇到超出当前知识覆盖的冷门电路时，先 WebSearch 搜索，搜不到则用已知的电路原理进行类推分析，标注不确定性。

## Inputs

| 必填 | 说明 |
|---|---|
| `<image-path>` | 原理图图片 (PNG/JPG/截图/照片)，支持单张或多张 |

无需任何本地文件依赖。分析所需的知识来自模型训练数据。

**Datasheet 策略**: 不确定的型号/参数先 WebSearch 搜 datasheet。搜不到或信息不全时，标注"⚠️ 推测值"并给出区间估算，同时提示用户"如果有 datasheet 可以发给我修正"。

## Workflow

### Phase 1: 电路识别

利用视觉能力分析原理图，提取：

- **元件清单**: 对每个可见元件提取 — 位号 (R1/U1/C2/Q1/D1...)、类型 (电阻/电容/电感/运放/三极管/MOSFET/二极管/IC/晶振/连接器...)、标称值（含单位）、封装/型号（如有标注）、置信度 (高/中/低)
- **连接关系**: 构建节点连接表。标注关键节点——优先用原理图上的 net label (VIN/VOUT/+5V/GND...)，无名节点自动编号 N001/N002...。**目标是直接可转换为网表**
- **拓扑识别**: 根据元件配置和连接模式判断电路类型

**标记低置信度项**:
- 模糊/遮挡的元件值 → 🔴 低
- 多个可能类型的元件 → 🟡 中
- 不清晰/推断的连接关系 → 🟡 中
- 拓扑不确定 → 🟡 中，准备候选

**不确定的型号/参数** → 先 WebSearch 搜 datasheet。搜不到则用已知的器件典型值估算；关键参数无法确定时，标注为推测值并给出区间。提示用户"有 datasheet 可发我修正"。

---

### Phase 2: 连接表 + 解读 + 确认

**目标**: 将 Phase 1 的识别结果转换为三层输出——既有初学者的可读性，又有从业者的精确性。

#### 三层输出结构

```
┌─ Layer 1: 功能块连接表 ──── 按电路功能分组，初学者可读
│      │
│   【反相放大器 — U1 运放】
│     +IN: pin3 ── GND
│     -IN: VIN ── R1(1k) ── pin2
│           pin2 ── Rf(10k) ── pin1(OUT)
│     OUT: pin1 ── VOUT
│      │
│   ← 每行 = 一条精确的节点连接，无串/并联歧义
│   ← 用信号名和引脚名，不用 N001 自动编号
│
├─ Layer 2: 自然语言解读 ──── 一段话解释电路做什么
│      │
│   "U1 和 R1/Rf 构成反相放大器，增益 = -Rf/R1 = -10。
│    C1 是输入隔直电容，防止前级直流偏置影响虚地..."
│      │
│   ← 适合初学者理解电路意图
│
└─ Layer 3: SPICE 网表 (可选) ──── 用户说"导出网表"时输出
       * 反相放大器
       R1 VIN N001 1k
       Rf N001 VOUT 10k
```

#### Layer 1: 功能块连接表

输出格式：

```
📐 电路连接:

【功能块1 — 核心描述】
  关键节点: 信号流方向
  PIN (pinX):  NODE_A ──元件(值)── NODE_B  (作用注释)
  ...

【功能块2 — 核心描述】
  ...

【电源】
  +5V: U1(pin8), ... 
  GND: U1(pin4), ...
```

格式规则：
- 用原理图上的 net label 作为节点名 (VIN/VOUT/INA/CC...)，不用 N001
- 用 IC 引脚名而不是编号 (in+/in-/out/vcc...)，后面括号标注 pin number
- 箭头 `──→` 表示信号流向
- `∥` 表示并联，如 `R16∥C26`
- 非关键去耦/滤波可以用一行汇总，不需逐个列出
- 看不清的值标 🔴，已确认的标 🟢

#### Layer 2: 自然语言解读

连接表之后，用 3-5 句话解释：
- 电路整体做什么
- 每个功能块扮演什么角色
- 信号流从哪到哪
- 关键设计意图（为什么这样接）

```
💡 一句话: 这是一个反相放大器，增益 Av=-10。

   U1 和 R1/Rf 构成反相放大器的核心——输入信号经 R1 
   进入运放反相端，输出经 Rf 反馈回来，放大倍数由 
   Rf/R1 的比值决定。C1 串联在输入路径上，隔断前级可能
   存在的直流偏置电压，只让交流信号通过。
```

#### Layer 3: SPICE 网表（可选）

用户说 `导出网表` 或 `save netlist` 时输出。使用标准 SPICE 格式，节点名映射回 N001/N002... 自动编号。
写入 `.cir` 文件，路径由用户指定。

#### 确认流程

三层输出后标注 🔴 项：

```
⚠️ 请确认:
  🔴 Rf 的值是 10k 还是 100k？影响增益
  🔴 Q24 的源极是接 V11 还是接 GND？
  🟡 C3 的容值？(不影响核心分析)

回复 "ok" 或直接纠正，如 "Rf=100k, Q24源极→V11"
```

用户纠正后更新 Layer 1 和 Layer 2。
**确认上限**: 最多 3 轮。

---

### Phase 3: 元件角色分类

**基于已确认的网表**（内部数据模型，非人读的 Layer 1 连接表）进行分析。对每个元件按以下 8 类角色归类，写一句解释它为什么在这里：

| 角色 | 含义 | 典型元件 |
|------|------|---------|
| gain-setting | 决定放大倍数/衰减量 | Rf, Rin, Rg |
| frequency-shaping | 决定工作频率和频率响应 | 滤波电容、补偿电容、LC 谐振 |
| DC-bias | 设定直流工作点或隔直 | 耦合电容、偏置分压电阻、Vref |
| stability-compensation | 防振荡/防过冲 | 相位补偿电容、输出隔离电阻、snubber |
| protection/isolation | 防 ESD/过压/过流/短路/反接 | TVS、钳位二极管、保险丝、光耦、串联限流电阻 |
| structural/essential | 电路骨架，拿走不工作 | 有源器件(运放/三极管/MOSFET/IC)、负载电阻、电源 |
| power-delivery | 供电、去耦、滤波、稳压 | 去耦电容、旁路电容、磁珠、LDO |
| impedance-matching | 设定/匹配输入输出阻抗 | 终端电阻、串联匹配电阻 |

输出格式：

```
🔧 每个元件是干嘛的:

| 位号 | 值    | 角色              | 为什么在这里                       |
|------|-------|-------------------|-----------------------------------|
| R1   | 1kΩ   | gain-setting      | 与Rf共同设定增益Av=-Rf/R1=-10     |
| C1   | 100nF | DC-bias           | 输入隔直电容，阻断前级直流偏置     |
| D1   | 1N4148| protection        | 输入钳位，防止负压损坏运放输入级   |
```

#### 选型依据（关键元件）

角色分类之后，对**有具体型号或关键参数的核心元件**分析选型依据。回答"为什么选这个型号而不是别的"：

**分析维度**（每类元件挑相关项，不需全部）:
- **电压应力**: 额定电压 vs 电路中承受的最大电压 → 裕度是否够
- **电流应力**: 额定电流 vs 实际峰值/持续电流 → 裕度是否够
- **速度/频率**: 开关速度/GBW/反向恢复时间 → 是否满足电路频率要求
- **精度**: 容差/温漂/匹配精度 → 是否满足电路精度要求
- **功耗/热**: 封装功耗 vs 实际耗散 → 是否需要散热
- **成本/替代**: 为什么不用更便宜/更常见的型号

输出格式：

```
📋 选型依据:

| 元件 | 型号/值 | 关键参数 | 选型理由 |
|------|---------|---------|---------|
| D9   | B540C   | 40V/5A Schottky | Buck续流，反压=24V→40V裕度67%；5A远超负载电流；Schottky低Vf降导通损耗 |
| Q25  | 2N7002  | 60V/115mA N-ch | 仅驱动栅极，电流需求极小；60V耐压远超24V输入；SOT-23小封装 |
| R3   | 52.3k/1%| E96, 1% | 反馈分压决定VOUT精度；E96标准值；1%精度保证输出误差<2% |
| C6   | 100μF   | — | 输出滤波大电容，降低低频纹波；耐压需≥10V（选16V规格保裕度）|
```

**关键规则**:
- 有明确型号的优先查 datasheet 找极限参数，与电路实际应力对比
- 无型号的（如通用电阻电容），根据电路参数反推选型约束（如"此处电容耐压需≥25V"）
- 如果某元件选型有明显不合理处 → 标 🟡 并提出替代型号

---

### Phase 4: 关键参数计算

**基于网表的节点和元件值**（内部数据模型），直接推导传递函数或计算公式。

**模拟电路**：增益(DC/AC)、截止频率(-3dB点)、输入/输出阻抗、直流工作点、带宽(GBW限制)、Q值(滤波器)、CMRR(差分电路)

**电源电路**：输出电压、纹波估算、效率、开关频率(如适用)、输入/输出电压范围

**数字电路**：逻辑电平、上拉/下拉值、时间常数(RC延时)、电流驱动能力

**交叉校验**：计算结果是否合理？电阻值在优选范围？增益是否超过器件能力？截止频率是否合理？

不确定的器件参数（如运放 GBW、三极管 β）先 WebSearch 搜 datasheet，搜不到用典型值代入并标注"推测值"。**未知电压/频率等关键参数**无法从电路推断时，用**区间分析法**——列出"如果 X=12V 则...如果 X=15V 则..."，供用户对照实际确认。用户可提供 datasheet 或实测值来收窄区间。

输出格式：

```
📊 关键参数:

  直流增益: Av = -10 (20dB)
  输入阻抗: Zin ≈ 1kΩ
  输出阻抗: Zout < 1Ω (闭环)
  -3dB 带宽: ≈ 91kHz (LM358 GBW=1MHz / 噪声增益=11)

  ⚠️ 需 datasheet 确认: LM358 GBW 容差 ±30%，实际带宽 70-100kHz
```

---

### Phase 5: 工程加固检查

从"能工作"到"能投产"。逐项检查并给出：

- **缺了什么** → **生产上会出什么问题** → **怎么修** → **有什么副作用**

检查维度（根据电路类型选相关项，不需要全部）：

- **ESD/浪涌防护**: 对外接口是否有 TVS/钳位/ESD 保护
- **电源完整性**: 芯片电源引脚是否有去耦电容；电容是否紧贴引脚；电源入口是否有滤波
- **信号完整性**: 输入是否有 RF/EMI 滤波；高速信号是否有终端匹配
- **稳定性**: 反馈环路是否可能振荡；大反馈电阻是否需要补偿电容；容性负载是否隔离
- **偏置/直流路径**: 输入偏置电流是否有直流通路；单电源运放是否有偏置
- **热/功耗**: 功率元件是否有散热考虑；LDO 压差×电流是否可接受
- **保护/鲁棒性**: 输出是否有短路保护；输入是否有过压保护；电源是否有反接保护
- **启动行为**: 上电瞬间输出是否会冲到满幅；电源是否有软启动
- **容差/量产**: 电阻精度是否足够（特别是差分/匹配电阻）；电容材质是否合适（滤波用 C0G，去耦用 X7R）

标记：
| 标记 | 含义 |
|------|------|
| 🔴 | 缺失，强烈建议加 |
| 🟡 | 需注意/条件性建议 |
| 🟢 | 已正确处理 |

---

### Phase 6: 报告输出

汇总 Phase 3-5 输出结构化报告。

报告末尾提示：

```
下一步:
  - "这个电路如果[改动]，会怎样?" → 进入修改讨论
  - "帮我把这个分析写成视频稿" → 生成脚本
  - "分析下一张图" → 连续分析（同项目），维护板级上下文
  - "做板级汇总" → 将所有分析过的页汇总为板级报告
  - "新项目" → 清除上下文，从头开始
```

---

## Key Rules

1. **三层输出：连接表(人读) + 解读(教学) + 网表(内部分析)**。Phase 2 输出 Layer 1 连接表作为确认界面；Phase 3-5 的分析基于网表（内部数据模型），计算在其上执行
2. **角色分类 + 选型依据是教学内容**。每个元件一句"为什么在这里"+"为什么选这个型号"，这是通用 AI 不会主动做的事
3. **工程加固要有后果**。不只说加什么，要说"不加会怎样"（击穿/振荡/噪声/烧毁/漂移...）
4. **参数要交叉校验**。算完增益查电阻值范围；算完 fc 查是否合理；算完功耗查封装是否扛得住
5. **不编造元件值**。看不清就标 🔴 低置信度让用户补充
6. **未知参数用区间分析**。用户也不知道某参数时，列"如果 A 则 B"的区间表，不凭空猜一个值
7. **datasheet 先搜再问**。不确定的型号/参数先 WebSearch 搜，搜不到标注"推测值"并告诉用户"有 datasheet 可发我修正"
8. **覆盖所有硬件电路类型**。模拟/数字/电源/混合信号都支持
9. **多图维护上下文**。用户连续分析多张图时，追踪跨页 net 和电源轨，最后可做板级汇总

## Refusals

- 「图片完全看不清」→ 列出能辨认的轮廓，建议用户提供清晰版
- 「不是原理图（PCB 版图 / 实物照片）」→ 说明需要原理图而非版图，建议先导出原理图
- 「用户要跳过 Phase 2 网表确认」→ 拒绝。网表确认是质量兜底——串/并联看错，后面全错

