01 欢迎来到未来

视频地址

AI总结

模型:ChatGPT-5.6 Sol High

Agent 带来的变化,不只是“写代码更快”,而是让软件工程重新把重点放回“如何保证事情最终被做对”上。 整节内容逻辑链:LLM 提升单点任务能力 → Agent 延长反馈回路、持有状态、操作外部世界 → 一个人开始能够承担过去一个团队的工作 → 但系统工程的复杂度并没有消失 → 因此软件工程反而变得更重要。

软件工程研究的:”怎样让工程不失败“

  • AI可以加速实现,却不会自动暴露未知、分配责任或验证结果
  • 工程的目标是让系统在约束、变化和协作中继续活着

LLM和Agent

LLM:一个概率分布Pr [token|context]

  • 反馈回路越来越长
  • Context可以成为可写的状态

使用Agents

从”回答问题“到”把事情推进“

  • 最小原则:现在开始用、随时询问
  • 想象力限制了Agent能够完成的任务
  • 先用好、再理解原理 —— 颠覆了计算机中”学习曲线太陡“的问题,学习曲线从”记住每一步“变成”判断结果是否正确“

Agent拥有完整的生态系统 -> Browset Use/Computer Use,应当用插件把浏览器管控起来。

  • 让Agent探索页面、理解流程、完成一次任务 -> 让Agent 沉淀成脚本。
  • 标准解法:信息源 -> 信息处理 -> 操作。
  • 工作流自举:观察操作 -> 发现重复模式 -> 生成自动化 -> 回放验证 -> 人确认 -> 收集新异常

未来已来,Agent未稳

OpenClaw/Hermes预见了这样的未来(全自动工作流),但体验还不够好。Agent可以造出任何东西,包括视频、论文、东西(VibeFab)。

  • Q:那么直接让AI造航母?
  • A:事实上产品是系统性的工程,任何一个环节都不能缺失、也不能组织不当。

Prompt的差异

  • 跑出来,不等于做成:可能可以完成任务,但没办法维护(没有好的软件架构)
    • Intent Space / 意图:需求的提出者也不确定100%要什么(”帮我做一个淘宝“?甲方)
    • Spec Space / 发出的指令:从Intent到Spec,已经曲解很多
    • Impl Space:计算机程序只接受100%无歧义的命令
    • (OS:感觉很像传话游戏产生的曲解意思)
  • 模型补gap的方法是猜测,尽量快完成任务。但实际上应当先讨论一下,再完成任务。
    • 一旦在重大决策犯错,就要用巨大的成本来补(eg. Token、消耗的时间)
    • 大模型不会像人一样有重构的意识。
    • 当一个产品开始产生slop之后,投入更多的token只会产生更多的失败(耦合、隐含的知识和验证所需的债务)

软件工程所研究的

怎样把一件大事,在人和工具的共同协作下完成。

  • 失败 = 软件不满足intent和constraints
  • 怎么让工程不失败? —— 拆解、验证、迭代

Agent在完成单个具体任务上的能力已经无敌,但我们有前所未有的机遇:一个人能像一个团队一样解决现实世界中的问题。

02 提示词工程

视频地址

提示词

Harness内部 + AGENTS.md + 加载的skills + 你给的指令 + 工具/skills 的调用和输出 = 提示词

  • 提示词工程:一句话怎么写。
  • 上下文工程:每次决策前,哪些token以什么来源、顺序和作用域出现。 AI把“启动尝试”的成本压到很低 —— 立即行动,立即尝试。

