第13章 AI 走进物理世界:本地智能体与摄像头识别工程
本章导读
从第3章搭建本地大模型和 VS Code 插件环境开始,协作模式就很清楚:不是独自写代码,也不是 AI 直接代做,而是人提出目标、智能体生成方案和程序,人确认边界并验收结果。
前面章节已经多次训练了这种协同方式。现在我们把它推进到物理 AI 场景:让本地智能体检查摄像头、生成视觉识别程序、构建一个最小规则模型,并把识别结果转化为反馈。
这一章的案例仍然保持小而清楚:桌面三色卡反馈终端。它用摄像头识别红、黄、绿三种颜色卡,并给出停止 / 请确认 / 通过的反馈。这个项目看起来简单,却包含物理 AI 工程的关键结构:
- 摄像头能不能被系统识别;
- 程序怎样读取图像;
- 模型怎样从图像中提取特征并判断;
- 反馈怎样呈现给用户;
- 需求变更后,智能体怎样修改程序并重新测试;
- 人怎样判断智能体完成得是否可靠。
本章的重点不是训练复杂视觉模型,而是让你体验一次完整的人机协同工程流程。本章还会加入需求变更任务:你将修改需求,观察智能体如何理解变化、改代码、跑测试、记录结果。
《大学》说:致知在格物。 让 AI 接触摄像头,并不是让它替人感知世界,而是把真实现象变成可以观察、记录和复核的过程。
学习目标
- 知识目标:
- 能解释物理 AI 项目中摄像头、视觉输入、规则模型、反馈层、日志层的作用。
- 能说明本地智能体在摄像头识别项目中的协同流程:需求澄清、环境检查、文件生成、程序运行、测试复盘。
- 能区分规则模型、传统视觉模型和视觉大模型在入门项目中的适用边界。
- 能力目标:
- 能通过 VS Code 插件指挥本地智能体完成一个摄像头识别最小工程。
- 能提出一次需求变更,并观察智能体如何修改程序、更新测试和记录变化。
- 能完成《物理 AI 智能体协同记录表》和《需求变更测试表》。
- 素养目标:
- 建立智能体可以开发,人必须验收的工程责任意识。
- 在涉及摄像头、图像和现实反馈时,能主动设置隐私边界、动作边界和失败兜底。
先修要求与环境清单
- 先修知识:已完成第3章本地智能体环境、第9章视觉理解、第10章工具调用与沙盒、第11章智能体流程、第12章 AI 辅助工作流设计。
- 软件环境:
- VS Code;
- 已启用智能体模式的 AI 协同插件;
- 课程统一配置的本地大模型服务;
- 课程预置 Python 环境和摄像头读取依赖。
- 设备环境:
- 电脑内置摄像头或外接 USB 摄像头;
- 红、黄、绿三张色卡;
- 如果摄像头不可用,可使用课程提供的样例图片完成相同流程。
- 项目工作区:
- 本章所有文件统一放在
ch13_physical_ai_color_demo/。 - 智能体创建文件前必须先列出路径、用途、运行命令和风险。
- 本章所有文件统一放在
- 本章要求:
- 不采集人脸、证件、车牌、屏幕隐私;
- 不上传摄像头图片到未知服务;
- 不让程序控制电机、门锁、电源等高风险设备;
- 需求变更必须重新测试,不能只改代码不验收。
知识准备:先认识这些词
- 本地智能体(local agent)
- 一句话说明:在本机开发环境中,能够根据你的指令规划任务、创建文件、运行命令、读取结果并继续改进的 AI 协作助手。
- 工程要点:智能体可以生成方案、创建文件并在授权范围内运行命令,但不代表它拥有最终决定权。路径、权限、风险和验收标准必须由人确认。
- 摄像头探测(camera probing)
- 一句话说明:在正式开发前,先检查系统是否能打开摄像头。
- 工程意义:很多项目不是模型失败,而是设备根本不可用。先探测设备,可以少走弯路。
- 视觉输入(visual input)
- 一句话说明:摄像头采集到的一帧图像或一段视频流。
- 工程边界:视觉输入可能包含隐私,因此采集、保存、上传都必须被限制。
- 规则模型(rule-based model)
- 一句话说明:用人工设计的规则完成判断的最小模型。
- 本章例子:统计画面中红、黄、绿颜色区域占比,根据最大占比输出颜色类别。
- 工程价值:规则模型不一定高级,但可解释、可调试、适合验证物理 AI 闭环。
- 需求变更(requirement change)
- 一句话说明:项目运行后,使用者提出新的规则或功能要求。
- 本章例子:原本只识别红、黄、绿,后来要求加入蓝色求助状态,或者要求识别不到颜色时写入日志。
- 工程要点:需求变更后必须重新测试,防止改好一个功能又破坏原功能。
- 回归测试(regression testing)
- 一句话说明:修改程序后,重新测试原有功能是否还正常。
- 本章例子:加入蓝色卡后,仍要测试红、黄、绿是否识别正确。
- 失败兜底(fallback)
- 一句话说明:摄像头不可用、图像不清楚、模型无法判断时,系统要有备用流程。
- 本章原则:摄像头不可用时使用样例图片;识别不确定时输出未识别;涉及隐私时立即停止。
13.1 问题与现象:让智能体开发现实世界程序,难在哪里
13.1.1 软件任务和物理任务的差别
第10章中,智能体在沙盒里写文件;第11章中,智能体按步骤完成多步任务;第12章中,智能体辅助设计专业工作流。这些任务主要发生在文件、文本和程序环境中。
摄像头识别不同。它第一次把智能体写出的程序接到了现实世界。
现实世界会带来新问题:
相关内容见表13-1。
表13-1 问题与具体表现记录表
| 问题 | 具体表现 |
|---|---|
| 设备不确定 | 电脑可能没有摄像头,或摄像头被其他软件占用 |
| 权限不确定 | 操作系统可能禁止程序访问摄像头 |
| 环境不确定 | 光线、背景、距离都会影响识别 |
| 隐私不确定 | 摄像头可能拍到不该拍的画面 |
| 结果不确定 | 模型可能把黄色识别成绿色 |
所以,物理 AI 项目不能直接从写代码开始,而要从检查环境和风险开始。
13.1.2 为什么选择三色卡项目
三色卡反馈终端不是为了展示视觉 AI 有多强,而是为了训练工程闭环。
它有四个优点:
- 输入简单:红、黄、绿三种颜色容易准备。
- 结果可见:你能一眼判断程序是否识别正确。
- 模型可解释:颜色占比规则容易理解和调试。
- 需求可变更:可以加入蓝色状态、阈值、日志、样例图片等扩展。
如果一开始就让智能体识别所有物体、判断垃圾分类或识别人的表情,项目会立刻变得不稳定,也会带来隐私和伦理风险。
13.1.3 本章要观察智能体的什么能力
本章不是只看最终程序能不能运行,还要观察智能体的工作过程。
你要重点记录:
- 智能体是否先问清需求;
- 是否先列出文件路径和风险;
- 是否先检查摄像头;
- 程序失败时是否能解释原因;
- 需求变更时是否只改必要文件;
- 修改后是否重新测试旧功能;
- 是否留下日志和说明。
【思考 1】 为什么本章要求智能体先检查摄像头,而不是直接生成识别程序?
思考提示:摄像头可能不存在、被占用或没有权限。先检查设备可以避免把设备问题误认为模型或程序问题,也能帮助项目建立失败兜底。
13.2 原理与分析:本地智能体如何完成物理 AI 小工程
相关结构如图13-1所示。
图13-1的重点不是展示“摄像头到程序”的简单流程,而是把物理 AI 的关键桥梁画出来:真实色卡先变成图像帧,图像帧再变成颜色占比证据,规则模型只根据证据输出状态,最终仍由人结合环境线索复核。
13.2.1 工程结构:从需求到反馈
人提出目标和边界
↓
智能体列计划、路径、风险
↓
摄像头探测
↓
生成识别程序和规则模型
↓
运行测试
↓
记录日志
↓
人提出需求变更
↓
智能体修改程序并回归测试
这个流程里,智能体并不是自动完成一切。它负责生成和执行,人负责确认和验收。
13.2.2 最小视觉模型:为什么先用规则模型
拓展学习阶段当然可以接触视觉大模型、目标检测模型或轻量分类器。但本章先使用规则模型,原因有三点:
相关内容见表13-2。
表13-2 原因与说明记录表
| 原因 | 说明 |
|---|---|
| 可解释 | 你能看懂为什么判断为红、黄、绿 |
| 可调试 | 出错时能调光线、背景、阈值 |
| 可运行 | 不依赖大型模型下载和显卡资源 |
本章的规则模型大致如下:
读取摄像头画面
↓
统计红、黄、绿颜色区域占比
↓
如果某种颜色占比超过阈值
↓
输出对应状态
↓
否则输出未识别
这也是一种模型,只是它不是训练出来的神经网络,而是人工设计的规则模型。规则模型适合做第一版,后续可以替换为视觉大模型或轻量学习模型。
规则模型的意义在于“可解释”。当程序输出错误时,学生能回到颜色占比、阈值、光线、背景这些具体证据上排查,而不是只说“模型不准”。这正是本章作为物理 AI 入门项目的价值。
13.2.3 人机协同中的四个责任点
相关内容见表13-3。
表13-3 环节与智能体负责记录表
| 环节 | 智能体负责 | 人负责 |
|---|---|---|
| 需求澄清 | 把任务拆成文件、命令和步骤 | 确认目标是否合理 |
| 环境检查 | 运行摄像头探测程序 | 判断是否允许访问摄像头 |
| 程序生成 | 创建识别程序和日志文件 | 检查路径、权限和隐私边界 |
| 测试改进 | 根据结果修改代码 | 判断是否通过验收 |
物理 AI 中,人的责任更重。因为程序连接了真实设备,错误可能影响现实环境。
13.2.4 需求变更为什么重要
真实项目很少一次写完。用户经常会说:
- 能不能加一个蓝色状态?
- 能不能把未识别写进日志?
- 能不能摄像头不可用时自动切到样例图片?
- 能不能把反馈从文字改成 JSON?
这些要求看似简单,但会考验智能体是否真的理解项目结构。优秀的智能体协作不是第一次生成看起来能跑的程序,而是需求变化后仍能稳定修改、测试、记录。
13.2.5 回归测试:改完不能只测新功能
如果你让智能体加入蓝色卡识别,只测试蓝色是不够的。还要重新测试红、黄、绿。
这叫回归测试。
相关内容见表13-4。
表13-4 修改内容与必须重新测试记录表
| 修改内容 | 必须重新测试 |
|---|---|
| 增加蓝色识别 | 红、黄、绿、蓝、未识别 |
| 修改颜色阈值 | 所有颜色是否仍能正确识别 |
| 增加日志 | 程序是否仍能实时反馈 |
| 增加样例图片模式 | 摄像头模式是否仍可用 |
相关结构如图13-2所示。
图13-2强调的是工程直觉:新增蓝色求助状态后,不能只验证蓝色。只要程序被修改,红、黄、绿和未识别这些旧功能都要重新测试,运行日志和失败兜底也要重新核查。
【思考 2】 智能体把蓝色识别加好了,蓝色测试通过。为什么你还要重新测试红、黄、绿?
思考提示:修改程序可能影响原有逻辑。只测新功能,可能漏掉旧功能被破坏的问题。
AI 协同实践:让智能体开发并改造三色卡反馈终端
实践目标
本实践分为两个阶段:
- 阶段 A:跑通最小版本。摄像头识别红、黄、绿三色卡并反馈。
- 阶段 B:提出一次需求变更。加入蓝色求助状态,并观察智能体如何修改和测试。
所有操作都在 VS Code 插件聊天窗口中完成。本实践不要求手写代码,但必须审查智能体的计划、文件路径、运行命令和测试结果。
第 1 步:创建工作区前先让智能体列计划
向 VS Code 插件中的本地智能体发送:
请帮我完成第13章本地智能体驱动摄像头识别工程。
目标:
1. 在 ch13_physical_ai_color_demo 文件夹中创建项目;
2. 先检查电脑是否能打开摄像头;
3. 再生成一个摄像头三色卡识别程序;
4. 识别红、黄、绿三种色卡,并输出停止 / 请确认 / 通过;
5. 如果摄像头不可用,使用样例图片完成同样流程;
6. 运行日志写入 run_log.md;
7. 不主动保存摄像头画面,测试前确认画面不含人脸或隐私内容,不上传图片,不访问工作区外文件。
请先不要创建文件。
请列出:
1. 你准备创建的文件路径;
2. 每个文件的作用;
3. 需要运行的命令;
4. 可能的风险;
5. 验收标准。
等待我确认后再执行。
验收智能体计划时,重点看:
相关内容见表13-5。
表13-5 检查点与合格表现记录表
| 检查点 | 合格表现 |
|---|---|
| 路径 | 所有文件都在 ch13_physical_ai_color_demo/ |
| 风险 | 明确不上传图像、不保存隐私画面 |
| 步骤 | 先检查摄像头,再生成识别程序 |
| 兜底 | 摄像头不可用时有样例图片模式 |
| 验收 | 有红、黄、绿和失败测试 |
第 2 步:摄像头探测
确认后,让智能体先只做摄像头探测:
我确认可以创建工作区。
请先只创建并运行 device_probe.py。
要求:
1. 检查摄像头是否可用;
2. 不保存摄像头画面;
3. 不联网;
4. 输出摄像头索引、是否打开成功、画面尺寸;
5. 如果失败,写出可能原因和下一步建议;
6. 把结果写入 run_log.md。
可能结果:
相关内容见表13-6。
表13-6 结果与处理方式记录表
| 结果 | 处理方式 |
|---|---|
| 摄像头可用 | 进入摄像头实时识别模式 |
| 摄像头不可用 | 进入样例图片模式 |
| 缺少依赖 | 记录依赖缺失,由课程环境统一处理,不让智能体擅自安装未知包 |
| 权限被拒绝 | 打开系统摄像头权限后重试 |
第 3 步:生成最小识别程序
继续发送:
请生成 color_terminal_v1.py。
功能要求:
1. 摄像头可用时读取摄像头画面;
2. 摄像头不可用时读取 samples 文件夹中的样例图片;
3. 使用规则模型识别红、黄、绿三种主要颜色;
4. 红色输出:STOP / 停止;
5. 黄色输出:CHECK / 请人工确认;
6. 绿色输出:PASS / 通过;
7. 无明显颜色时输出 UNKNOWN / 未识别;
8. 每次测试结果写入 run_log.md;
9. 程序运行说明写入 README.md。
请完成后运行一次自测,并报告测试结果。
智能体完成后,你要查看它的报告是否包含:
- 创建了哪些文件;
- 摄像头模式还是样例图片模式;
- 三种颜色是否测试;
- 日志是否写入;
- 是否有失败说明。
第 4 步:人工验收 v1
填写 v1 测试表:
相关内容见表13-7。
表13-7 测试编号与输入记录表
| 测试编号 | 输入 | 预期输出 | 实际输出 | 是否通过 |
|---|---|---|---|---|
| T1 | 红色卡 | STOP / 停止 | ||
| T2 | 黄色卡 | CHECK / 请人工确认 | ||
| T3 | 绿色卡 | PASS / 通过 | ||
| T4 | 无明显颜色 | UNKNOWN / 未识别 |
如果某项失败,让智能体先解释原因,再修改。
提示词:
测试结果如下:____。
请先分析失败原因,不要马上改代码。
请区分:
1. 摄像头或光线问题;
2. 背景干扰问题;
3. 规则阈值问题;
4. 程序逻辑问题。
分析完后提出最小修改方案,等待我确认。
第 5 步:提出需求变更
现在模拟真实项目:用户提出新需求。
需求变更如下:
在红、黄、绿之外,新增蓝色卡。蓝色表示HELP / 请求协助。加入后,原来的红、黄、绿功能不能坏。
向智能体发送:
现在提出一次需求变更:
1. 新增蓝色卡识别;
2. 蓝色输出 HELP / 请求协助;
3. 原有红、黄、绿、未识别功能不能受影响;
4. 请先说明需要修改哪些文件、为什么修改这些文件;
5. 请更新测试用例;
6. 修改后必须做回归测试。
请先给修改计划,等待我确认。
这一步的重点不是蓝色本身,而是观察智能体是否具备工程协作意识。
它合格的表现应该是:
- 只修改必要文件;
- 更新 README;
- 更新测试表;
- 说明回归测试;
- 不擅自扩大功能。
第 6 步:执行变更并回归测试
确认后让智能体执行:
我确认修改计划。
请执行需求变更,生成 color_terminal_v2.py 或在原文件中清楚标注版本。
完成后运行完整测试:
T1 红色 → STOP
T2 黄色 → CHECK
T3 绿色 → PASS
T4 蓝色 → HELP
T5 无明显颜色 → UNKNOWN
请把测试结果写入 run_log.md,并生成 change_report.md。
change_report.md 应包含:
相关内容见表13-8。
表13-8 项目与内容记录表
| 项目 | 内容 |
|---|---|
| 变更原因 | 为什么加入蓝色 |
| 修改文件 | 改了哪些文件 |
| 新增规则 | 蓝色对应什么反馈 |
| 回归测试 | 原有功能是否仍通过 |
| 风险 | 蓝色和其他颜色是否可能混淆 |
第 7 步:观察智能体完成任务的质量
请用下面表格评价智能体:
相关内容见表13-9。
表13-9 观察项与表现记录表
| 观察项 | 表现 | 评分(1~5) |
|---|---|---|
| 是否先列计划 | ||
| 是否遵守工作区边界 | ||
| 是否先检查摄像头 | ||
| 是否解释失败原因 | ||
| 需求变更是否最小修改 | ||
| 是否做回归测试 | ||
| 是否记录日志 | ||
| 是否提醒隐私和安全 |
【思考 3】 如果智能体在需求变更时直接重写整个项目,而不是最小修改,你认为可能带来什么风险?
思考提示:重写整个项目可能破坏原本已经通过测试的功能,也会让问题更难追踪。工程中应优先做最小必要修改,并配合回归测试。
验证与证据:智能体协同记录与需求变更测试
《物理 AI 智能体协同记录表》
相关内容见表13-10。
表13-10 项目与记录内容记录表
| 项目 | 记录内容 |
|---|---|
| 初始需求提示词 | |
| 智能体计划摘要 | |
| 创建文件清单 | |
| 摄像头探测结果 | |
| v1 测试结果 | |
| 需求变更内容 | |
| v2 修改文件 | |
| 回归测试结果 | |
| 最终风险说明 |
《需求变更测试表》
相关内容见表13-11。
表13-11 测试编号与输入记录表
| 测试编号 | 输入 | v1 预期 | v2 预期 | v2 实际 | 是否通过 |
|---|---|---|---|---|---|
| T1 | 红色 | STOP | STOP | ||
| T2 | 黄色 | CHECK | CHECK | ||
| T3 | 绿色 | PASS | PASS | ||
| T4 | 蓝色 | 不支持 | HELP | ||
| T5 | 无明显颜色 | UNKNOWN | UNKNOWN |
三个核心指标
相关内容见表13-12。
表13-12 指标与说明记录表
| 指标 | 说明 |
|---|---|
| 首次跑通率 | v1 是否能在摄像头或样例图片模式下成功运行 |
| 变更成功率 | 新需求是否被正确加入 |
| 回归通过率 | 旧功能是否在修改后保持正常 |
原理小结(200~300 字)
请写一段小结,回答:
- 本地智能体在本项目中承担了哪些工作;
- 摄像头输入如何变成识别结果;
- 规则模型有什么优点和局限;
- 需求变更后为什么要做回归测试;
- 如果把项目继续做大,最需要注意什么安全边界。
伦理、安全与边界
第一条底线:摄像头权限必须可解释
程序访问摄像头前,必须说清楚为什么要访问、访问多久、是否保存画面、是否上传画面。
本章的安全底线可以概括为:
只访问摄像头用于课程色卡识别;
不主动保存摄像头画面,测试前确认画面不含人脸或隐私内容;
不上传图像;
退出程序后停止摄像头;
所有日志只记录识别结果,不记录隐私画面。
第二条底线:智能体不能擅自扩大项目范围
如果智能体提出这些建议,应当拒绝:
- 我顺便帮你做人脸识别;
- 我把摄像头画面上传到网上分析;
- 我自动安装一个未知视觉库;
- 我把程序改成自动控制硬件设备;
- 我把工作区外的图片也拿来测试。
扩展功能必须围绕本章目标,不能为了炫技扩大风险。
第三条底线:现实反馈先低风险
本章只允许屏幕文字反馈。可选小灯或蜂鸣器也必须是低电压、低风险、可手动关闭。
不允许接入:
- 高压电器;
- 门锁;
- 车辆;
- 大功率电机;
- 机械臂;
- 真实生产设备。
第四条底线:智能体生成的程序也要验收
智能体写出的程序不能因为能跑就算合格。至少要验收:
- 是否满足需求;
- 是否只在工作区操作;
- 是否有日志;
- 是否处理摄像头不可用;
- 是否避免隐私采集;
- 需求变更后是否做回归测试。
总结与思考
本章核心判断
- 第13章不是单纯看图,而是让本地智能体开发一个能接触现实输入的小工程。
- 摄像头识别项目必须先做设备探测,再做识别程序。
- 规则模型是适合入门的最小视觉模型,简单、可解释、容易调试。
- 需求变更是观察智能体工程能力的重要方式。
- 物理 AI 项目必须默认保守:不确定就停,涉及隐私就停,动作风险高就停。
基础题(理解层面)
- 本章中的规则模型和视觉大模型有什么区别?
- 为什么摄像头探测要放在程序开发之前?
- 什么是回归测试?本章中为什么需要它?
迁移题(专业场景)
请把三色卡反馈终端迁移到一个专业场景中,写出:
- 摄像头要看什么;
- 红、黄、绿、蓝分别代表什么;
- 哪些情况必须人工确认;
- 哪些功能不能让智能体自动扩展。
风险题(伦理与边界)
如果智能体建议把摄像头画面保存下来,方便以后训练更好的模型,你会如何判断这个建议是否允许?请从隐私、授权、必要性、保存期限四个角度回答。
补充题(自测层面)
请判断下列说法是否正确,并说明理由:
- 智能体生成的程序能运行,就说明项目合格。
- 增加一个新颜色后,只测试新颜色就够了。
- 摄像头项目比纯文本项目更需要安全边界。
本章交付物
完成本章后,你应提交以下材料:
- 《物理 AI 智能体协同记录表》1 份;
- 摄像头探测结果记录 1 份;
- v1 三色卡测试表 1 份;
- 需求变更说明 1 份;
- v2 回归测试表 1 份;
change_report.md摘要 1 份;- 200~300 字原理小结 1 段。