前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9301
  • AI 编程沙盒的双重计费陷阱
  • Qwen3.8-27B 本地运行指南:17GB 指的是总内存
  • 生产 RAG 中嵌入模型漂移的隐藏风险
  • 数据库开发者为什么需要了解 MCP
  • RAG 评估实战:如何摆脱「感觉还行」的主观判断
  • 79% 的企业员工绕过 AI 治理政策
  • AI 找 bug ≠ 证明 bug 存在
  • 混合搜索实战:关键词+语义+Rerank 提升文档问答精度
  • Agent 记忆问题的本质是检索问题
  • AI Agent 数据删除管道设计实战
  • 票务分类 API 设计:语音转写与多模型摘要的最优组合
  • AI 在独立项目中自主修复跨域 iframe DOM 查询缺陷
  • 基于实时美股深度数据构建订单簿失衡信号
  • Claude 系统提示词两年增长 9 倍:生产 AI 产品团队该学什么
  • 开源工具 whodunit:用 Git/DevLake 数据量化团队 AI 采用效果
  • AI Agent 开发常见反模式:业务逻辑不应委托给 LLM
  • 构建混合搜索实战:关键词+向量+重排序完整管道
  • 多 Agent 系统调试:为什么「跑通了」不等于「对了」
  • Agentic AI与RAG根本不是一回事
  • OpenAI Codex向ChatGPT用户开放百万Token上下文
  • 代码库本身就是提示词:给AI参照已有实现比空想更有效
  • DeepTutor:港大数据科学实验室3层记忆Agent-native学习工作区
  • 用CI自动化比对Prompt变更,避免模型输出悄然退化
  • DeepSeek Harness开源自进化Agent框架,4天获12.6万星
  • 用事件总线架构拆解长链路Agent,避免单点故障蔓延
  • LLM性别偏见藏在prompt写法而非提问者身份
  • 20分钟重塑AI工作流:五步框架释放LLM潜力
  • 184个AI API成本实测:企业与初创公司差异分析
  • ChatGPT macOS隐私检查清单:Computer History安全配置
  • 美团AI变革复盘:全员养虾翻车与CatPaw落地方法论
  • Unsloth桌面版发布:单GPU运行7440亿参数模型,支持本地编码Agent
  • 同一终端双信任级别:Claude Code对接廉价代理节省API成本
  • Cursor推出自有代码托管服务
  • 测试时训练:模型边推理边学习新权重
  • Cursor Origin 仓库现已支持 Vercel 自动化部署
  • GPT-5.6 Sol在AI Gateway五折优惠一个月
  • Replit企业版大规模管控:Admin API与50+事件审计日志上线
  • macOS 屏幕共享漏洞正遭活跃利用,可远程获取 Root 权限
  • Linux 7.2 稳定版发布:I/O 性能优化、AMD/Intel 显卡驱动改进
  • 2026年8月AI基础设施与推理平台定价对比:18款工具每日更新
  • EU AI Act水印规定生效:AI生成内容标记可被伪造吗
  • Java 21 + Spring Boot + React 19 构建AI提示词管理平台
  • 30个AI API价格实测:价差高达350倍
  • 向量数据库深度解析与DataLoader实现
  • Pizza-Builder 法则:结构化提示词设计避免 AI 反复猜错
  • Anthropic API Prompt Cache深度分析:22%命中率才回本
  • AI Agent 自报完成不可信:两种独立验证方法
  • AI生成代码的隐性风险:我们正在交付看不见的假设
  • Python 内容审核:Schema 门控批量分类 + 人工复核队列
  • Anthropic Claude 大规模宕机,多项服务受影响
  • 生产环境 LLM 选型:别只看基准分,场景上下文才是关键
  • 已加载 51 / 9301
8.0
热点
AI SCORE
编程提效2026-08-17 10:13

代码库本身就是提示词:给AI参照已有实现比空想更有效

dev.to · AI#AI编程#提示词技巧#工程实践
Editor brief · 编辑速览

作者发现,让AI参考一个已有的相似代码库,比长篇累牍的描述需求更管用。指出项目中存在不一致的代码结构就是给AI埋的缺陷,规范的包命名模式是天然的高质量示例。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

代码库中的每个不一致,都是你交给 AI 代理的规范中的一个 bug。

在过去的八个月里,我的 prompt 大多是一句相同的话,只是换了两个包名。

Ok, considering `blas/ext/base/gxmy` as the closest reference
implementation, we need to refactor everything in
`blas/ext/base/gxdy`.

The difference is mostly implementation, and some other things
you will figure out when comparing.

