宝玉
7个月前
跟 Claude Code 学英语 Claude Code 在推理时会随机显示一些动作,比如Vibing、Doing、Baking……给用户一种 AI 正在思考和工作的感觉,它其实有个数组,有一堆动词的进行时,每次随机挑选一个 // 随机显示的加载消息数组 // 这些动词给用户一种 AI 正在思考和工作的感觉 const MESSAGES = [ 'Accomplishing', // 完成中 'Actioning', // 执行中 'Actualizing', // 实现中 'Baking', // 烹饪中 'Brewing', // 酿造中 'Calculating', // 计算中 'Cerebrating', // 思考中 'Churning', // 翻腾中 'Clauding', // Claude 工作中 'Coalescing', // 融合中 'Cogitating', // 沉思中 'Computing', // 计算中 'Conjuring', // 召唤中 'Considering', // 考虑中 'Cooking', // 烹饪中 'Crafting', // 制作中 'Creating', // 创造中 'Crunching', // 处理中 'Deliberating', // 深思中 'Determining', // 决定中 'Doing', // 执行中 'Effecting', // 实施中 'Finagling', // 巧妙处理中 'Forging', // 锻造中 'Forming', // 形成中 'Generating', // 生成中 'Hatching', // 孵育中 'Herding', // 整理中 'Honking', // 鸣叫中 'Hustling', // 快速工作中 'Ideating', // 构思中 'Inferring', // 推理中 'Manifesting', // 实现中 'Marinating', // 酶造中 'Moseying', // 漫步中 'Mulling', // 细思中 'Mustering', // 集结中 'Musing', // 默思中 'Noodling', // 即兴工作中 'Percolating', // 渗透中 'Pondering', // 沉思中 'Processing', // 处理中 'Puttering', // 悠闲工作中 'Reticulating', // 网络化中 'Ruminating', // 反刷中 'Schlepping', // 携带中 'Shucking', // 剥壳中 'Simmering', // 慢炒中 'Smooshing', // 变形中 'Spinning', // 旋转中 'Stewing', // 炖煮中 'Synthesizing', // 综合中 'Thinking', // 思考中 'Transmuting', // 转化中 'Vibing', // 感受中 'Working', // 工作中 ]
宝玉
7个月前
问:我想利用暑期帮助即将升入高一的孩子高效预习已有的九门课程PDF教材,计划使用Gemini 2.5 pro的OCR功能逐科上传教材,并用AI担任教师进行系统辅导。想请教: 1. 如何撰写针对每门课的高质量提示词(Prompt),尤其是上下文构建? 2. 有没有比Gemini更合适或更高效的AI辅助自学方案(如Claude Code)? 3. 作为家长,在AI辅助孩子学习的过程中,我应扮演怎样的角色,并如何有效评估学习成果、动态优化提问策略和调整学习计划? 答: 1. 没必要上传教材: - 基础知识大模型都训练过,没必要上传 - 上传教材会占用上下文窗口,反而影响输入效果 - 只有说模型没有训练过的内容,或者需要确保 AI 能引用到特定内容,才需要主动提供给模型 2. 对于能力强的不需要刻意去写提示词,把问题描述清楚即可。参考标准就是:如果你写的问题给一个人类看,他们是否能看明白?当然给 AI 的标准可以低一些。另外可汗学院用的教学提示词可以作为参考: 3. Gemini 就挺好的,有条件去看看可汗学院的 Khanmigo 4. 家长的话,建议为孩子提供好的条件,但让孩子自主安排,主动去探索适合自己的学习方法最好,都高中生了,应该引导他们独立自主、积极主动去有目标的学习而不应该过于依赖老师和家长。 最后,AI 只是辅助教学工具,并不是一定要用的。 以上建议仅供参考。
宝玉
7个月前
写代码从来不是瓶颈 作者:Pedro Tavares 多年来,我一直认为软件开发的瓶颈根本不在于写代码本身。 真正的瓶颈从来都是代码审查、通过指导与结对编程传递知识、测试、调试,还有人与人之间沟通协调所产生的“人类开销”。所有这些都被嵌套在纷繁复杂的任务票据、计划会议和敏捷开发流程之中。 这些旨在提升质量的流程,往往比实际写代码的速度慢得多,因为它们需要思考、共同理解,以及理性判断。 现在,大语言模型(LLM)的兴起使得生成可运行的代码变得前所未有的简单快捷,一种新的论调便随之出现:过去写代码才是瓶颈,现在我们终于打破了它。 但事实并非如此。 尽管借助LLM,新增代码的边际成本正在无限趋近于零,但理解、测试、信任这些代码的成本却比以往更高了。 LLM只是转移了工作,而非移除了工作 像Claude这样的工具能加快初步的代码实现,但结果通常是产生更多代码,进而给审查、集成和维护代码的人带来更大的压力。 这种现象尤其明显,当: * 提交代码的人可能自己都没完全理解代码的逻辑。 * 生成的代码引入了团队不熟悉的模式或违反了已有的惯例。 * 一些边缘情况或潜在的副作用并不明显。 于是,我们陷入了这样一种状况:代码生产变得容易了,但验证代码却更加复杂,这并不会真正提高团队整体的速度。 这其实并不新鲜。开发者早就自嘲自己进行的是“复制粘贴工程”,而LLM所带来的速度和规模则进一步放大了这种复制粘贴的现象。 理解代码才是真正的困难所在 > “代码最大的成本是理解,而不是写出来。” LLM确实减少了产生代码所需的时间,但它们并未降低理解代码行为、发现细微的Bug或确保长期可维护性的努力。甚至,在面对由LLM生成的代码时,这些任务可能变得更难,因为审查者要区分生成代码与手写代码之间的差异,以及弄清为何要选择某个特定的方案。 团队仍然依赖信任和共同背景 软件开发本来就是一个协作过程,它依赖于共同的理解、目标一致和互相指导。然而,当代码的生成速度远超沟通和审查的速度时,团队可能会陷入一种“默认质量”而非“确保质量”的模式。这无形中给审查者和指导者带来巨大压力,可能进一步以微妙的方式拖慢团队的整体节奏。 LLM很强大,但并未解决根本问题 LLM在快速原型开发、脚手架搭建和自动化方面确实带来了真正的价值。然而,它们无法消除清晰思考、谨慎审查以及周密设计的必要性。相反,随着生成代码越来越多,这些基础工作变得更为关键。 是的,写代码的成本确实降低了。但团队一起理解代码的成本并没有降低。 这才是真正的瓶颈。我们不应假装它不存在。
宝玉
7个月前
一文看懂“提示词” vs “提示词工程” vs “上下文工程” 很多人分不清楚什么是“提示词”(Prompt),什么是“提示词工程”(Prompt Engineering),现在还又多了一个概念叫“上下文工程”(Context Engineering),这又和“提示词工程”什么区别? 什么是提示词(Prompt)? 提示词很好理解,就是给 AI 模型的输入文本,就是你直接向模型输入的问题或指令。 比如你让 ChatGPT 总结一段文本、调用模型 API 传入提示词去翻译一篇文章等等。 提示词是一段文本,有点像代码。 什么是提示词工程(Prompt Engineering)? 提示词工程是一个过程,系统化地设计、测试、优化提示词的过程。 就像软件工程,我们为了完成某个需求,要有一套科学的方法来帮助完成软件开发的过程,有方法论(比如敏捷开发),要使用工具,要保证质量,不断迭代,最终交付软件,或者说代码。 举个例子 比如我们要有个提示词帮助翻译英文文章到中文。 普通人都可以写: “请把下面的英文内容翻译为中文:” 这就是一段提示词。 但是你会发现虽然能翻译,但是似乎翻译效果不够好,于是你开始想办法优化,让 AI 扮演一个英文翻译到中文的专家,发现似乎有点效果。 但还是翻译有点生硬,然后你看有人介绍了 CoT(思维链,Chain of Though),于是尝试在提示词中让 AI 去先直译再意译,但你也不知道这样的改动是不是真的有用,于是你找了10篇文章,分别用加了 CoT 和没加 CoT 的文章,去用相同的模型去翻译,然后找了几个人,在不告诉他们使用什么方法翻译的情况下让他们评估好坏,结果绝大部分都认为加了 CoT 的效果更好,那么你就明白了,原来加了 CoT 对翻译是有效果的。 于是你受到鼓舞,即然 CoT 有效果,那么我在直译、意译的基础上,继续增加一个 AI 对直译结果的评估,再去意译,甚至再多加几步是不是效果更好?再继续改进提示词,拿着之前的测试集去评估测试,果然测试效果更好,但是也带来新的问题,Token 消耗更多,时间更长,还可能会偏离原意。CoT 也并不见得步骤越多越好。 再后来推理模型发布了,你发现模型自己会 CoT 了,语言能力也更强了,原来繁琐的一步步翻译似乎没有必要,于是进一步优化,发现只要在提示词中让模型“用中文重写”就可以达到很好的翻译效果,测试集评估结果也是正面的。 这整个对翻译提示词“设计”、“测试”、“优化”的过程就是提示工程。 最终通过这样的过程,产生出一个版本一个版本的提示词。 再精炼浓缩一下:提示词工程是产生提示词的过程。 什么是上下文工程(Context Engineering)? 要理解上下文工程,先得搞清楚什么是“上下文”(Context)? “上下文”不仅仅是发给大语言模型的一句提示词,而是模型生成回答之前所看到的一切信息,这些信息包括系统提示词、用户输入的问题、当前对话的历史消息、系统对你的历史记忆、工具返回的信息等等。 另外上下文窗口不是无限的,每个模型都对上下文的长度有限制,通常上下文内容多了会影响性能,所以控制好发送给 AI 的上下文很重要,既不能遗漏,又不能什么都放进去要控制体积。 举个例子,你跟 ChatGPT 说: “今天都有什么重要的 AI 新闻?” 看起来只是一句话,但是对于大模型来说,初始的上下文有这些: • 系统提示词:“你是个有用的助手,总是帮用户解决问题” • 用户输入:“今天都有什么重要的 AI 新闻?” • 可用工具:“日期工具、搜索工具、网页抓取工具” • 长期记忆:“用户主要使用中文” • 历史会话消息:无 • 工具返回信息:无 这些上下文不足以让 AI 回答你的问题,于是它需要自己去调用工具找齐上下文: • 根据日期工具获取到今天的日期(大模型自己不知道今天是几号) • 根据今天的日期去调用搜索工具检索 AI 新闻 调用完工具后,现在 AI 的信息完整了: • 系统提示词:“你是个有用的助手,总是帮用户解决问题” • 用户输入:“今天都有什么重要的 AI 新闻?” • 可用工具:“日期工具、搜索工具、网页抓取工具” • 长期记忆:“用户主要使用中文” • 历史会话消息:无 • 工具返回信息: • 2025-7-1 • Hollywood Confronts AI Copyright Chaos in Washington, Courts • Mark Zuckerberg Announces New Meta ‘Superintelligence Labs’ Unit 现在信息够了,考虑用户偏好中文,最后返回的内容如下: 今天的 AI 新闻有: • 好莱坞在华盛顿和法院直面人工智能版权混乱 • 马克·扎克伯格宣布成立新的“超级智能实验室”部门 马克·扎克伯格宣布成立新的“超级智能实验室”部门 假如用户再追问一句: “帮我返回第二条新闻的详情” 那么模型要从历史会话里面,找到第二条新闻的链接,再去调用网页抓取工具,把新闻内容抓取下来,根据用户的偏好翻译成中文,最后返回用户中文的新闻内容。 注意看这个构建上下文的过程是完全动态的,并不是按照设计好的工作流去收集上下文,而是模型自己根据当前上下文状态去自主动态的调用工具收集上下文,并且不同的任务需要调用的工具也不一样。 这其实也就是现在 AI Agent 的工作原理:能分辨是否已经收集够了完成任务必要的上下文,能自主决定是不是需要借助工具或者对话来补齐上下文。 上下文工程的概念也正是在 AI Agent 爆发的背景下诞生的。原来单纯靠提示词工程已经无法满足 AI Agent 产品的需求了,AI Agent 需要的更多的是为系统设计好工具、定义好工具和模型之间交互的数据格式、有效组织上下文信息提供给模型(内容长了要不要压缩、怎么压缩)等等。 上下文工程(Context Engineering),就是一门为 AI 设计和构建动态上下文的学科,为大语言模型提供恰当的信息和工具,帮助模型高效完成任务。 > “上下文工程”指的是一种精妙而复杂的技术:你要精准地将上下文窗口填充上恰到好处的信息,让模型能准确地迈出下一步。 > 这是一门科学,也是门艺术。 > > 说它是科学,因为你要把任务描述、说明、少量样例(few-shot examples)、检索增强生成(RAG)、各种相关数据(甚至可能是多模态数据)、工具、状态、历史信息等全部巧妙地组合在一起,同时还要考虑如何压缩信息。这就像烹饪一道精致的菜肴,配料太少或搭配不对,模型无法获得足够的信息,性能会变差;配料太多或毫无关联,则会增加成本甚至降低表现。要做好这件事,需要的不仅仅是简单堆叠,更是高度专业化的技巧。 > > 说它是艺术,则是因为操作者还要掌握一种近似“心理学”的直觉,敏锐地洞察 LLM 和人类用户心理之间的微妙互动。 > > ——Andrej Karpathy 最后 分别一句话总结一下 • 提示词: 发送给 AI 的问题或者指令文本 • 提示词工程: 系统化地设计、测试、优化提示词的过程。 • 上下文工程: 为大语言模型提供恰当的上下文、帮助模型高效完成任务的科学和艺术。 如果没理解这些概念也没关系,对于普通人来说,能写提示词就够了,要开发 AI 应用才需要考虑提示词工程去不断优化提示词,要开发动态的 AI 智能体才需要去搞上下文工程为 AI 的上下文窗口填充恰好的信息。
宝玉
8个月前
Meta 从 OpenAI 挖走三位顶尖研究员,力争打造超智能AI 社交媒体巨头聘请 Lucas Beyer、Alexander Kolesnikov 和 Xiaohua Zhai 加入超级智能研究团队 Meta的CEO马克·扎克伯格(Mark Zuckerberg)正大举招募AI顶尖人才,试图扭转公司的AI困境,并迅速推进超级智能(superintelligence)领域的发展。 据知情人士透露,Meta近日从OpenAI成功挖走了三名资深研究员,分别是Lucas Beyer、Alexander Kolesnikov 和 Xiaohua Zhai。这三位研究员此前都任职于OpenAI的瑞士苏黎世分部,而该办公室去年底才由他们共同建立。在加入OpenAI之前,他们三人曾一同在谷歌旗下AI实验室DeepMind共事。 OpenAI的发言人已经证实,这三名研究员已正式离职。 扎克伯格近期频繁亲自上阵招募AI顶尖人才,此次重磅挖角旨在修复公司前阵子发布的AI模型不够理想带来的负面影响。据悉,他为吸引高端人才,甚至向部分研究人员开出高达1亿美元的加入奖金,组建一个专门攻克超级智能的全新团队,这类超级智能的能力将超越人类智慧。 此前Meta还向AI初创公司Scale投资了140亿美元,并聘请其CEO Alexandr Wang带领新的AI团队。此外,扎克伯格也尝试招募OpenAI的联合创始人Ilya Sutskever和John Schulman,但均未成功。 OpenAI CEO萨姆·奥特曼(Sam Altman)在周二的一场活动中谈到Meta挖人的举动,表示他对此并不担心。他调侃称:“扎克伯格又在搞什么疯狂新花样了,下一个是什么?”他还在上周公开表示,公司最优秀的人才并未跳槽到Meta。 Meta之前推出的一款AI模型表现低于预期,扎克伯格自四月起便亲自推动人才招募活动。今年五月,《华尔街日报》曾报道Meta推迟了新一代AI模型(规模更大)的发布计划。 不过,也有不少AI研究员拒绝了Meta的高薪邀请,在一些情况下,OpenAI甚至做出了加薪和扩大研究自主权的承诺来挽留人才。 如今,以Meta、Google为代表的科技巨头,以及OpenAI、Anthropic等AI初创公司,正在展开一场激烈的人才争夺战,竞相开发引领硅谷下一波创新浪潮的先进AI技术。 Meta计划今年的资本支出高达650亿美元,其中很大一部分将用于AI基础设施建设。扎克伯格近期频频描绘未来的AI愿景:人们将与AI朋友聊天互动,广告创作将完全由AI从零开始实现,而与品牌交流的第一道窗口也将由AI商业智能体(business agents)负责。
宝玉
8个月前
我最初鼓吹 Claude Code 的时候,就特别说明了新手就不要去用了,因为你可能打开也不知道该干嘛!但是对于铁锤这样的老手来说,只是没切换思维模式,逼着自己用一段时间就会适应,并且习惯了就再也离不开了。 程序员熟手要用好 Claude Code,最大的转变来源于思维的转变和开发习惯的转变。 这个转变就是先设计再写提示词,然后用提示词生成代码。 “先设计再写代码”这话其实老生常谈,但是说和做是不一样的,虽然我们软件开发都号称是先设计再开发,那通常是针对整体的系统设计,但是到具体实现的时候,很少有人会这么做,因为编程的细节,它不是一下子就清晰的,就算你是个老手,在没实现过的模块,在没有写完的时候是没有完全想清楚的,只有去动手写,一边写一边想,写完一部分在调整甚至推翻重写,这样反反复复写完才算是把它搞明白了。 如果再让你把写过的模块重新实现一遍,那就简单直接多了,能很快写完,因为整个设计已经了然于胸,只剩下代码实现了。 写代码有些像写文章,你写作的速度是跟不上你脑子思考的速度的,所以你脑子构思好的东西,还要花很长时间的输出才能成文,类似的你思考好的架构要花时间才能写成代码并且编译运行。 但写代码又不完全像写文章,因为文字是有艺术性的,你的风格、用词、结构没有特定的套路,要反复斟酌,很费时间,AI 生成的文字很难满足这些方面的要求(有 AI 味),但代码无所谓,相对结构比较固定,而且能稳定运行的话,代码写的差一点也不是不可以接受。 所以写文章像我们这样天天写字的人,反而不太爱用 AI 写,因为它写出来的东西有一种奇怪的 AI 味,自己都不爱看更不要说你的读者了。 但是写代码不一样,你想清楚了设计,把设计写成提 Prompt,让 AI 去生成代码,以现在 Claude 4 的能力,并不会与你期望的有太大出入,如果有出入,要么就是小问题,再补加要求就能解决,甚至手动调整;如果有大的出入,那一定是你设计的问题,是你提示词没有写清楚,那么就回退一步,回滚代码,调整设计,重写提示词,那么就能重新生成正确。 这样设计到提示词,提示词再到代码的好处就是重构起来也特别容易,你不需要去大量手动修改代码,只要把重构的要求写成提示词,Claude Code 这样的 Agent 会很快帮你改好。 当然这样做的一个前提:就是每一次不要修改太多,不要生成太多代码,不然就可能会失控。 另一个改变就是:Review 代码和测试。 很多人没有 Review 代码的习惯,更没有测试自己代码的习惯,每次让 AI 生成代码,我都会仔细看一遍生成的结果,看代码和我期望的是不是一样的——如果我自己写,会怎么样写,它的方案是更好还是更早,更好我可以学习,也欣然接受,凑合那就这样了,不够好我就回滚调整提示词,或者追加一下要求。 测试也很重要,单元测试这种用例是要自己设计自己review的,手工测试也必不可少,尽可能让测试成本降低,比如通过命令行去测试、测试代码去测试,这样每次生成完都可以马上测试马上验证,有问题就回滚或者修复。 这样刚开始做是很不习惯的,但是当你适应后,你会喜欢这样的开发方式,结果也会更好。 顺便说一下,Swift 代码没问题的,我也用 Claude Code 写过的,质量很不错。