\chapter{附录2：Vibe Coding与工具链}

本附录介绍Vibe Coding的概念与实践，以及VsCode、Claude Code、Markdown/Obsidian、Git/GitHub等核心工具的使用方法。

\subsubsection{Vibe Coding的概念与工具}\label{vibe-codingux7684ux6982ux5ff5ux4e0eux5de5ux5177}

\paragraph{什么是Vibe Coding}

传统编程：\textbf{明确需求 → 设计算法 → 编写代码}

Vibe Coding：\textbf{模糊想法 → AI辅助 → 迭代完善}

Vibe Coding是一种以AI为核心的编程新模式：开发者用自然语言描述意图，AI生成代码，再通过迭代对话逐步完善。对于编程经验较少的设计专业读者而言，这种模式大幅降低了技术门槛------不需要记住语法细节，只需要清楚地表达''想要什么''。

\paragraph{工作流程}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  \textbf{描述意图}：用自然语言说明需求
\end{enumerate}

``帮我创建一个简单的图像分类模型''

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{1}
\item
  \textbf{AI生成代码}：自动生成完整代码框架
\item
  \textbf{运行测试}：发现问题或需要调整
\item
  \textbf{迭代优化}：通过对话逐步改进
\end{enumerate}

``把隐藏层改成128个神经元''

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{4}
\item
  \textbf{理解学习}：阅读AI生成的代码，理解实现原理
\end{enumerate}

\paragraph{实践技巧}

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
  >{\raggedright\arraybackslash}p{(\linewidth - 2\tabcolsep) * \real{0.1184}}
  >{\raggedright\arraybackslash}p{(\linewidth - 2\tabcolsep) * \real{0.3905}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
技巧
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
说明
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
明确需求 & 详细描述输入输出，提供上下文 \\
分步实现 & 复杂功能拆解为小任务，逐步完成 \\
验证结果 & 运行并检查AI生成的代码是否正确 \\
学习思考 & 不盲目接受，理解AI为什么这样写 \\
\end{longtable}
}

\paragraph{工具生态}

{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
  >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.1982}}
  >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.1475}}
  >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2970}}
  >{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2366}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
工具
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
形态
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
特点
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
适用场景
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
ChatGPT / Claude & 网页对话 & 代码生成与解释 & 学习咨询、快速原型 \\
GitHub Copilot & 编辑器插件 & 实时代码补全 & 日常开发 \\
Cursor & AI原生IDE & 对话式编程 & 快速原型、中型项目 \\
Claude Code & 终端CLI & 终端AI编程、多文件协作 & 项目级开发 \\
Replit Agent & 在线平台 & 端到端开发 & 小型项目、学习实验 \\
\end{longtable}
}

\subsubsection{Claude Code简介与使用}\label{claude-codeux7b80ux4ecbux4e0eux4f7fux7528}

\paragraph{什么是Claude Code}

Claude Code是Anthropic推出的命令行AI编程工具（CLI），能够直接在终端中理解项目上下文、读写文件、执行命令，实现端到端的AI辅助开发。它也提供VSCode扩展，可以在编辑器中无缝使用。

\paragraph{安装与配置}

