Loop 工程:Agent 的心跳是怎么跳的
你有没有用过全自动洗衣机?你把衣服扔进去,按一下启动键,然后……它就自己开始干了:进水 → 搅洗 → 排水 → 漂洗 → 脱水。如果水太浑浊,它会自动多漂洗一轮;如果衣服不平衡,它会暂停重新调整再继续脱水。整个过程中你什么都不用管——但它的每一步都有明确的判断逻辑:什么时候进入下一步、什么时候多做一轮、什么时候彻底停下来。AI Agent 的工作方式跟这台洗衣机惊人地相似。今天我们就来拆解 Agent 内部的这台”自动洗衣机”——Loop 工程。 这是「小白讲 AI」系列的第 15 篇。我们正在走一条进化线:第 5 篇讲了 Prompt Engineering(怎么说话),第 13 篇讲了 Context Engineering(管好信息),第 14 篇讲了 Harness 工程(搭好骨架)。今天是进化线的终点站——Agent 骨架搭好之后,它的”心跳”到底是怎么跳的? 一、进化线全景回顾在正式进入 Loop 工程之前,让我们站在山顶上回看一下走过的路: 篇目 概念 核心问题 一句话概括 第 5 篇 Prompt Engineering 怎么跟 AI 说一句话...
Harness 工程:给 Agent 装上"操作系统"
你见过赛车比赛吗?一个顶级赛车手,技术再好、反应再快,如果给他一辆没有刹车、没有仪表盘、油门踩到底就停不下来的车,你敢让他上赛道吗?大模型就像这个赛车手——它聪明、博学、反应快,但如果你不给它装上一套精心设计的”赛车系统”(刹车在哪、仪表盘显示什么、什么时候进站加油),它很可能跑着跑着就冲出赛道了。这个”赛车系统”,就是今天要聊的 Harness(工程骨架)。 这是「小白讲 AI」系列的第 14 篇。上一篇我们聊了 Context Engineering——怎么管好 AI 看到的信息。这一篇我们往上再走一层:不只是管信息,而是搭建一整套系统骨架,让 Agent 在可控的轨道上自主运行。 一、开场类比:赛车手需要一辆好车先来想一个问题:第 8 篇里我们说 Agent 能”自己干活”——它能调用工具、观察结果、决定下一步。但谁来决定它能调用哪些工具?谁来确保它不会无限循环下去?谁来在它做了一件危险操作之前拦住它? 答案不是模型自己。模型只管”想”和”说”。管住模型的那套系统,才是 Harness。 回到赛车的类比: 赛车手(大模型) 赛车系统(Harness) ...
Context Engineering:从"写好提示词"到"管好上下文"
你学会了一道菜的做法,照着菜谱一步步操作,味道确实不错。但如果有一天你要同时做一桌子菜呢?光靠菜谱远远不够——你得管理整个厨房:哪些食材要提前解冻、调料瓶怎么摆才顺手、砧板上现在该放什么、冰箱里还剩什么……这就是从”会做一道菜”到”管好一个厨房”的跨越。AI 领域也有同样的进化:从”写好一条提示词”(Prompt Engineering)到”管好整个上下文”(Context Engineering)。今天我们就来聊聊这个正在重新定义 AI 应用开发方式的关键概念。 这是「小白讲 AI」系列的第 13 篇。第 5 篇我们聊了 Prompt Engineering——怎么写好一条指令让 AI 听懂你的意思。这一篇我们往上走一层:不再只关注”怎么说”,而是关注”AI 看到什么”。 一、开场类比:从”写菜谱”到”管厨房”先来回忆一下第 5 篇的核心观点。Prompt Engineering 要解决的问题是:怎么跟 AI 好好说话。你学会了写清晰的指令、给出示例、分配角色、控制输出格式。这些技巧确实很有用,就像一份写得漂亮的菜谱,能让一道菜做得有模有样。 但问题来了——真实世界的 ...
现代 C++ 实战(10):Ranges 与函数式风格
传统 STL 算法要传 begin/end,中间步骤常要临时容器;C++20 Ranges 用「范围 + 视图管道」把数据处理写成 Unix 管道风格——filter | transform | take,且惰性求值,少分配、可读性高。 这一篇对应 demo:ref/cpp_demo/basics/ranges_demo/。 这是「现代 C++ 实战」系列的第 10 篇。建议先读 第 09 篇:C++20 格式化与编译期计算。 一、传统算法的局限12345678910std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};// 传统写法:多步 + 中间容器std::vector<int> evens;std::copy_if(nums.begin(), nums.end(), std::back_inserter(evens), [](int n) { return n % 2 == 0; });std::vector<in...
现代 C++ 实战(09):C++20 格式化与编译期计算
printf 类型不安全,iostream 又冗又慢;C++20 的 std::format 把 {fmt} 收进标准库,Python 风格占位符 + 编译期类型检查。同一时代还有 constexpr 进阶、consteval、std::span——把格式化与计算都推向「更安全、更编译期」。 这一篇对应三个 demo:format_demo、constexpr_demo、span_demo。 这是「现代 C++ 实战」系列的第 9 篇。建议先读 第 08 篇:错误处理策略。 一、格式化三时代 方式 类型安全 语法 性能 printf ❌ 格式与参数不匹配 → UB C 风格 %d 快 iostream ✅ cout << x << y 冗长 较慢 std::format ✅ "{} + {} = {}" 简洁 接近 printf C++23 再加 std::print / std::println——直接输出,不必先拼 string 再 cout。 编译器要求:GCC 13+ / Cla...
现代 C++ 实战(08):错误处理策略
C++ 没有统一的「错误处理方式」——return -1、throw、std::optional、std::expected 各有战场。选错方式要么性能吃亏,要么错误被静默忽略,要么 API 语义含糊。 这一篇用同一个「解析配置文件」场景,对比 四种主流错误处理策略,并给出选型指南。对应 demo:ref/cpp_demo/basics/error_handling_demo/。 这是「现代 C++ 实战」系列的第 8 篇。建议先读 第 07 篇:C++17 工具箱。 一、为什么错误处理值得单独讲?现代 C++ 项目里,错误处理往往比算法更影响可维护性: 调用方会不会忘记检查返回值? 失败时资源会不会泄漏(文件句柄、锁、内存)? API 语义是否清晰:「找不到」和「出错了」是一回事吗? demo 用解析 host=...、port=... 的配置文件贯穿全文——同一功能,四种写法。 二、C 风格错误码:return -1 + 输出参数12345678enum class CErrorCode { SUCCESS = 0, FILE_NOT_FOUND = -...
动手调用 AI API
理论讲了整整 11 篇,从神经网络到 Transformer,从训练到推理,我们已经把 AI 的核心概念过了一遍。但纸上谈兵终究不过瘾——今天这最后一篇,我们用 10 分钟写一个能跑的 AI 程序,让大模型真正为你干活。 1. 准备工作要调用 AI,你需要两样东西:一把”钥匙”和一个”工具箱”。 获取 API Key(钥匙) API Key 就像餐厅的会员卡——你出示它,服务员才知道该把账记在谁头上。目前主流的大模型服务商都提供 API 接入: Claude(Anthropic):前往 console.anthropic.com 注册账号,进入 API Keys 页面,点击”Create Key”即可生成。 OpenAI:前往 platform.openai.com 注册,在 API keys 页面创建。 拿到 Key 之后,把它存到环境变量里,千万不要写死在代码中(泄露了别人就能拿你的额度花钱): 12345# Mac / Linuxexport ANTHROPIC_API_KEY="sk-ant-xxxxx"# Windows PowerShell...
AI 安全与对齐:如何让 AI 不翻车
这是”小白讲 AI”系列的第 11 篇。前面几篇我们聊了 AI 怎么学习、怎么生成内容,但有一个更根本的问题一直没展开——AI 会不会”翻车”? 翻车了怎么办?怎么才能尽量不让它翻车?今天我们就来聊聊 AI 安全与对齐这个大话题。 一、开场类比:教一个超级聪明的外星人做人想象这样一个场景:有一天,一个智力远超人类的外星人降落在你家门口。它能在几秒钟内算出火箭轨道,能流利地说一百种语言,但它对人类社会的规则一无所知。 你让它去超市帮你买菜,它可能会觉得”效率最高的方式”是直接把菜拿走——因为没人告诉它要排队结账。你让它帮你写一封邮件,它可能会用极其直白甚至冒犯的语气,因为它不理解人类的社交礼仪。 AI 对齐(AI Alignment) 要解决的,就是类似的问题。AI 模型本质上就是一个”超级聪明但没有常识的外星人”。它拥有强大的能力,但如果我们不花大力气去”教”它什么该做、什么不该做,它就可能做出各种离谱的事情。 “对齐”这个词的意思是:让 AI 的目标、行为和价值观与人类的意图对齐,也就是保持一致。听起来简单,做起来却是当今 AI 领域最难的问题之一。 二、AI 会犯什么错?...
图像生成与 Diffusion Model
这是”小白讲 AI”系列的第 10 篇。今天我们来聊一个让无数人直呼”魔法”的技术——Diffusion Model(扩散模型)。它是 Stable Diffusion、DALL·E、Midjourney 等 AI 画图工具背后的核心引擎。你只需要输入一句话,几秒钟后就能得到一张精美的图片。这到底是怎么做到的?别担心,本文零公式,全程用生活类比来解释,保证小白也能看懂。 1. 开场类比:反向洗衣机想象你有一张漂亮的照片,然后你把它扔进了一台疯狂的洗衣机。洗衣机每转一圈,照片就变得更模糊、更混乱。转了上千圈之后,照片彻底变成了一团看不出任何内容的”雪花噪点”——就像老式电视没信号时的那种沙沙画面。 现在问题来了:有没有可能训练一个 AI,让它学会”反向开洗衣机”?也就是说,给它一张全是噪点的图,它能一步一步把噪点去掉,最终还原出一张清晰的照片? 答案是:可以!这就是 Diffusion Model 的核心思路。 整个过程分成两个阶段: 前向过程(加噪):把好好的图片一步步加噪声,搅成一团糊。 反向过程(去噪):训练 AI 学会一步步去掉噪声,从纯噪点变回图片——也就是”反向洗...
多模态 AI:不只是文字
这是”小白讲 AI”系列的第 09 篇。前面几篇我们聊的 AI,大多在跟文字打交道——你输入一段话,它回你一段话。但你有没有想过,人类从来不是只靠文字来理解世界的?你看到一张照片、听到一段旋律、闻到饭菜的香味,这些信息同时涌入大脑,拼凑出你对这个世界的完整感知。现在的 AI,也正在学习这件事。这就是今天要聊的主题——多模态 AI。 一、人类天生就是”多模态”的想象你走进一家咖啡店。你的眼睛看到菜单上的图片和文字,耳朵听到咖啡机的声响和店员的招呼,鼻子闻到咖啡豆的香气,手指感受到杯子的温度。你的大脑不会把这些信息拆开单独处理——它会自动把它们融合在一起,让你形成一个统一的判断:”嗯,这是一家不错的咖啡店。” 这就是”多模态”最通俗的解释:同时使用多种感官通道来获取和理解信息。 过去几年的 AI 更像一个”偏科生”:搞文字的只搞文字(比如 ChatGPT 早期版本),搞图片的只搞图片(比如图片分类器),搞语音的只搞语音(比如语音助手)。它们各自干得不错,但彼此之间互不相通。你没法把一张照片丢给文字 AI 问”这是什么”,也没法让图片 AI 根据你的一句话画出一幅画。 多模态 AI...















