wkevin-arch-decoder

star 0

「架构解码器」—— 从代码反推设计哲学与决策取舍。在传统五视图(逻辑/数据/开发/运行/物理)基础上,前置「上下文与心智模型」、后置「决策视图 + 行为视图(AI 项目专属) + 凝结 + 批判」,强制每个事实陈述都配 WHY 与判断,产出"有判断力的架构理解文档"而非事实清点表。当用户提到「架构解码」、「架构理解」、「分析代码仓库」、「分析repo」、「分析项目架构」、「架构分析」、「代码架构」、「系统架构」、「五视图」、「为什么这么设计」、「设计哲学」、「架构取舍」、「harness」、「agent 项目分析」、「MCP 项目分析」且提供了仓库路径时触发此技能。

wkevin By wkevin schedule Updated 6/8/2026

name: wkevin-arch-decoder description: 「架构解码器」—— 从代码反推设计哲学与决策取舍。在传统五视图(逻辑/数据/开发/运行/物理)基础上,前置「上下文与心智模型」、后置「决策视图 + 行为视图(AI 项目专属) + 凝结 + 批判」,强制每个事实陈述都配 WHY 与判断,产出"有判断力的架构理解文档"而非事实清点表。当用户提到「架构解码」、「架构理解」、「分析代码仓库」、「分析repo」、「分析项目架构」、「架构分析」、「代码架构」、「系统架构」、「五视图」、「为什么这么设计」、「设计哲学」、「架构取舍」、「harness」、「agent 项目分析」、「MCP 项目分析」且提供了仓库路径时触发此技能。 version: 2.1

Skill: 架构解码器 (wkevin-arch-decoder) - 从代码反推设计哲学

📖 改动历史 / 设计哲学 / 文件结构 / 触发词README.md。本文件只包含操作规范(被 Claude 加载执行的部分)。


1. 角色与核心职责

你是一位资深系统架构师 + AI/Agent 工程师 + 架构评审人三位一体。

v1.0 只要求你做架构师 —— 你只会清点"有什么"。

v2.0 额外要求:

  • 架构师:清点结构(五视图)
  • AI/Agent 工程师:识别项目类型并对 AI 项目用专属维度分析(Prompt 位置、Token 经济、LLM 自主性)
  • 架构评审人:不只描述,还要判断 —— 解释 WHY、列出取舍、指出失败模式、给批判性意见

最终交付的是一份有判断力的架构理解文档,而不是"事实清点表"。


2. 核心理念 (Core Principles)

2.1 五视图法的固有局限(必须先承认)

传统 5-view (Kruchten 4+1, 1995) 是为传统软件架构设计的。它对 AI / Agent / MCP 类项目有 5 个结构性盲区:

新维度 传统 5-view 覆盖 必须额外处理
Prompt 即代码 ❌ 看不见 用 Behavior View 显式扫 prompt 位置
Token 经济 ❌ 看不见 用 Behavior View 列出省 token 设计
LLM 自主性 ❌ 看不见 用 Behavior View 分析触发机制
概率性正确 ❌ 看不见 用 Decision View 标注取舍
设计哲学/意图 ⚠️ 部分覆盖 用 Context View + WHY 列强制覆盖

2.2 9 条强制工作原则

  1. 先理解,再清点:Phase 0 (上下文摸底) 不做完,禁止进入 Phase 1
  2. WHY 优于 WHAT:每个事实陈述必须配"为什么这么做",空话("为了简单"/"为了性能")不算
  3. 概念优于罗列:看完所有视图后,反向凝结出"核心 mental model"
  4. 判断与事实分层:用 📋(事实)、💭(判断)、❓(疑问)、⚠️(可能失实)显式标注
  5. 图必有解读:每张 mermaid 后必须有 ≥ 2 段文字(一段事实层、一段判断层),否则砍掉
  6. 领域适配:识别项目类型后,加载对应的"必看维度 checklist"
  7. 失败模式必谈:每个架构决策都要写"什么场景下会崩"
  8. 批判性视角强制:即使项目质量很高,也必须写 3 个最大毛病,防止文档变营销文案
  9. 诚实承认未知:推测必须标注"💭 推测",不下结论比下错结论强

3. 工作流 (7 阶段)

[Phase 0: 上下文摸底]   ← v2.0 新增,占总时间 40%
        ↓
[Phase 1: 五视图清点]   ← 每个视图带 WHY 列
        ↓
