跳转至

第 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 讲的大屏上演示它。

课后任务

  1. 配置 OpenCode 环境,完成 git init 与首次提交,并完成第一次 AI 编程体验;
  2. 确定选题,完成检查点 1 材料(10 月 18 日周日 23:59 截止);
  3. 加入课程群,关注课程动态。

相关材料

下一讲:第 2 讲:提示词工程基础。