But as far as structure goes, `blas/ext/base/gxmy` is the way
to go.

这样的话我写了几十遍,绝大多数都是在 blas/ext/base 目录下。包名如果不熟悉命名规则,看起来就像乱码。打头的字母通常标识数据类型,其余部分描述操作。你不需要记住细节。重要的是相关包遵循可识别的模式。

这不是什么巧妙的 prompt。没有复杂的角色设定,没有冗长的清单,也没有提示技巧。它只是指向一个已经存在的包,然后说:遵循那个模式,有这些区别。

而且效果出奇地好。

我花了一段时间才理解原因。答案比 prompt 本身更有趣。它有效是因为 stdlib 的构建方式。

数千个兄弟

stdlib 是一个专注于数值和科学计算的 JavaScript 和 Node.js 标准库。它由 lib/node_modules/@stdlib 下数千个小包组成,每个都可以独立安装。它们不是数千片不同的雪花。它们是更少几种形态的变体。

一个 strided BLAS routine 看起来和其他 strided BLAS routine 一样。一个 LAPACK auxiliary routine 与其相邻的包遵循相同的总体包结构,包含相似的文件、分区注释、文档、测试和命名约定。

stdlib 的 Zen 说得很清楚:

价值一致性高于一切。

这条原则是为人类写的。实现了一个包的贡献者可以认出其他许多包的形态。一致性成为一种教学工具,也是一个承诺——下一个包不需要从零开始。没有人写这条原则时考虑过语言模型。但是,一个包之间高度相似的代码库,也是你能给 AI 代理的最好的东西之一。

当我指向 blas/ext/base/gxmy 并要求参考它来重构 blas/ext/base/gxdy 时,我并不是在要求模型凭空发明一个包,而是在让它比较两个相关的操作并应用现有的模式。规范不在文档里,而是在兄弟包里,在磁盘上,已经过审查、已合并、已知可以工作。

代码库本身就是 prompt。

混乱的代码库是混乱的 prompt

这就是这个想法让人不舒服的地方。如果先例是你的规范,那么仓库中的每一个不一致都成了这个规范的 bug。这不仅仅是外观问题。一个使用旧基准风格过时的包,同样是一个等待被复制的错误答案。

另一位 stdlib 维护者最近对我说的话改变了我的看法。当约定改变时,你有两个选择:

你可以添加另一条指令告诉模型记住这个异常;或者

你可以更新旧的包,使异常不再存在。

第二种选择在实际可行时更好。告诉模型记住只是一个补丁。它要求模型携带不一致并追踪哪个版本是当前的。修复代码库消除了那种模糊。模型可以直接环顾四周。

对人类也是如此。每一个"忽略那个文件,它使用旧方法"都会给未来每个贡献者增加一点成本。我们一直都知道这一点。AI 代理只是更快地让成本显现出来,因为它们会找到旧的例子并把它当作证据。

我在最近的一次现代化工作中看到了这一点。基准测试名称以前是通过字符串连接构建的,后来我们迁移到使用 format() 的字符串插值,这是一个类似 C 的 printf 的纯 JavaScript 实现。在迁移过程中,代码树混合了两种约定。一个代理在向新包添加基准测试时,复制了它最近的邻居碰巧使用的任何风格,而它这样做是对的。旧文件中没有任何内容说它是旧的方式。

不要把今天能做的事情推迟到明天,因为明天一个代理可能会读取所有版本并认为它们都同样有效。

在 stdlib 参与 METR 研究之后——该研究指出有经验的开发者在可以使用 AI 的任务上慢了 19%——Philipp Burckhardt 写了一篇反思,识别出两个摩擦来源:项目约定的差距,以及代理在每个 session 开始时的空白 slate。我认同这个诊断。代理可能不会可靠地记住前一个 session 中的指令,但它可以检查面前的代码。一致性使得正确的约定在代理开始的地方都是可见的。

这就是为什么我今年的大部分工作从外部看起来都很无聊。更新基准测试名称、现代化测试、清理数百个 pull request 中的旧约定。我以前主要认为这些工作是维护。现在我也把它们看作是改进例子,这样未来每个贡献者——人类或其他——都会从中学习。

包里面没有的东西

先例很强大,但它有局限性。代码展示的是 what。它很少展示 why,而且并不总是展示要验证什么。一个模型可以产生一个正确的实现,但仍然不知道在打开 pull request 之前应该运行哪些检查。

但那些知识并不只存在于人们的头脑中。大部分已经写在仓库里了,只是没有在你恰好编辑的包里面。