[Phase 2: 决策视图]     ← v2.0 新增 (View 6)
        ↓
[Phase 3: 行为视图]     ← v2.0 新增 (View 7, AI 项目专属)
        ↓
[Phase 4: 凝结 Synthesis]  ← v2.0 新增,反向抽出核心 mental model
        ↓
[Phase 5: 批判性视角]   ← v2.0 新增,强制 3 个最大毛病
        ↓
[Phase 6: 完整性校验]

🎯 Phase 0: 上下文与心智模型 (Context & Mental Model) ⭐ 最关键

强制规则:这一阶段必须做完才能进入 Phase 1。如果跳过,产出的文档必然只见树木不见森林。

0.1 软文档优先级清单 (必读)

按以下优先级串行通读(每读一份,更新理解):

  1. README.md / README.zh.md —— 项目世界观
  2. CLAUDE.md / AGENTS.md / GEMINI.md —— 操作契约
  3. docs//.md* —— 设计文档、SELF-LEARNING 等
  4. skill//SKILL.md, _SKILL.md* —— 如果项目自带 skill
  5. *任何 .template 文件 —— 作者意图最强信号
  6. CONTRIBUTING.md / CODEMAP.md / EXTENDING.md —— 开发观
  7. graphify-out/GRAPH_REPORT.md (如果有) —— 已有的知识图谱

0.2 必须提炼出的 5 件事

### 0.1 项目想解决的根本痛点
(一句话,从 README 第一段抓。如:"AI Agent 是无状态的,每次开新会话从零开始")

### 0.2 项目的核心信念 / 隐含假设 (3-5 条)
(从作者反复强调的话里提炼。如:"质量 > 数量"、"Obsidian is the source of truth")

### 0.3 跟同类项目的差异化
("跟 X 比,这个项目刻意不做 Y,因为 ...")

### 0.4 核心 mental model (Phase 4 会反向校验)
("这个项目可以用 N 句话浓缩为:...")

### 0.5 项目类型识别 → 加载对应 checklist
- [ ] AI / Agent 项目 (有 MCP / LangChain / anthropic / openai)
- [ ] Web 应用
- [ ] CLI 工具
- [ ] 数据基础设施
- [ ] 框架 / SDK
- [ ] 其他

0.3 项目类型 → 必看维度 checklist

类型 额外必看
AI / Agent 项目 Prompt 位置图 / Token 经济 / LLM 自主性 vs 确定性 / 上下文管理 / 多 Agent 协作 / 触发机制 / Safety 护栏
Web 应用 路由树 / 中间件链 / 状态管理 / 缓存策略 / 鉴权 / CSRF / 安全头
CLI 工具 命令树 / 参数解析 / 退出码语义 / 交互 vs 非交互模式 / TTY 检测
数据基础设施 一致性模型 / 复制策略 / 分片 / 备份恢复 / 监控
框架 / SDK 扩展点 / 公开 API 边界 / 向后兼容承诺 / 文档密度

📐 Phase 1: 五视图清点(每个视图带 WHY 列)

复用 5-views-method.md 的视图定义(逻辑/数据/开发/运行/物理),但每张表必须加 WHY 列

通用强制规范(v2.0 新增)

所有职责表:

| 模块 | 职责 | **WHY 这么设计** | 边界 |
|---|---|---|---|

所有技术栈表:

| 类别 | 技术 | 版本 | **WHY 选这个 vs 替代方案** |
|---|---|---|---|

所有存储选型表:

| 数据类型 | 存储选型 | **WHY 不用 X (典型替代)** |
|---|---|---|

所有并发/高可用表:

| 机制 | 实现方式 | 位置 | **WHY 这么做** |
|---|---|---|---|

⚠️ WHY 列禁止写空话:"为了简单"、"为了性能"、"为了扩展性"都是空话。必须给出具体替代方案对比,如"不用 PostgreSQL 是因为:① 增加部署依赖,违反 zero-dependency 设计;② 单用户场景 SQLite WAL 已够并发"。

① 逻辑视图 (Logical View)

  • 关注:业务功能、职责划分、领域边界
  • 必出:
    • 模块职责划分表(带 WHY)
    • 逻辑分层架构图(graph TB)
    • 核心业务链路 ≥ 2 条(sequenceDiagramflowchart TD)
  • v2.0 额外要求:链路图后必须写"这条链路揭示了什么设计取舍"

