系统思维技能 (Systems Thinking)
概述
本技能提供两套核心方法论,帮助你系统性地分析和解决复杂问题:
1. 多因素分析法 — 层层深挖问题成因,发现反馈回路
2. 系统基本模型应用 — 识别问题背后的系统结构,找到杠杆解和根本解
可视化输出规范(核心)
本技能的所有图表必须以可渲染的可视化图形形式输出,而非仅输出源代码。在 WorkBuddy 环境中,使用 show_widget 工具将图形渲染为内联可视化;同时保留源码与文字清单,便于复制到其他环境。
> 核心原则:用户必须直接"看到图",而不是看到一段待渲染的代码。
可视化类型与技术方案
| 分析环节 | 可视化类型 | 技术方案 | 说明 |
|---|---|---|---|
| 因素关系概览(多因素步骤1) | 因果图 | 原生 SVG 精绘(推荐) / Mermaid(≤6节点备选) | 分层布局,配色编码影响方向 |
| 反馈回路(多因素步骤4) | 因果回路图 CLD | 原生 SVG 精绘(推荐,节点>6必用) / Mermaid(≤6节点备选) | 颜色编码回路,标注极性/延迟/回路编号 |
| 行为模式推演(基模步骤2) | 趋势曲线 | Chart.js 双轴折线 | 展示延迟反馈、增长极限、主导回路转移 |
| 杠杆点分析(基模步骤3) | 杠杆点金字塔 | 原生 SVG | Meadows 12层,由浅到深可视化 |
| 存量-流量结构 | 结构图 | 原生 SVG | 需精细控制布局时使用 |
输出三件套(每次出图必须同时给出)
- 可视化图形:通过
show_widget工具渲染,用户直接看到图(首要) - 源码:Mermaid / Chart.js 配置,以代码块给出,便于复制到其他环境
- 文字回路清单/解读:辅助理解,且应对无法渲染的场景
配色与标注规范
- 增强回路 R(恶性/崩溃):暖色,红色系
#E24B4A - 增强回路 R(良性/增长):暖色,绿色系
#639922 - 调节回路 B:冷色,蓝色系
#185FA5 - 延迟标记:连接上标
延迟,并在图中显著标注‖ 延迟 Nx月/年 - 极性标记:
+(同向变化)/−(反向变化),用 Mermaid 的-->|+|/-->|-| - 回路编号:R1/R2/B1 等,在图注释与文字清单中保持一致
主题适配(跟随 IDE 主题)
- light 主题:浅色背景 + 深色文字,节点用浅填充 + 深描边;mermaid 用
theme: neutral - dark 主题:深色背景 + 浅色文字;mermaid 用
theme: dark - Canvas(Chart.js)不能用 CSS 变量,须硬编码十六进制颜色
渲染模板
可直接复用的 mermaid.js / Chart.js / SVG 代码模板见 references/visualization-templates.md。每次渲染前先 read_me 加载对应模块(diagram/chart)获取最新设计规范。
因果回路图绘制规范
因果回路图(Causal Loop Diagram,CLD)是系统思考的核心可视化工具。所有 CLD 必须通过 show_widget 渲染为可视化图形。
> 渲染方案选择(实战经验):
> - 节点 > 6 个 或 多回路耦合:优先原生 SVG 精绘——mermaid 自动布局在节点多时会拥挤、交叉、极性标注错位;SVG 可完全控制布局、回路颜色编码、延迟标注位置。
> - 节点 ≤ 6 个 的简单单回路图:可用 Mermaid graph LR + mermaid.js(快速)。
> - 无论哪种方案,都须保留源码 + 文字回路清单(输出三件套)。
基本语法
节点定义(因素/变量名):
因素简称[因素全称]
连接与极性标记(Mermaid 标准写法):
A[因素A] -->|+| B[因素B] # 正向关系:A增加则B增加,A减少则B减少
A[因素A] -->|-| B[因素B] # 负向关系:A增加则B减少,A减少则B增加
A[因素A] -->|延迟| B[因素B] # 存在显著时间延迟
回路标注(用 subgraph 或注释):
graph LR
A[销量] -->|+| B[收入]
B -->|+| C[研发投入]
C -->|延迟| D[产品质量]
D -->|+| A
%% 这是一个增强回路 R1:质量驱动增长
回路极性判定规则
- 沿回路数连接中的
-(负极性)标记数量 - 偶数个负 = 增强回路(正反馈,标记为 R)
- 奇数个负 = 调节回路(负反馈,标记为 B)
示例:
A -->|+| B -->|-| C -->|+| A
负极性连接数 = 1(奇数)→ 调节回路(B)
图表类型选择
| 场景 | 图表类型 | 说明 |
|---|---|---|
| 因素→系统关系概览 | 原生 SVG(推荐)/ graph TD |
分层布局,配色编码影响方向 |
| 因果回路(2-6变量) | Mermaid graph LR 或 SVG |
简单单回路,mermaid 快速可用 |
| 复杂回路网络(>6变量) | 原生 SVG 精绘 | mermaid 自动布局不可控,必须 SVG 手绘布局 |
| 存量-流量结构 | 原生 SVG | 带类型标注的结构图 |
绘图原则
- 变量名用名词性短语,不用动词(如“用户满意度”而非“满足用户”)
- 正负极性只标记直接影响,不跳过多层中间变量
- 延迟标记不可省略——时间延迟是系统行为复杂性的关键来源
- 回路必须闭环——确保每个回路标注最后一条边回到起点
- 逐步构建——先从 3-5 个关键变量开始,逐轮补充
- 区分“感知的状态”与“实际状态”——当信息有偏差时添加感知变量
复杂回路网络的布局(>6 变量)
对于超过 6 个变量、或多回路耦合的复杂系统,必须用原生 SVG 精绘——Mermaid 的 subgraph 分组在节点多时仍会自动布局错乱、连接交叉,无法清晰表达回路结构与极性。
SVG 精绘布局策略:
1. 因素关系图:垂直分层(系统状态 → 驱动因素 → 结果变量 → 外部因素),同层节点横向排列
2. CLD:核心节点放中心列,各回路围绕布局;用颜色编码回路(R 良性绿 #639922 / R 恶性红 #E24B4A / B 蓝 #185FA5 / 待激活虚线绿)
3. 共享节点(被多回路经过的节点,如"销量""电池储备")用中性色,是系统的结构耦合点,重点标注
4. 极性标签 +/− 标在箭头中点;延迟标 延迟 − 在对应连接上
5. 回路编号 R1/B1 等标在回路旁,与文字清单一致
> 完整模板见 references/visualization-templates.md 的「因素关系图 SVG 精绘」「CLD SVG 精绘」。
绘制时的输出要求
每次输出因果回路图时,必须同时给出(输出三件套):
1. 可视化图形:通过 show_widget 工具,用 mermaid.js 将 Mermaid 代码渲染为图形,用户直接看到图(首要交付物)
2. Mermaid 源码:以代码块形式给出,便于复制到其他环境二次编辑
3. 文字回路清单:辅助理解,应对无法渲染的场景
#### 回路清单(文字描述)
- R1「增长引擎」:销量 ↑ → 收入 ↑ → 研发投入 ↑ → 产品质量 ↑ → 销量 ↑
- B1「资源约束」:产能 ↑ → 交付延迟 ↓ → 用户满意度 ↑ → 订单量 ↑ → 产能需求 ↑ → 交付延迟 ↑
show_widget 渲染示例(Mermaid CLD):
<div style="background:#fff;border:0.5px solid #E5E5DC;border-radius:12px;padding:16px;">
<div class="mermaid" style="font-size:13px;">
graph LR
A[销量] -->|+| B[收入]
B -->|+| C[研发投入]
C -->|延迟| D[产品质量]
D -->|+| A
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad:true,theme:'neutral',flowchart:{curve:'basis'}});</script>
第一部分:多因素分析法
当用户描述一个问题时,按以下四个层次逐步展开分析。每一步的输出都应有清晰的结构,便于用户理解。
步骤 1:识别影响因素
首先界定系统边界,然后列出所有影响系统行为与状态的因素。
输出格式:
## 系统边界界定
- 系统名称:[系统的名称]
- 范围:[时间范围和空间/组织范围]
- 核心行为/状态:[关注的系统行为或状态指标]
## 影响因素清单
### 内部因素
| 编号 | 因素 | 描述 | 对系统的影响方向 |
|------|------|------|------------------|
| I1 | ... | ... | ↑/↓/复杂 |
### 外部因素
| 编号 | 因素 | 描述 | 对系统的影响方向 |
|------|------|------|------------------|
| E1 | ... | ... | ↑/↓/复杂 |
## 关系图(用 show_widget 渲染为可视化图形)
> 须通过 `show_widget` + mermaid.js 渲染输出,让用户直接看到因素关系网络,而非仅看到代码。
```mermaid
graph TD
I1[因素1] --> S[系统状态]
E1[外部因素1] --> S
...
**操作要点:**
- 尽量穷举因素,不做筛选
- 区分内部因素(系统内可控)和外部因素(系统外不可控)
- 初步判断每个因素对系统的影响方向(正向增强/负向抑制/非线性复杂影响)
- 用 Mermaid 图表可视化因素与系统状态的关系
### 步骤 2:分析影响机制
对每个因素,深入分析它是**如何**对系统产生影响的。
**输出格式:**
影响机制分析
[因素名称]
- 影响路径:[因素] → [中间变量1] → [中间变量2] → [系统状态]
- 影响强度:高 / 中 / 低
- 时间延迟:短期(立即生效)/ 中期(数周到数月)/ 长期(数月到数年)
- 非线性特征:[是否存在阈值效应、边际递减、临界点等]
- 证据/假设:[基于什么判断这个影响机制]
**操作要点:**
- 关注影响链中的中间变量,揭示隐藏的影响路径
- 标记时间延迟,这是系统行为复杂性的重要来源
- 标记非线性特征(如临界点、边际递减等),这些是杠杆点存在的信号
- 区分已验证的事实和基于经验的假设
### 步骤 3:追溯上级因素(因果链层层上溯)
对步骤 1 中识别出的每个关键因素,追问"影响这个因素的因素又是什么?",形成因果链。
**输出格式:**
因果链追溯
[顶层因素]
[一级因素]
├── [二级因素 A]
│ ├── [三级因素 A1]
│ └── [三级因素 A2]
├── [二级因素 B]
│ └── [三级因素 B1]
└── ...
因果链汇总
| 直接因素 | 间接因素链 | 可干预节点 |
|---|---|---|
| ... | ... | ... |
**操作要点:**
- 至少追溯 3 层(直到触及基本常量或可改变的变量)
- 对每个间接因素标记"可干预节点"——标志着该因素是可以实际干预的改变点
- 关注跨因果链的交叉影响(即一个因素的上级因素同时影响另一个因果链)
### 步骤 4:识别反馈回路
在前三步的基础上,排查直接因素和间接因素之间是否存在反馈回路。**必须通过 `show_widget` 渲染可视化 CLD 图形 + 给出 Mermaid 源码 + 文字回路清单(输出三件套)。**
**输出格式(图表部分——Mermaid):**
```mermaid
graph LR
subgraph 增强回路
A[因素A] -->|+| B[因素B]
B -->|+| C[因素C]
C -->|延迟| A
end
subgraph 调节回路
D[因素D] -->|+| E[因素E]
E -->|-| F[因素F]
F -->|-| D
end
%% R1「回路名称」
%% B1「回路名称」
输出格式(文字部分):
## 反馈回路识别
### 增强回路(正反馈,R)
**R1「[回路名称]」**
[因素A] ↑ → [因素B] ↑ → [因素C] ↑ → [因素A] ↑
特征:[自我强化的循环,导致指数增长或崩溃]
主导性:[当前是否主导系统行为]
延迟:[回路中是否存在显著延迟,约多长]
**R2「[回路名称]」**
...
### 调节回路(负反馈,B)
**B1「[回路名称]」**
[因素D] ↑ → [因素E] ↑ → [因素F] ↓ → [因素D] ↓
特征:[自我调节的循环,维持系统稳定]
主导性:[当前是否主导系统行为]
延迟:[回路中是否存在显著延迟,约多长]
### 反馈回路网络图(Mermaid 合并视图)
```mermaid
graph TD
A[因素A] -->|+| B[因素B]
B -->|+| C[因素C]
C -->|延迟| A
D[因素D] -->|+| E[因素E]
E -->|-| F[因素F]
F -->|-| D
%% 跨回路连接
A -->|+| D
回路闭环验证
| 回路 | 路径 | 负极性数 | 极性判定 | 验证结果 |
|---|---|---|---|---|
| R1 | A→B→C→A | 0 | 增强 | ✓ 正确 |
| B1 | D→E→F→D | 2 | 增强 | ⚠ 检查(2个负=增强,但描述为调节) |
### 关键发现
- **主导回路**:[哪个回路目前主导系统行为,判断依据]
- **延迟回路**:[哪些回路由于时间延迟而被忽视,可能导致超调或振荡]
- **潜在风险回路**:[哪些回路可能在条件变化时被激活]
- **回路相互作用**:[增强回路和调节回路之间的相互制衡关系]
操作要点:
- 标记每条连接的正负极性(+ 表示同向变化,- 表示反向变化)
- 判断回路极性:偶数个负极性连接 = 增强回路,奇数个 = 调节回路
- 做回路闭环验证表,避免方向误判
- 识别主导回路(当前驱动系统行为的核心回路)
- 关注延迟回路(由于时间延迟而未被注意的回路)
- 每个回路必须给出 Mermaid 图 + 文字描述两种形式
第二部分:系统基本模型应用
系统基本模型(System Archetypes)是反复出现的系统结构模式。识别问题匹配哪种基本模型,是找到杠杆解的关键。
可用的系统基本模型
详细模型定义见 references/archetypes.md。以下是核心模型速查:
| 模型 | 核心结构 | 典型症状 | 根本解方向 |
|---|---|---|---|
| 饮鸩止渴 (Fixes That Fail) | 症状→短期修补→副作用→加重症状 | 反复出现同样的问题,且越来越严重 | 识别并解决根本原因,忍受短期不适 |
| 转移负担 (Shifting the Burden) | 问题→症状解/根本解,症状解→副作用→削弱根本解能力 | 依赖外部方案,自身能力退化 | 强化根本解,控制症状解的使用 |
| 增长极限 (Limits to Growth) | 增强回路→成长→遇到限制条件→成长放缓/停滞 | 增长到一定程度后停滞 | 消除限制因素,而非继续推动增长 |
| 公地悲剧 (Tragedy of the Commons) | 多人共享资源→个体理性行为→集体非理性结果 | 资源持续衰竭 | 建立集体治理机制,改变激励结构 |
| 恶性竞争 (Escalation) | A的行动→B感受到威胁→B反击→A感受到更大威胁 | 双方不断升级对抗 | 一方主动打破循环,或建立第三方调解 |
| 目标侵蚀 (Drifting Goals) | 现实差距→降低目标→差距变小→维持现状 | 标准不断下降而不自知 | 坚持绝对标准,使用外部基准 |
| 富者愈富 (Success to the Successful) | 两个群体竞争同类资源→已有优势者获得更多→差距扩大 | 马太效应,两极分化 | 平衡资源分配,建立公平机制 |
| 成长与投资不足 (Growth & Underinvestment) | 快速增长→需要投资→投资不足→能力不足→限制增长 | 有增长机会但因能力不足而错失 | 前瞻性投资,建立产能储备 |
应用步骤
步骤 1:问题表述与模型匹配
引导用户清晰描述问题后,将其与系统基本模型匹配。
匹配方法:
1. 提取问题中的关键变量和行为模式(时间趋势)
2. 将关键变量映射到各模型的核心结构
3. 选择最匹配的 1-2 个模型
输出格式:
## 问题结构分析
### 问题表述(用户语言)
[用一两句话概括用户的问题]
### 关键变量提取
| 变量 | 当前趋势 | 边界条件 |
|------|----------|----------|
| ... | 上升/下降/波动 | ... |
### 模型匹配
**最佳匹配模型:[模型名称]**
- 匹配度:[高/中] — [简述匹配理由]
- 结构映射:
- [模型中的角色A] → [用户问题中的对应变量X]
- [模型中的角色B] → [用户问题中的对应变量Y]
- ...
**备选模型:[模型名称]**(如有)
步骤 2:行为模式推演
基于匹配的模型,推演系统未来的行为趋势。
输出格式:
## 行为模式推演
### 当前趋势延续(不出手干预)
[描述如果不干预,系统将如何演化,使用模型的结构逻辑推导]
### 可能的意外后果
[基于模型特征,指出当前路径可能导致的非直觉性后果]
### 趋势图(必须用 Chart.js 渲染为可视化曲线)
[用 Chart.js 双轴折线图展示各关键变量在 3-5 个时间周期内的变化,须通过 `show_widget` 渲染。延迟反馈、增长极限、主导回路转移等关键节点须用参考线标注。模板见 `references/visualization-templates.md`]
步骤 3:杠杆解与根本解
杠杆解是在系统中用最小的干预产生最大效果的点。根本解是解决导致问题的深层系统结构。
输出格式:
## 杠杆解与根本解
### 杠杆点分析(基于 Donella Meadows 杠杆点层级)
> 建议将 12 层杠杆点用原生 SVG 渲染为金字塔图(浅层在底、深层在顶),高亮本次问题的根本解所在层级。模板见 `references/visualization-templates.md`。
| 层级 | 杠杆点类型 | 在本问题中的具体表现 | 干预难度 |
|------|------------|----------------------|----------|
| 12 | 数字/参数 | ... | 低 |
| 11 | 缓冲器 | ... | 低 |
| 10 | 存量-流量结构 | ... | 中 |
| 9 | 延迟时间 | ... | 中 |
| 8 | 调节回路强度 | ... | 中高 |
| 7 | 增强回路强度 | ... | 中高 |
| 6 | 信息流结构 | ... | 高 |
| 5 | 规则/激励 | ... | 高 |
| 4 | 自组织能力 | ... | 很高 |
| 3 | 系统目标 | ... | 很高 |
| 2 | 心智模式/范式 | ... | 极高 |
| 1 | 超越范式 | ... | 极高 |
### 杠杆解(高杠杆干预点)
#### [杠杆解 1]:[名称]
- **杠杆层级**:[N]
- **干预方式**:[具体操作]
- **预期效果**:[为什么小干预能产生大效果]
- **风险与副作用**:[可能的负面后果]
- **实施难度**:低/中/高
#### [杠杆解 2]:[名称]
...
### 根本解(结构性方案)
#### [根本解 1]:[名称]
- **针对的系统结构**:[改变什么回路或关系]
- **具体措施**:
1. [措施1]
2. [措施2]
3. [措施3]
- **预期时间跨度**:[短期/中期/长期见效]
- **成功指标**:[如何判断根本解生效]
#### [根本解 2]:[名称]
...
### 行动建议路线图
| 阶段 | 行动 | 类型 | 时间 | 预期效果 |
|------|------|------|------|----------|
| 立即行动 | ... | 杠杆解/根本解 | 1-2周 | ... |
| 短期 | ... | ... | 1-3月 | ... |
| 中期 | ... | ... | 3-12月| ... |
| 长期 | ... | ... | 1年以上| ... |
操作要点:
- 杠杆解可能不是根本解——它只是效率最高的干预点,不一定解决深层结构
- 根本解往往需要更长的时间和更大的投入,但效果更持久
- 建议同时给出杠杆解(快速见效)和根本解(长期根治)
- 高杠杆点(如改变规则、目标和心智模式)虽然干预难度大,但效果最深远
完整工作流程
当用户提出一个需要系统思考的问题时,按以下流程操作:
用户问题
│
▼
[多因素分析法]
├── 步骤 1:识别影响因素
├── 步骤 2:分析影响机制
├── 步骤 3:追溯上级因素
└── 步骤 4:识别反馈回路
│
▼
[系统基本模型应用]
├── 步骤 1:问题表述与模型匹配
├── 步骤 2:行为模式推演
└── 步骤 3:杠杆解与根本解
使用原则:
1. 始终先做多因素分析,再做模型匹配。多因素分析提供事实基础,模型匹配提供理论框架。
2. 根据问题复杂度调整深度:简单问题可合并步骤,复杂问题应逐步展开。
3. 用户可以选择只启用其中一部分:比如只做多因素分析,或只做模型匹配。
4. 推进节奏:默认走完全程再交付(用户通常需要完整结果);若用户明确要求分步推进或问题极复杂,则在关键节点(如识别反馈回路后)暂停确认。每一步的可视化图形须即时渲染,不要只给代码。
5. 语言匹配:始终使用用户的语言(中文/英文)进行输出。
触发条件
本技能在以下情况下应被激活:
关键词触发(用户使用了以下表述之一时优先激活):
- "系统思维"、"系统性思维"、"系统思考"、"系统性思考"
- "系统性分析"、"系统分析"、"系统化思考"、"系统式思考"
- "系统性解决问题"、"系统化解决问题"、"系统性解决方案"
- "多因素分析"、"因果分析"、"反馈回路"、"根本原因分析"
- "杠杆解"、"根本解"、"系统结构"、"反馈机制"
- "因果回路图"、"因果循环图"、"系统循环图"、"因果反馈图"
- "存量流量图"、"系统动力学图"
场景触发(用户的问题符合以下特征时激活):
- 用户描述了一个反复出现的复杂问题,询问原因或解决方案
- 用户寻求某个组织/业务/技术问题的深层原因
- 用户的问题涉及多个相互关联的因素,且简单的线性因果无法解释
- 用户想要理解问题背后的系统结构或反馈机制
- 用户在讨论"为什么问题反复出现"、"为什么越努力越糟糕"等系统陷阱
- 用户使用"分析一下原因"、"为什么会这样"、"怎么做才能从根本上解决"等表述
```