2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
氛围编程(Vibe coding)已来到我们身边,但当代码库具备强大的可供性(affordances)时,其效果最佳——这是一个设计概念,描述了行动者(在此指编码智能体)相对于对象(在此指代码库)可以采取的可能行动:
可供性:事物可能具有的用途或目的,人们在其观察或体验过程中会注意到这些用途或目的。
为了让像 Claude Code 或 Cursor 这样的编码智能体生成富有成效的代码,而不是产生后期维护和高昂清理成本的“人工智能垃圾”,构建具有清晰结构和自动化防护栏的代码库变得至关重要。
即使是目前最聪明的模型,如果没有良好的约束框架,也不可能对每一个边界情况进行推理。而且,即使使用像 Claude Code 这样的编码智能体,以深思熟虑的方式设计代码仓库也能极大地提高代码质量。
代码仓库不应仅仅被视为一堆可执行的代码,而更应被视为智能体的执行环境。因此,良好的氛围编程意味着该环境应提供:
- 针对“糟糕工程实践”的快速验证
- 受限的影响范围
- 在提交前强制保持不变量的防护栏
- 智能体可用于自我“氛围检查”的测试和脚本
使代码仓库对智能体易于理解
使用 pnpm 并设置一个单体仓库(monorepo)。如果你希望在前端和各种后端微服务的多个仓库之间工作,你需要让编码智能体在这些仓库之间切换上下文,或者赋予它们过于宽泛的权限,以便它们在同一会话中访问所有仓库。这并不理想。因此,直接使用单体仓库即可。
apps/
frontend/
backend/
docs/
architecture.md
conventions.md
packages/
eslint-config/
shared-utils/
shared-tyles/
typescript-config/
CLAUDE.md
package.json
pnpm-lock.yaml
pnpm-workspace.yaml
turbo.json
单体仓库结构允许你创建多个使用共享包的应用程序。这些共享包可以是工具函数和类型定义。此外,我发现将 ESLint 和 TypeScript 配置标准化为一个共享包非常有用,这样它们就可以在新的应用程序和包中轻松导入。
例如,一旦你在共享包中导出如下 ESLint 配置:
// packages/eslint-config/base.js
import js from '@eslint/js'
import eslintConfigPrettier from 'eslint-config-prettier'
import turboPlugin from 'eslint-plugin-turbo'
import tseslint from 'typescript-eslint'
import onlyWarn from 'eslint-plugin-only-warn'
/**
* 仓库的共享 ESLint 配置。
*
* @type {import("eslint").Linter.Config[]}
* */
export 免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。