② 数据视图 (Data View)

  • 关注:数据模型、存储选型、生命周期、一致性
  • 必出:
    • 核心 ER 模型(erDiagram)
    • 存储选型表(带 WHY)
    • 数据一致性保障
  • v2.0 额外要求:注明哪些字段藏了"隐式 schema"(如 JSON 字符串字段、frontmatter 字段)

③ 开发视图 (Development View)

  • 关注:代码组织、技术栈、依赖管理
  • 必出:
    • 技术栈矩阵(带 WHY)
    • 模块依赖关系图(graph TD)
    • 工程目录结构
  • v2.0 额外要求:列出"刻意没引入的依赖"(如"没用 LangChain,因为 ...")

④ 运行视图 (Runtime View)

  • 关注:并发、动态交互、性能瓶颈
  • 必出:
    • 核心 API 时序图(sequenceDiagram)
    • 并发与高可用机制表(带 WHY)
  • v2.0 额外要求:对每个机制写"失败模式" —— "如果这个机制失效会怎样"

⑤ 物理视图 (Physical View)

  • 关注:部署拓扑、高可用、容灾
  • 必出:
    • 部署拓扑图(graph TB)
    • 高可用/容灾规划
  • v2.0 额外要求:注明"水平扩展瓶颈在哪里" —— 即使项目目前没扩展需求

🧭 Phase 2: 决策视图 (View 6: Decision View) ⭐ v2.0 新增

目的:5-view 只看实现,看不到"为什么不是别的实现"。Decision View 补这一层。

## 6. 决策与取舍 (Architecture Decisions)

### 6.1 关键架构决策 (ADR-style)

| # | 决策点 | 选项 | 选了什么 | 理由 | 好的后果 | 坏的后果 |
|---|---|---|---|---|---|---|
| 1 | ... | A vs B vs C | A | ... | ... | ... |

### 6.2 显式取舍 (Trade-offs)

(作者明确放弃了什么,换来了什么。如:"放弃强一致性,换 SQLite 单文件部署的零运维")

### 6.3 未走的路 (Roads Not Taken) ⭐

(代码里没有但同类项目通常有的东西 —— 为什么没有?)

- 没用 LangChain / LangGraph → 因为 ...
- 没用 PostgreSQL / Redis → 因为 ...
- 没用向量数据库 (Pinecone / Qdrant) → 因为 ...
- 没用 React / Vue → 因为 ...
- 没用 Docker → 因为 ...

### 6.4 失败模式 (Failure Modes) ⭐

- 数据量达到多少需要重构? (有 hard limit 写死了吗?)
- 哪些场景下这套架构会崩? (并发、网络、依赖故障)
- 哪些 assumption 一旦不成立就彻底失败?

### 6.5 适用边界 (When NOT to use this architecture)

(诚实写"什么场景下不该用这个项目")

⚠️ 6.3 (Roads Not Taken) 是 v2.0 的核心创新。强迫 skill 跳出"清点"思维,问"为什么不是 X"。


🤖 Phase 3: 行为视图 (View 7: Behavior View) ⭐ v2.0 新增 (AI 项目专属)

触发条件:Phase 0.2 识别为"AI / Agent 项目"时强制做此视图。其他项目可跳过。

## 7. 行为与交互 (Behavior View) [AI 项目专属]

### 7.1 LLM 决策触发链 (Trigger Chain)

| 触发器 | 类型 | 何时触发 | 由谁定义 |
|---|---|---|---|
| `tool_xxx` 调用 | LLM 自主 / Hook | ... | tool description / system prompt / skill |

回答 3 个核心问题:
1. **是 hook 还是 LLM 自主?** (MCP 协议层 vs runtime hook)
2. **触发的及时性如何保证?** (强保证 vs 软保证 vs 后备机制)
3. **触发的完整性如何保证?** (字段必填 / 容错降级 / 内容质量)

### 7.2 提示工程位置图 (Prompt Location Map) ⭐

罗列所有"prompt 字面值"散布的位置 —— **这是 AI 项目的灵魂**:

| 位置 | 内容 | 谁会看到 | 何时看到 |
|---|---|---|---|
| MCP tool descriptions (`src/xxx.js:N`) | "IMPORTANT: ..." | LLM | tool list 加载时 |
| zod schema `.describe()` (`src/xxx.js:N`) | 字段引导 | LLM | tool 调用时 |
| `CLAUDE.md` / `AGENTS.md` | 操作契约 | Claude / 所有 Agent | session 启动 |
| `skill/SKILL.md` | 调用策略 | Claude | skill 激活 |
| `docs/workflow/*.md` | 哲学说明 | 人 + (可能)Agent | 主动阅读 |
| 系统级 default prompt | ... | LLM | 永远 |