疑惑OS:Pi是什么 —— 极简的Coding Harness (

  • 上下文包含了极为复杂的要求,模型被训练为能够不断推进直到满足要求。
  • 越明确且可验证的要求,越可能得到满意的结果。不明确的则模型可能会认为已经“满足”而终止。
  • 做法:
    • 写清楚指令,承担“不明确”可能发生的后果。
    • 压缩合法的解释空间,而不是把品味留给默认值(例如指定前端框架?写明具体的风格、具体的样式和排版)。
    • 明确意图(产品领域知识),把意图变成设计(软件工程) -> 最后将实现交给AI。
  • AI:
    • Pr[token|context]是深度有限的计算,但模型学会了利用上下文思考 - chain-of-thought。
    • 可以同时提出很多要求,AI会想出像人一样逐步逼近目标的过程 - test-time scaling。

每一个token的输出都会“注意”到过去的上下文。适当的时候,下一个chain-of-thought就会纠正错误。 但提示词也会抢夺注意力。

用AI读论文?

  • 短程任务基本上明确指令即可了。
  • 到长程任务:方法论决定了AI的上限。文章的信息密度非常大,AI也会因此被吸收很多注意力、可能被论文作者本身的逻辑带着走。
  • 反直觉:从零开始做产品,AI会从某个时间点开始翻车。但是在大型复杂的软件系统里AI却游刃有余。
    • 代码库本身也是prompt,AI的self-attention会遵循已有的best practice
    • 产品起步时没有建立良好的工程秩序,AI会在slop上不断叠加

We need to do

  • 要对实现的东西有概念,而这只能通过学习获得。要将模型引导到合适的位置上,而学科知识体系里蕴含了很多设计智慧。
  • 少干预,有时反而能做得更多。
  • 希望模型在不确定性中探索 -> AI只会给出有限的方案,因为AI容易认定“已经够了”。
  • 需求不明确,AI给出的方案在一定程度上会趋同 ep. 取名,成为AI时代的zihan。需要思考。

03 软件仓库管理

创造力需要正确的概念和理解 —— 即具有发散和创造能力的前提。

什么是一个软件工程项目?

一个目录 -> 一组文件 -> 一个可交付的东西? 从U盘到Git,项目版本管理有了标准答案。 课外的信息量和信息密度都很大,但从未被教过如何用好。

关于学习

  • 看到问题,先问自己:我会怎么想? —— 然后再看作者的做法。如果不一致,正是学习的机会。
  • 读别人的东西要有“感知细节”的意识,学会留意。
  • 举例:推免面试
    • 解释Git,多少能说两句;
    • git rebase,无人回答;
    • git merge冲突后观察到的事项,无人清晰说明
  • 学习的方式是自然地“外推”出去。
  • (OS:原来在git message里写类似 closed #3,GitHub会自动关闭相关Issues)
  • 把关键细节以直观的方式呈现出来。
  • “把细节做好” — “愿意学懂”成了真正有价值的品质

回到软件工程

项目 = 由 Atomic Change 推进的快照,即便AI-native也要避免“一团混沌”。

  • 如果Agent快了1000X,我们该再怎样进行版本控制?

04 软件仓库管理(2)

学习的目的:形成自己的理解

  • 先理解正确的设计,再回望历史,理解一路走来的过程
  • 单个Agent快,Agent还可以并行? 每个Agent有独立开发计算机,通过Remote同步 -> git worktree

为什么需要版本控制?

  • 人的生产效率有限。
  • 人之间有communication gap,沟通效率低。
  • 人就算沟通了也可能出错。
  • 同样的prompt、同样的模型做同一件事会收敛到相同的结果。

重新思考Fundamental的问题

  • 版本控制只是工具,真正的困难在进度(团队)管理。
  • 如果AI一句话就能做出高质量产品,软件工程就直接死了(斩杀线)。
  • 准则:你的软件能否抵抗需求的变化?
  • ——记住现在(repo)、记住历史(提交的历史演进)、记住教训
  • 用Minimun Viable Product 最小的版本(立即能使用、不完备的版本)验证,评估未来的潜在变化和软件的设计。
  • 早期的Prompt对项目的走向影响最大,可留痕的历史、可用的版本可以帮助你重新梳理架构设计。

05 软件工程的来龙去脉

如果AI能做一个人90%的工作,那个人的注意力就会集中到AI做不好的10%上。

  • 今天的开始一个软件的答案:直接做一个 MVP。
  • 软件工程的诞生
    • 软件工程的需求是高度定制化的,也一直认为是高度需要定制化的。
    • 在成本、时间等约束下,把人的意图变成可工作的软件系统。
    • 瀑布模型:希望迭代只发生在相邻阶段。但实际测试中暴露的问题会一路回溯到设计与需求。
  • 软件工程:为每个阶段都创建方法学和工具,尽可能减少返工的概率。
    • 在没有LLM的时代,不同阶段需要不同的“语言”
      • 需求分析:“我们想要什么”
      • 系统设计:“系统怎样组织”
      • 代码实现
    • 通过定义模型元素和语义,最大程度减少在没有代码时的语义漂移。

06 需求和架构(1)

软件工程的基本观察:需求难对齐、方案难选择、实现与返工贵。

  • Agentic AI:软件生产力的杠杆。现在生产目标明确的代码极为便宜,而需求、产品设计、架构成为撬动软件生产力的杠杆(不认真对待的话,就会成为AI Slop的堆积)。
  • 需求工程:QRCode Generator 需求明确,但公式长且脆弱、需求变更痛苦。
  • CRUD架构:用“当前状态”描述整个系统,为每个需求点写一个状态查询/修改的业务逻辑。
    • 而当前状态 = 历史事实 + 当时适用的规则 + 根据规则做出的决定
    • 可能会产生依赖关系,造成问题
  • 软件是现实世界物理过程的有损投影,系统中会有大量不一致的数据随着时间变成无法解释的黑洞。
  • 系统跑起来后修改的代价极高:数据库迁移、业务逻辑重写。而软件的设计和实现是个手艺活。—— A:数据结构可以记录当前状态和操作历史,状态由replay事件序列决定。

07 需求和架构(2)

软件工程的本质:驾驭复杂性。

  • 需求工程:直面必要的复杂性(需求越完备、歧义越小、管理代价也越大——到今天则是token开销和模型潜在的错误发挥)
  • 架构设计:分解必要的复杂性,减少意外的复杂性。好的架构能更容易实现需求,承受需求的变更。 MVC/CRUD解决了许多业务系统的架构问题,但是没有解决必要的复杂性。

复杂性分解:过去是事实、现在是视图、未来是预期。