stdlib 安装了一个 pre-commit hook,在允许提交之前运行十多个检查。它验证格式化,对源代码、测试、示例和基准测试分别 lint JavaScript,检查包清单,lint Markdown 和 TypeScript 声明,并验证许可证头。

在这个 post 撰写时,这个项目有 126 条自定义 lint 规则,覆盖了一般 linter 没有理由知道的约定:一个 JSDoc 块应该如何构建,doctest 输出应该如何匹配,一个 namespace 应该如何看待其导出。树中的每种语言都有风格指南,还有一份贡献指南,描述了一个可审查的 pull request 是什么样子。

这些都不在包里面。所有这些都是机器可读的。

这个区别比我预期的更重要。一个不知道这些存在的代理会猜测,而它的猜测看起来足够合理,可以在快速审查中存活下来。一个运行 hook 的代理会被告知确切的问题所在,用项目自己的话,不需要任何人写关于它的 prompt。

所以你能为代理做的最有用的事情不是描述你的约定,而是让它们可执行。一个存在于审查者记忆中的约定每次被违反时都必须重复。一个存在于 lint 规则中的约定对人和机器都会自动执行。

工具无法决定的是首先要模仿哪个现有的包。选择正确的参考是我不得不为模型自己写下来的唯一指导。

找到正确的兄弟

我在写这个指导时学到的最有价值的东西是,有价值的部分不是另一份风格规则列表,而是教模型如何找到正确的先例。

对于一个新包,指导是一个简单的阶梯:

查找相同操作在不同精度下的实现。

如果不存在,找一个具有相同包形态和相同精度的 routine。

否则,在同一个 family 中找最接近的操作。

然后,在编辑任何东西之前,说明所选的参考并解释为什么选择它。

这是我重复 prompt 的核心,概括了。不再需要我知道 blas/ext/base/gxmy 是应该遵循的正确包,模型有一个找到正确包的过程。

最后一条指导比看起来更重要。在写代码之前要求模型说明它的参考给了我一个廉价的地方来阻止它。如果它选择了错误的兄弟,我在一句话中就能发现,而不是在审查一个四百行 diff 之后。许多我收到的糟糕输出都是以错误的参考开始的。那个错误在任何代码需要写之前就已经可见了。

我会告诉维护者什么

如果你维护一个项目,并考虑如何为 AI 辅助贡献做准备,这是我目前相信的:

一致性就是基础设施。它帮助人们理解项目,并为机器提供可靠的例子。

修复代码库,而不是记录每个异常。在实际可行时,迁移旧的约定,而不是要求每个未来的贡献者记住哪些例子应该被忽略。

写下过程,而不仅仅是风格。linter 可以强制格式化。它无法解释选择哪个参考,哪些检查证明工作有效,或者哪些更改不应该在同一个 pull request 中。

让代理首先承诺一个参考。任何代码之前的一句话可以防止整个不正确的实现。

为数值工作保留一个真实的参考。约定可以使代码看起来正确。针对可信真实值的差异测试才能告诉你它是否表现正确。

像对待代码一样对 AI 指令进行版本管理。它们会过时。给它们标识符、索引和历史,这样贡献者可以知道哪个指导是当前的。

意外的成功

我进入今年时认为有趣的问题是如何写好 prompt。我不再认为这是主要问题。Prompt 是建立在一个更基本问题之上的薄层:你的项目是否有任何一致的东西可以指向?

stdlib 在这方面异常出色,尽管对 AI 的好处是意外的。多年坚持要求相关包看起来和行为一致,完全是为了人类贡献者的利益,同时也创建了一个有用的机器可读规范。项目对 AI 做出的最佳投资发生在任何人开始思考 AI 之前。它被称为"价值一致性高于一切"。

这引出了一个乐观的结论。让代码库对机器可读与对人类可读是同一件事。它是一致结构、当前约定、文档化流程和真实验证的同一项工作。

我们一直都知道这些事情很重要。我们并不总是把它们当作紧迫的事情来对待。现在有什么东西在读取所有这些内容,并用找到的东西来塑造下一个贡献。

Karan Anand 是 stdlib 的核心贡献者,stdlib 是一个用于数值和科学计算的 JavaScript 库。

stdlib 是一个开源软件项目,致力于提供全面、高性能的库套件,以加速项目的开发,让你在依赖专家精心制作的高质量软件时安心。

如果你喜欢这篇文章,请在 GitHub 上给我们一个星星 🌟 并考虑支持这个项目。您的贡献和持续的支持有助于确保项目的长期成功,我们非常感谢!

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
OpenAI Codex向ChatGPT用户开放百万Token上下文
下一篇
DeepTutor:港大数据科学实验室3层记忆Agent-native学习工作区