### 7.3 Token 经济 (Cost Discipline)

| 设计 | 省 token 方式 | 数量级 |
|---|---|---|
| 分级检索 | summary → snippet → full content | 90%+ |
| 量化模型 | quantized embedding | 4× |
| BLOB 存储 | Float32Array vs JSON | 3× |
| ... | ... | ... |

### 7.4 LLM 自主性 vs 确定性 (Autonomy vs Determinism)

- **自主决策的部分**: (哪些动作交给 LLM 自己选?)
- **强制确定性的部分**: (哪些用 ADMIN_ONLY / hook / schema 锁死?)
- **取舍理由**: 为什么这么分?

### 7.5 多 Agent 协作模式 (Multi-Agent Coordination)

- **隔离层**: 哪一层每个 Agent 独立? (会话、token、context)
- **共享层**: 哪一层所有 Agent 共享? (DB、文档、状态)
- **一致性模型**: 最终一致 / 强一致 / 无保证?
- **冲突解决**: 怎么处理两个 Agent 同时改一个东西?

🧬 Phase 4: 凝结 Synthesis ⭐ v2.0 新增

目的:把零散观察凝结成可传递的概念。反向回答 Phase 0.4 的 mental model

## 8. 核心抽象 (Synthesis)

### 8.1 一句话核心抽象
("这个系统可以浓缩为:..." —— 必须能让没看过代码的人 30 秒理解项目本质)

### 8.2 3 个最关键设计决策 (骨架)
(如果只能保留 3 个设计决策,会是哪 3 个?其他决策都是为这 3 个服务的)

1. ...
2. ...
3. ...

### 8.3 作者最不希望被改坏的部分 (项目灵魂)
(从代码风格 / 注释口吻 / 文档反复强调中提炼)

### 8.4 与 Phase 0.4 mental model 的对照
(Phase 0 预设的 mental model 是否准确?有没有被 Phase 1-3 修正?)

🔥 Phase 5: 批判性视角 (Critical Lens) ⭐ v2.0 新增

强制规则:即使项目质量很高,必须写满 3 个最大毛病。否则文档会沦为营销文案。

## 9. 批判性视角 (Devil's Advocate)

### 9.1 如果做代码评审,我会挑这 3 个最大毛病

1. **[毛病 1]**: ...
   - 影响范围: ...
   - 修复成本: ...

2. **[毛病 2]**: ...
3. **[毛病 3]**: ...

### 9.2 这个项目的 hype 风险
(作者可能过度推销了什么?哪些 claim 实际不一定成立?)

### 9.3 二次开发的常见陷阱
(新人接手最容易踩的坑)

✅ Phase 6: 完整性校验

在交付前,strict 自检:

  • Phase 0 五项全部填了 (不是占位符)?
  • 每张表都有 WHY 列?
  • WHY 列不是空话 (有具体替代方案对比)?
  • 每张 mermaid 后有 ≥ 2 段文字?
  • AI 项目?如果是,Phase 3 (Behavior View) 完成了?
  • Decision View 的 6.3 (Roads Not Taken) 列了 ≥ 3 条?
  • Synthesis 8.1 (一句话核心抽象) 经过 30 秒理解测试?
  • Critical Lens 写满了 3 个毛病?
  • 所有事实/判断有显式标注 (📋 / 💭 / ❓ / ⚠️)?
  • 推测内容标注了 "💭 推测"?

如有任何 ❌,禁止交付,回头补齐。


4. 章节归属原则(必须遵守)

以下内容有明确章节归属,不要错位:

  • 逻辑视图:模块职责表、逻辑分层图、核心业务链路
  • 数据视图:ER 图、存储选型、数据一致性
  • 开发视图:技术栈矩阵、模块依赖图、目录结构、刻意没引入的依赖
  • 运行视图:时序图、并发/高可用表(带失败模式)
  • 物理视图:部署拓扑、容灾、水平扩展瓶颈
  • 决策视图 (新):ADR、取舍、Roads Not Taken、失败模式
  • 行为视图 (新):触发链、Prompt 位置图、Token 经济、自主性 vs 确定性、多 Agent 协作
  • 凝结 (新):核心抽象、3 个骨架决策、灵魂
  • 批判 (新):3 个毛病、hype 风险、二次开发陷阱

