---
name: code-walkthrough
version: 1.0.0
category: 开发编程
trigger_words:
tags:
platform: coze
source: DeepseekModel
source_url: https://deepseekmodel.com/skill?id=312362115-claude-skills-code-walkthrough-skill-md
---

name code-walkthrough version 1.0.0 last_updated 2026-04-08T00:00:00.000Z repository https://github.com/312362115/claude description 代码导读技能：帮助快速理解不熟悉的项目或模块，建立心智模型。 从全局架构到核心流程再到关键设计决策，分层递进地梳理代码。 不是简单地读文件列目录，而是提炼出"这段代码在做什么、为什么这么做、和其他部分怎么连接"。 触发词：帮我梳理一下、这块代码怎么运作的、导读、接手项目、看看这个模块、代码走读、walkthrough。 触发场景：接手新项目、进入不熟悉的模块、重构前理解现状、Code Review 需要理解上下文。 即使用户没有说"导读"，只要意图是"理解一段不熟悉的代码"，都应触发此技能。 代码导读（Code Walkthrough） 读代码和读书一样——先看目录了解结构，再看核心章节理解逻辑，最后看细节。 不是逐行翻译代码，而是帮读者建立"这个系统怎么运转"的心智模型。 第一步：确定导读范围和深度 导读请求 │ ├─ 整个项目？ │ └─ 全局导读：项目架构 → 模块职责 → 核心流程 → 关键决策 │ ├─ 某个模块/目录？ │ └─ 模块导读：模块职责 → 内部结构 → 核心逻辑 → 对外接口 │ └─ 某个具体功能/流程？ └─ 流程导读：入口 → 数据流 → 关键分支 → 输出 用 AskUserQuestion 确认： 导读目标 ：看什么？整个项目、某个模块、还是某个功能？ 导读目的 ：为什么要看？接手维护、准备改动、还是纯了解？ 已有认知 ：对这块代码已经了解多少？（避免输出用户已知的信息） 第二步：全局扫描 不管导读什么范围，先花 2-3 个工具调用建立全局感知： 2.1 项目全局（如果是项目/模块导读） 1. 读项目根目录结构（ls / Glob） 2. 读配置文件（package.json / pyproject.toml / tsconfig.json） 3. 读 README / CLAUDE.md / docs/（如果有） 4. 检查 git log 最近 20 条提交（了解活跃区域） 提取关键信息： 技术栈 ：语言、框架、主要依赖 项目类型 ：前端应用 / 后端服务 / 全栈 / CLI 工具 / 库 目录组织 ：按功能分还是按类型分？有没有约定 2.2 目标区域 定位到导读目标后，了解： 入口文件 ：这个模块/功能从哪里开始？ 文件清单 ：涉及哪些文件？各自大概多少行？ 依赖关系 ：依赖了什么外部模块？被谁依赖？ 第三步：分层梳理 按照 架构 → 流程 → 细节 的顺序递进，每一层解决不同的问题。 Layer 1：架构层 — "系统由什么组成" 回答： 这个系统/模块的整体结构是什么？各部分各司什么职？ 输出格式： ## 架构概览 ### 模块组成 - `src/api/` — API 路由层，接收请求、参数校验、调用 service - `src/services/` — 业务逻辑层，核心计算和编排 - `src/models/` — 数据模型，定义实体和数据库交互 - `src/utils/` — 工具函数，无业务语义 ### 依赖关系 api → services → models ↓ utils ### 数据流向 请求 → 路由 → 中间件（认证/校验）→ service → model → 数据库 ↓ 响应 ← 路由 ← ─────────────────────── service ← model Layer 2：流程层 — "核心功能怎么运转" 回答： 一个请求/操作从头到尾经过了哪些步骤？ 选择 1-3 个 最核心的流程 做详细走读： ## 核心流程 ### 流程 1：用户登录 1. `POST /api/login` → `src/api/auth.ts:handleLogin()` - 参数校验：email + password 2. → `src/services/auth.ts:login()` - 查询用户： `UserModel.findByEmail(email)` - 验证密码： `bcrypt.compare(password, user.hash)` - 生成 token： `jwt.sign({ userId: user.id }, secret, { expiresIn: '7d' })` 3. → 返回： `{ token, user: { id, name, email } }` 关键点： - token 过期时间 7 天，写死在代码里（可能需要改为配置） - 密码验证用 bcrypt，安全 - 没有登录失败次数限制 Layer 3：细节层 — "关键设计决策和隐含知识" 回答： 为什么这么写？有什么不明显的约定或陷阱？ ## 关键设计决策 ### 决策 1：为什么用 Redis 做 session 而不是 JWT 无状态？ - 见 `docs/specs/2026-03-23-auth-session-design.md` （如果有文档） - 或从代码推断：支持主动注销（删 Redis key 即失效） ### 决策 2：为什么 UserModel 同时用了 ORM 和 raw SQL？ - ORM 用于常规 CRUD - raw SQL 用于复杂聚合查询（ `src/models/user.ts:237` 的注释说明了原因） ## 隐含约定 - 所有 API 响应统一包装为 `{ code, data, message }` 格式（见 `src/middleware/response.ts` ） - 错误处理走全局 error handler（ `src/middleware/error.ts` ），不需要每个路由单独 catch - 环境变量从 `.env` 加载，必填项在 `src/config.ts` 中校验 ## 注意事项 / 潜在风险 - `src/services/order.ts:89` — 库存扣减没有并发保护 - `src/utils/cache.ts` — 缓存 key 没有 namespace，多服务共用可能冲突 第四步：输出导读文档 输出格式 根据导读深度选择输出方式： 深度 输出 快速了解（聊天中回答） 直接在对话中输出，不存文件 完整导读（需要沉淀） 写入 docs/guides/<模块名>-walkthrough.md 完整导读文档结构 # 代码导读：<模块/项目名> > 一句话概括这个模块/项目做什么 ## 技术栈 - 语言/框架/主要依赖 ## 架构概览 （Layer 1 的输出） ## 核心流程 （Layer 2 的输出，1-3 个关键流程） ## 关键设计决策 （Layer 3 的输出） ## 隐含约定 （不写在代码注释里但需要知道的规则） ## 注意事项 （潜在风险、技术债、容易踩的坑） ## 相关文档 - 指向 docs/ 下的相关 spec、plan、decision 导读准则 不逐行翻译 ：读者是开发者，能读代码。导读要提炼的是"代码没直接告诉你的东西"——架构意图、设计理由、隐含约定 先宏观后微观 ：先给全景地图，再放大关键区域。不要一上来就钻进某个函数 关注连接 ：模块之间怎么交互？数据怎么流转？比单个模块内部逻辑更重要 标注位置 ：提到具体逻辑时标注 文件:行号 ，方便读者跳转查看 诚实说不知道 ：如果某个设计决策从代码看不出原因，说"从代码推断可能是因为 X，但不确定"，不要编理由 按读者水平调整 ：用户说"我是 Go 高手但不懂 React"，就用 Go 的类比解释 React 的概念 与其他 skill 的关系 接手新项目 → code-walkthrough（建立心智模型） ↓ 准备改动 → refactoring（影响分析可以复用导读的架构理解） ↓ 改动前评估 → dependency-map（导读关注"是什么"，依赖分析关注"改了影响谁"） code-walkthrough vs dependency-map 的区别 ： code-walkthrough：理解代码，回答"这是什么、怎么运转、为什么这么写" dependency-map：评估影响，回答"改这里会动到哪里" 通常先 walkthrough 理解，再 dependency-map 评估影响