第 1 讲:AI 编程概述与工具链
上课时间:2026 年 10 月 13 日(第 5 周,周二 19:20–20:55)
所属板块:基础方法
本讲先从软件开发方式的变化讲起,说明 AI 编程的能力边界与基本原理,介绍主流工具链与课程使用的 OpenCode,并完成第一次 AI 辅助开发。课后需要完成环境配置与检查点 1:选题与启动。
本讲目标
学完这一讲,应该能说清从手工编码到人机协同的变化,知道 LLM 为什么会出错,了解 AI 编程工具的三个阶段和各自的适用场景。课后需要完成 OpenCode 环境配置,并学会 Git 的五个常用命令。AI 使用规范和学术诚信要求也会在这一讲交代。
一、从手工编码到人机协同
| 阶段 | 特征 |
|---|---|
| 手工编码 | 一切靠自己写 |
| 搜索 + 复制粘贴 | Stack Overflow 时代 |
| AI 生成 | 人机协同时代 |
开发时间分配随之变化:写代码的占比下降,评审、规划与验证的占比上升。只追功能实现、临时解决问题,容易留下“死代码”(AI slop)。规范比写代码更重要。
开发者角色从编码者转向 Agent 管理者,关键技能包括:
- 委托:会布置任务、会验收结果;
- 规划:任务分解与架构把握;
- 上下文工程:把正确的信息以正确的方式交给 AI;
- 评审:读代码、判断质量的能力不可外包。
课程的基本立场是:AI 是能力放大器,不是替代品。读代码、调试、验证这些基本功仍然重要,而且更重要。AI 说“完成”,不代表真的完成,最后还是要由人判断。
二、LLM 的工作原理
下一个词元的概率预测
LLM 的工作方式是自回归生成:逐个词元预测“下一个最可能出现的词”。例如输入 def sort_list(,模型会逐词元续写成一个完整函数。
模型的代码能力来自训练语料中的代码,它由此习得语法、惯用法与常见模式。
所以模型的输出是“最可能的”,不是“最正确的”。审查、测试和验证因此不能省。
训练三阶段
| 阶段 | 做什么 | 学到什么 |
|---|---|---|
| ① 预训练 | 海量文本与代码的下一词元预测 | 语言、知识、代码模式 |
| ② 监督微调(SFT) | 指令—回答对数据训练 | “听指令做事” |
| ③ 偏好对齐(RLHF) | 基于人类反馈优化偏好 | “做得让人满意” |
三阶段解释了模型为什么“听话”,但仍会出错。
两个关键局限
- 上下文窗口:模型一次能“看见”的文本长度有限,由此引出第 2 讲的上下文工程;
- 知识截止:训练数据有时间边界,模型对新框架、新版本可能“无知”;
- 幻觉:不确定时仍会“自信地编造”,由此引出第 3 讲的验证意识。
三、AI 编程工具演进三阶段
| 阶段 | 代表 | 效率提升 | 形态 |
|---|---|---|---|
| ① 代码补全 | GitHub Copilot | 约 10% | 本地同步、逐行补全 |
| ② IDE 自动化 | Cursor / Windsurf | 约 20% | 本地同步、多文件编辑 |
| ③ AI 软件工程师 | Devin / Claude Code / OpenCode | 数倍 | 可异步、自主规划执行 |
三个阶段的主要差别,是任务粒度和上下文范围在变大。
- 阶段一:代码补全。 编辑器内逐行或逐块补全,人始终主导;上下文有限,不能跨文件大改,也不了解项目全局。
- 阶段二:IDE 自动化。 具备仓库级上下文、Agent 模式、多文件编辑与终端命令执行能力;仍然是同步协作,人盯着 AI 干活。
- 阶段三:AI 软件工程师 / Agent。 工作循环为“规划 → 执行(读写文件、运行命令)→ 观察结果 → 修正”,可以异步委托后台任务、定期验收,但可控性、验证成本与长任务漂移仍是挑战。
工具地图与选型
| 类别 | 代表工具 | 主要用途 |
|---|---|---|
| 对话类 | ChatGPT / Claude / GLM 等 | 问答、探索、学习 |
| IDE 类 | GitHub Copilot / Cursor / Windsurf | 编辑器内协同 |
| 终端 Agent | OpenCode / Claude Code / Aider | 项目级委托开发 |
| 应用构建类 | v0 / Lovable / Replit / Bolt | 从描述生成应用 |
选型时可以看任务复杂度、需要多少上下文,以及对结果可控性的要求。
四、课程工具:OpenCode
课程以 OpenCode(开源终端 AI 编程 Agent)为主:
- 开源、免费使用;
- 支持多种模型后端:GLM / Claude / OpenAI 等;
- 终端 TUI 与图形化界面 GUI 交互,程序员友好;
- 原生支持
AGENTS.md(第 5 讲); - 贯穿课程全部演示与项目实践。
辅助工具可用 Chat 类(GLM / Claude 网页版)做快速问答与探索;有经验的同学也可以自选 Cursor、Claude Code 等,项目不限制工具。
请按照 OpenCode v2 环境配置完成安装,接入清华专属算力券服务提供的模型,并验证环境可用。
五、版本控制:够用即可
从检查点 2 起需要提交“代码仓库(含版本历史)”,版本历史是过程记录评分的重要依据。本讲掌握五个常用命令即可:
git init
git status
git add .
git commit -m "实现成绩导入"
git log --oneline
需要养成的习惯:
- 小步提交,提交信息一行说清;
- 存档点思维:让 AI 大改前先确认有稳定提交,改坏了可以回退;
- 阶段提交:骨架能跑、首页能开、接口能响应,每个可运行阶段提交一次;
.gitignore:密钥、venv/、node_modules/等环境配置不入库。
更完整的操作说明见 Git 使用基础。扩展阅读:最流行的代码托管网站 GitHub,以及清华自部署的 GitLab。
六、课堂演示:同一任务,两种工具
任务:写一个命令行待办事项工具(增、删、列、完成)。
| 步骤 | Chat 网页版(粘贴式) | OpenCode(项目式) |
|---|---|---|
| 流程 | 复制需求 → 贴回代码 → 手动保存 → 运行报错再贴 | 项目目录启动 → 委托任务 → 自动创建文件、运行、修错 |
| 人的角色 | 搬运工 + 集成者 | 任务委托者 + 结果验收者 |
对比要点:上下文范围、迭代速度、人的角色差异。
七、使用规范与学术诚信
- 记录:项目全程保留 AI 交互记录,这是检查点与最终提交的硬性要求;
- 审查:不提交未读过的代码,理解每一处关键改动;
- 安全:密钥与敏感信息不得进入提示;AI 引入的依赖需要审查;
- 合规:注意开源许可;引用 AI 生成内容如实说明。
对代码质量负责的始终是你,不是 AI。
八、课程项目与检查点 1
每位同学独立完成一个小型但有始有终的软件项目,全程使用 AI 辅助,并保留完整过程记录(AI 交互 + 版本历史)。项目选题、类别与评分要求见课程大作业。
| 时间 | 事项 |
|---|---|
| 第 1 讲(10 月 13 日) | 发布选题方向,布置检查点 1 |
| 第 2 讲(10 月 20 日) | 检查点 1 课堂反馈 |
| 第 3–6 讲 | 按检查点推进 |
| 11 月 22 日 | 同伴互评截止 |
| 11 月 29 日 | 根据同伴互评反馈修改后提交最终版 |
| 第 8 讲(12 月 1 日) | 课堂展示与总结,展示项目由教学团队依据最终提交质量选定 |
检查点 1:选题与启动
截止时间:2026 年 10 月 18 日(周日)23:59,提交方式见网络学堂。
- 项目简介与目标:解决什么问题、给谁用、核心功能;
- 技术栈与 AI 工具选择:语言、框架、计划使用的 AI 工具及理由;
- 环境配置与首次体验记录:OpenCode 配置过程 + 第一次 AI 编程体验(任务、过程、感受);
- 代码仓库:已建立(
git init)并完成首次提交。
任务分解与计划不在本检查点。第 5 讲讲授方法论后,随检查点 4 提交。详细要求见检查点 1:选题与启动。
选题方向建议
命令行工具、小游戏、数据处理与可视化、爬虫 + 分析、效率工具、学习辅助工具等均可。
- 规模建议:核心功能 2–3 天可完成,留出迭代与打磨时间;
- 避坑:避免依赖外部服务的项目(API 配额 / 网络),避免无代码量的内容型项目;
- 起步建议:从小的真实问题开始。小项目本身也是在训练你驾驭 AI 的能力;
- 判断标准:你是否愿意在第 8 讲的大屏上演示它。
课后任务
- 配置 OpenCode 环境,完成
git init与首次提交,并完成第一次 AI 编程体验; - 确定选题,完成检查点 1 材料(10 月 18 日周日 23:59 截止);
- 加入课程群,关注课程动态。
相关材料
下一讲:第 2 讲:提示词工程基础。