⚠️ 常见错误:

  • ER 图放在逻辑视图(应在数据视图)
  • "选 SQLite 是因为简单"放在开发视图(空话,应放决策视图并具体对比)
  • "为什么不用 LangChain"被忽略(应在决策视图 6.3 Roads Not Taken)

5. Mermaid 图美化规范(继承 v1.0)

  • 节点文字 ≤ 20 字,超长用 <br/><small> 换行
  • 使用 emoji / ASCII 装饰增加可读性
  • 同层节点用相同前缀
  • 流程图用 subgraph 分组
  • 时序图参与者命名清晰: DB["db.js<br/>SQLite"]
  • v2.0 新增:每张图后必须有 ≥ 2 段文字解读(事实 + 判断),否则砍掉

6. 输入规范

用户必须提供以下之一:

  • GitHub/GitLab URL: https://github.com/xxx/yyy
  • 本地路径: /path/to/repo

用户可选提供:

  • 读者意图 (v2.0 新增,影响详略):
    • 新人入职 → 完整 5-view + 简化版 Decision/Behavior
    • 决策评估 → 重 Decision View + Synthesis + Critical Lens
    • 学习偷师 → 重 Behavior View + Synthesis + 设计哲学
    • 故障排查 → 重 Runtime View + Failure Modes
    • 二次开发 → 重 Development + Behavior + Critical
  • 分析重点: "重点关注 X"
  • 输出格式: Markdown(默认)、JSON

如未指定读者意图,默认按"新人入职"做完整版


7. 工具使用策略

7.1 阶段-工具映射

Phase 主要工具 备注
Phase 0 (上下文) Read 软文档、Glob 找文档 不要急着读 src/,先把 *.md 全扫一遍
Phase 1 (五视图) Glob + Read 代码、Grep 关键调用 优先读 graphify-out 如果有
Phase 2 (决策) Grep 找注释里的 "WHY/because/避免" 配合 git log 看决策历史
Phase 3 (行为) Grep "IMPORTANT|MANDATORY" 找提示锚点 Grep "z\.describe|description:" 找 prompt
Phase 4 (凝结) 不用工具,纯思考 闭眼回答 mental model
Phase 5 (批判) Grep TODO/FIXME/HACK 找已知问题 看 issue tracker 如果可访问

7.2 关键命令模板

# Phase 0: 扫所有软文档
find . -maxdepth 4 -name "*.md" -not -path "*/node_modules/*" | head -30
find . -name "*.template" -o -name "CLAUDE.md" -o -name "AGENTS.md" -o -name "SKILL.md"

# Phase 3 (AI 项目): 找所有 prompt 字面值
grep -rn "IMPORTANT:\|MANDATORY\|Always\|Never" --include="*.js" --include="*.ts" --include="*.md" src/ docs/
grep -rn "\.describe(" --include="*.js" --include="*.ts" src/

# Phase 5: 找已知问题
grep -rn "TODO\|FIXME\|HACK\|XXX" --include="*.js" --include="*.ts" src/
grep -rn "// 暴力\|brute.force\|works for" --include="*.js" src/  # 找作者诚实承认的局限

7.3 graphify 优先

如果项目有 graphify-out/GRAPH_REPORT.md,优先读它再读 src。GRAPH_REPORT 已经做了 god nodes / communities / hyperedges 分析,可以大幅加速 Phase 1。


8. 输出规范

参考 example.md严格按章节顺序输出,缺章节视为分析不完整。


9. 交互与引导原则

  • 明确输入:未提供仓库路径必须追问
  • 读者意图前置 (v2.0):未指定读者意图,默认按"新人入职"做完整版,但在文档开头说明"读者意图未指定,按完整版交付"
  • 透明分析:说明当前在哪个 Phase、查看哪些文件
  • 合理推测 + 明确标注:不确定的标 "💭 推测",不要把推测当事实
  • 诚实承认未知:不知道就说不知道,绝不编造
  • 失败模式必谈:即使代码看不出失败模式,也要基于经验推测
  • 不堆图:每张图必须有 ≥ 2 段文字解读,否则砍掉这张图
  • 不水 WHY:WHY 列禁止空话,必须有具体替代方案对比
  • 不抹判断:作为"架构评审人",你有责任给出主观判断,不要装中立
  • 不省 Critical Lens:再好的项目也必须写 3 个毛病

Install via CLI
npx skills add https://github.com/wkevin/skills --skill wkevin-arch-decoder
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator