12 Factor 方法论合并知识图谱 / 分组目录 / 辅助工具集 / Walkthroughgen 教程生成器

Walkthroughgen 教程生成器

工具进阶工具G-TOOLS · 辅助工具集

What · 是什么

从 YAML 配置生成分步教程/文档与工作目录,跟踪增量 diff
从单个 walkthrough.yaml 生成教程、README、文档的 CLI 工具,命令为 walkthroughgen generate <yaml>(src/cli.ts)
多 targets:markdown 输出(含 diff 代码块、可折叠段落、语法高亮)、folders 逐节工作目录(by-section + final 最终工程)、ipynb(Python 版扩展出 notebook)
增量变更:以虚拟文件状态跟踪每节文件,同一文件被覆盖时用 diff 库输出最小变更(formatMinimalDiff),无实际改动则跳过
step 类型覆盖:file 复制、dir 建目录、command 执行(incremental 标记仅作用于 folders 构建)、results 期望输出、run_main(Python 版)
onChange.diff / onChange.cp / newFiles.cat / newFiles.cp 控制展示方式(src/cli.ts targets 配置)
folders target 为每节建独立工作目录并生成 README.md,skip 数组排除 cleanup 等纯维护节,final.dirName 累积最终工程(src/cli.ts)
Python 版 walkthroughgen_py.py 把 yaml 转 Jupyter notebook,内嵌 Colab BAML 安装、userdata 处理与 get_baml_client 绕行(CLAUDE.md)
jest 测试覆盖 CLI 基础行为(--help/缺参/不存在的 yaml 等)与 e2e 生成流程(test/e2e/test-e2e.ts)

Why · 为什么

原理 · Principle

手工维护教程时 markdown、示例目录、最终工程三处极易失同步,单一 YAML 源驱动全部输出

自动生成 diff 与 cp 命令,让读者精确复现每一步文件变更

虚拟文件状态避免重复展示相同内容,仅呈现真正变化

incremental 标记区分「文档里展示命令」与「构建工作目录时真实执行命令」两种语义

双语言扩展(TS markdown+folders / Python ipynb)验证方法论跨栈可复现

每节一个可运行检查点,降低入门门槛

How · 怎么做

walkthrough/ 目录按 00-、01- 前缀存放每步快照文件,yaml 的 file 步骤声明 src/dest(examples/typescript)
targets 配置输出:onChange.diff 对已存在文件打印最小 diff,newFiles.cat/cp 控制新文件展示方式(src/cli.ts)
folders target:逐节复制工作状态到独立目录、生成节 README,final 目录累积全部步骤结果(src/cli.ts)
command+incremental:true 才在 applyStepsToWorkingDir 中执行,否则仅展示(src/cli.ts applyStepsToWorkingDir)
formatMinimalDiff 用 Diff.createPatch 加 context:2 滤掉无实际变化行对,输出干净 diff 块(src/cli.ts)
Python 版由 walkthroughgen_py.py 将 yaml 转为 nbformat notebook,注入 baml-cli generate 与 Colab secrets 辅助单元
run_main 步骤支持 regenerate_baml:true 标记,BAML 变更后自动重新生成(2025-07-16 walkthrough.yaml)
生成 markdown 时对既有文件先 diff 后决定展示「show file」还是「skip this step」折叠块(src/cli.ts)

案例 · Cases

代表性案例
官方 2025-05-17 TS 工作坊:walkthrough.yaml 驱动生成 build/walkthrough.md + build/sections + build/final 完整工程
2025-07-16 Python 工作坊:targets 指向 ipynb,生成 workshop_final.ipynb Colab 兼容 notebook
examples/typescript 最小示例:yaml + walkthrough/00-02 快照生成 TypeScript CLI 入门教程
examples/walkthroughgen 自举示例:用 walkthroughgen 教如何用 walkthroughgen

反模式 · Anti-patterns

相关边

实践资源 · 源码引用