\emph{\# 安装（需要 Node.js 18+）}\\
npm install -g @anthropic-ai/claude-code\\
\strut \\
\emph{\# 进入项目目录后启动}\\
cd my\_project\\
claude

启动后进入交互式对话界面，直接用自然语言描述需求即可。

\paragraph{核心使用方式}

\textbf{对话式开发}：用自然语言描述任务，Claude Code会自动读取相关文件、编写代码、执行测试。

\textgreater{} 帮我创建一个数据预处理的Python脚本，读取CSV文件并清洗缺失值

\textbf{文件操作}：Claude Code可以直接读取、创建和编辑项目中的文件，每次修改前会征得确认。

\textbf{命令执行}：可以请求Claude Code运行终端命令，如安装依赖、运行脚本等。

\paragraph{VSCode中的Claude Code}\label{vscodeux4e2dux7684claude-code}

Claude Code提供VSCode扩展，在编辑器中获得同样的AI辅助能力：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  在VSCode扩展商店搜索 ``Claude Code'' 并安装
\item
  打开项目文件夹
\item
  使用快捷键或侧边栏打开Claude面板
\item
  在编辑器中选中代码后，可以直接向Claude提问或请求修改
\end{enumerate}

\textbf{常用场景}： - 选中一段代码，请求''解释这段代码'' - 选中函数，请求''添加错误处理'' - 在Claude面板中输入''帮我写单元测试''

\paragraph{典型项目工作流}

\textbf{推荐项目结构}：

project/\\
├── data/ \# 数据文件\\
├── notebooks/ \# Jupyter笔记本\\
├── src/ \# 源代码\\
│ ├── models/ \# 模型定义\\
│ ├── utils/ \# 工具函数\\
│ └── train.py \# 训练脚本\\
├── requirements.txt \# 依赖列表\\
└── README.md \# 项目说明

\subparagraph{开发流程：}

\emph{\# 1. 创建环境}\\
conda create -n myproject python=3.10\\
conda activate myproject\\
\strut \\
\emph{\# 2. 安装依赖}\\
pip install -r requirements.txt\\
\strut \\
\emph{\# 3. 启动 Claude Code 进行AI辅助开发}\\
claude\\
\strut \\
\emph{\# 4. 保存环境}\\
conda env export \textgreater{} environment.yml

\subsubsection{Markdown语法及Obsidian工具}\label{markdownux8bedux6cd5ux53caobsidianux5de5ux5177}

\paragraph{Markdown简介}\label{markdownux7b80ux4ecb}

Markdown是一种轻量级标记语言，用纯文本格式编写文档，可以方便地转换为HTML、PDF等格式。它的语法简洁直观，是技术文档、笔记、学术写作的常用工具。

本书全部内容即使用Markdown编写。

\paragraph{基础语法}

\textbf{标题}：

\# 一级标题\\
\#\# 二级标题\\
\#\#\# 三级标题

唯一的一级标题：在一个文档中，通常只使用一个一级标题作为文档的主标题，这符合良好的文档结构规范。

\textbf{文本格式}：

*斜体* **加粗** ***粗斜体*** \textasciitilde\textasciitilde 删除线\textasciitilde\textasciitilde{} \textless{}\textbf{u}\textgreater 下划线\textless/\textbf{u}\textgreater{} \emph{\textbf{`行内代码`}} \textbf{==高亮文本==} \_\_\_分隔线

包含反引号的代码：当代码本身包含反引号时，使用两个反引号包围，使用 `code` 这样的格式

\textbf{列表}： 列表可以嵌套使用

- 无序列表项1

- 无序列表项2

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  有序列表项1
\end{enumerate}

\begin{verbatim}
2. 有序列表项2
\end{verbatim}

- {[} {]} 未完成的任务

\begin{verbatim}
- [x] 已完成的任务
\end{verbatim}

\textbf{链接与图片}：

{[}链接文字{]}(https://example.com) \textless!-\/- 行内链接 -\/-\textgreater{}\\
{[}链接文字{]}{[}1{]} \textless!-\/- 参考式链接 -\/-\textgreater{}\\
{[}跳转到基础{]}(\#基础) \textless!-\/- 锚点链接 -\/-\textgreater{}\\
\strut \\
{[}1{]}: https://www.example.com \textless!-\/- 参考链接定义 -\/-\textgreater{}\\
\strut \\
!{[}图片说明{]}(image.png) \textless!-\/- 基本图片 -\/-\textgreater{}\\
*图7.8 路杀动物* \textless!-\/- 图片下方用斜体作为图注 -\/-\textgreater{}\\
\strut \\
\textless!-\/- 图片居中对齐并指定宽度 -\/-\textgreater{}\\
\textless div align="center"\textgreater{}\\
\textless img src="image.png" alt="说明" style="width:10cm;"/\textgreater{}\\
\textless p\textgreater\textless em\textgreater 图片标题\textless/em\textgreater\textless/p\textgreater{}\\
\textless/div\textgreater{}

\textbf{代码块}：

\emph{\textbf{```python}}\\
print("Hello, World!")\\
\emph{\textbf{```}}

带行号的代码区块（需要渲染器支持，如 Docusaurus、VuePress）：

\emph{\textbf{```javascript linenums="1"}}\\
\emph{\textbf{function greet(name) \{}}\\
\emph{\textbf{console.log(`Hello, \$\{name\}!{\kern0pt}`);}}\\
\emph{\textbf{\}}}\\
\emph{\textbf{```}}

表格：

\textbar{} 列1 \textbar{} 列2 \textbar{} 列3 \textbar{}\\
\textbar-\/-\/-\/-\/-\textbar-\/-\/-\/-\/-\textbar-\/-\/-\/-\/-\textbar{}\\
\textbar{} 内容 \textbar{} 内容 \textbar{} 内容 \textbar{}

对齐方式：:-\/-\/- 左对齐，:-\/-\/-: 居中，-\/-\/-: 右对齐：

\textbar{} 左对齐 \textbar{} 居中对齐 \textbar{} 右对齐 \textbar{}\\
\textbar{} :-\/-\/-\/-\/- \textbar{} :-\/-\/-\/-\/-\/-: \textbar{} -\/-\/-\/-\/-: \textbar{}\\
\textbar{} 内容 \textbar{} 内容 \textbar{} 100 \textbar{}

\textbf{注记}： 输入后在Obsidian编辑器中会自动弹出添加注记模块

脚注{[}\^{}1{]}

\textbf{引用}：

\textgreater{} 这是一段引用文字\\
\strut \\
\textgreater{} 多级嵌套引用\\
\textgreater{} \textgreater{} 第二层\\
\textgreater{} \textgreater{} \textgreater{} 第三层\\
\strut \\
\textgreater{} **本章要点**\\
\textgreater{}\\
\textgreater{} - 了解项目背景和目标\\
\textgreater{} - 掌握核心功能特性

\subparagraph{图表绘制（Mermaid）：}

使用 ```mermaid 代码块，部分渲染器（GitHub、Typora、Obsidian）支持：

流程图：

\emph{\textbf{```mermaid}}

\emph{\textbf{graph LR}}

\begin{enumerate}
\def\labelenumi{\Alph{enumi}.}
\item
  \emph{\textbf{{[}开始{]} -\/-\textgreater{} B\{条件判断\}}}
\item
  \emph{\textbf{-\/-\textgreater\textbar 是\textbar{} C{[}执行操作1{]}}}
\item
  \emph{\textbf{-\/-\textgreater\textbar 否\textbar{} D{[}执行操作2{]}}}
\item
  \emph{\textbf{-\/-\textgreater{} E{[}结束{]}}}
\item
  \emph{\textbf{-\/-\textgreater{} E}}
\end{enumerate}

\emph{\textbf{```}}

时序图：

\emph{\textbf{```mermaid}}\\
\emph{\textbf{sequenceDiagram}}\\
\emph{\textbf{participant 用户}}\\
\emph{\textbf{participant 系统}}\\
\emph{\textbf{用户-\textgreater\textgreater 系统: 登录请求}}\\
\emph{\textbf{系统-\/-\textgreater\textgreater 用户: 返回结果}}\\
\emph{\textbf{```}}

甘特图：

\emph{\textbf{```mermaid}}\\
\emph{\textbf{gantt}}\\
\emph{\textbf{title 项目计划}}\\
\emph{\textbf{dateFormat YYYY-MM-DD}}\\
\emph{\textbf{section 设计}}\\
\emph{\textbf{需求分析 :done, 2024-01-01, 15d}}\\
\emph{\textbf{section 开发}}\\
\emph{\textbf{编码实现 :active, 2024-01-16, 30d}}\\
\emph{\textbf{```}}

饼图：

\emph{\textbf{```mermaid}}\\
\emph{\textbf{pie}}\\
\emph{\textbf{title 市场份额}}\\
\emph{\textbf{"Chrome" : 65}}\\
\emph{\textbf{"Safari" : 15}}\\
\emph{\textbf{"其他" : 20}}\\
\emph{\textbf{```}}

\textbf{数学公式}：

行内公式用 \$...\$，块级公式用 \$\$...\$\$，语法基于 LaTeX：

质能方程 \$E = mc\^{}2\$，其中 \$c\$ 为光速。

\[\int_{- \infty}^{\infty}e^{- x^{2}}dx = \sqrt{\pi}\]

多行对齐公式：

\[\begin{aligned}
f(x) & = ax^{2} + bx + c \\
f'(x) & = 2ax + b
\end{aligned}\]

矩阵：

\[\begin{pmatrix}
a & b \\
c & d
\end{pmatrix}\]

\paragraph{Obsidian：Markdown笔记工具}\label{obsidianmarkdownux7b14ux8bb0ux5de5ux5177}

\href{https://obsidian.md/}{Obsidian} 是一款基于Markdown的知识管理工具，适合构建个人知识库和笔记系统。

\textbf{核心特性}： - \textbf{本地存储}：所有笔记以Markdown文件保存在本地，数据完全自主 - \textbf{双向链接}：用 {[}{[}笔记名{]}{]} 在笔记之间建立链接，形成知识网络 - \textbf{图谱视图}：可视化笔记之间的关联关系 - \textbf{插件生态}：丰富的社区插件扩展功能（如日历、看板、模板等） - \textbf{实时预览}：编辑Markdown时实时渲染效果

\textbf{使用建议}： - 用Obsidian打开本教材的根目录，即可获得完整的阅读与编辑体验 - 建议安装''目录''插件，方便在长文档中快速导航 - 利用双向链接功能，将学习笔记与教材内容关联起来

\subsubsection{Git版本管理与GitHub协作}\label{gitux7248ux672cux7ba1ux7406ux4e0egithubux534fux4f5c}

\paragraph{为什么需要版本管理}

在项目开发过程中，文件会不断修改。版本管理工具可以： - 记录每一次修改的内容和时间 - 随时回退到之前的任意版本 - 多人协作时避免互相覆盖

Git是当前最流行的分布式版本管理系统。

\paragraph{Git基础操作}\label{gitux57faux7840ux64cdux4f5c}

\subparagraph{初始化仓库：}

\emph{\# 在项目目录中初始化Git}\\
cd my\_project\\
git init

\subparagraph{日常三步曲：}

\emph{\# 1. 查看当前修改状态}\\
git status\\
\strut \\
\emph{\# 2. 将修改添加到暂存区}\\
git add filename.md \emph{\# 添加指定文件}\\
git add . \emph{\# 添加所有修改}\\
\strut \\
\emph{\# 3. 提交修改（附带说明）}\\
git commit -m "添加了数据预处理功能"

\textbf{查看历史}：

\emph{\# 查看提交历史}\\
git log -\/-oneline\\
\strut \\
\emph{\# 查看某次提交的具体改动}\\
git show abc1234

\textbf{回退操作}：

\emph{\# 查看某文件的历史版本}\\
git log -\/- filename.md\\
\strut \\
\emph{\# 恢复某个文件到指定版本}\\
git checkout abc1234 -\/- filename.md

\paragraph{GitHub：云端协作平台}\label{githubux4e91ux7aefux534fux4f5cux5e73ux53f0}

\href{https://github.com/}{GitHub} 是基于Git的代码托管平台，提供云端存储和协作功能。

\textbf{核心概念}： - \textbf{仓库（Repository）}：项目的存储空间，包含所有文件和历史记录 - \textbf{远程同步}：将本地仓库推送到GitHub，或从GitHub拉取更新 - \textbf{协作}：多人通过分支和合并协同工作

\textbf{常用操作}：

\emph{\# 关联远程仓库}\\
git remote add origin https://github.com/username/project.git\\
\strut \\
\emph{\# 推送到远程}\\
git push -u origin main\\
\strut \\
\emph{\# 从远程拉取更新}\\
git pull

\textbf{本书的Git管理}：

本书内容即通过Git进行版本管理。每个章节的修改都有完整的提交记录，可以通过 git log 查看内容的演变历史。

\paragraph{推荐工作流}

对于设计专业的学习和研究项目，建议采用以下简化工作流：

编写/修改文档 → git add → git commit → git push

每次完成一个阶段性工作（如写完一节内容、完成一次实验）后提交一次，附上简洁的说明。这样既保留了完整的历史记录，也不会因为误操作而丢失工作成果。

