资讯动态

open-codesign 仓库的 CLAUDE.md 实战解析:AI 编码代理协作规范、硬约束与技术栈锁定指南

发布时间:2026/9/28 20:21:31 来源:尧图企业网站定制
人工智能AI 应用桌面应用【免费下载链接】open-codesignOpen-source Claude Design alternative. One-click import your Claude Code / Codex API key. Prompt → prototype / slides / PDF. Multi-model (Claude, GPT, Gemini, Kimi, GLM, Ollama). BYOK, local-first, MIT.项目地址https://gitcode.com/gh_mirrors/op/open-codesign点击查看免费下载导读本文以 open-codesign 仓库根目录的CLAUDE.md为骨架完整解析这份为 Claude Code以及任何 AI 编码代理编写的仓库操作手册它定义了项目的身份边界、六条不可违背的工程硬约束、锁定到具体版本与工具链的技术栈、仓库布局、任务执行流程、应避免的常见错误以及常用开发命令。读者读完本文将能在不改动仓库的前提下准确理解 open-codesign 的架构决策本地优先、BYOK、多模型接入、按规范提交代码与运行测试并能借助仓库源码配置文件、Provider 适配层、主进程实现逐条印证每条约束的落地形态。这份文档是什么为 AI 代理写的入场须知CLAUDE.md位于仓库根目录开篇即说明它的定位Instructions for Claude Code (and any AI coding agent) working in this repository. Read this before making changes.——它不是面向最终用户的产品文档而是面向在仓库内工作的 AI 编码代理的约束与上下文文件要求任何改动之前先读它。与常见的通用 CONTRIBUTING 模板不同这份文档的每一节都绑定具体工程决策并且大部分决策都能在当前仓库中找到源码级证据。它同时声明了一个关键前提项目完整愿景与锁定决策存放在内部文档docs/中该目录默认被 gitignoreNote: docs/ is gitignored公开检出clone 来的副本可能没有docs/此时应改用AGENTS.md、公开 issue/PR 与 README 获取上下文而不是阻塞在缺失的内部文档上。当前检出中实际包含 docs/VISION.md 与 docs/v0.2-plan.md可直接作为愿景与路线图参考。项目定位从一句话到架构全貌CLAUDE.md 用一段话概括项目open-codesign 是一个Electron 桌面应用把自然语言提示词转化为设计产物HTML 原型、PDF、PPTX 演示文稿、营销素材是 Anthropic Claude Design 的开源对应物通过pi-ai提供多 Provider 模型支持并采用本地优先local-first的存储模型。这与根目录 package.json 中descriptionOpen-source AI design tool — prompt to interactive prototype, slide deck, and marketing assets. Multi-model, BYOK or ChatGPT login, runs on your laptop以及 docs/VISION.md 中本地优先的 Electron 设计 Agent定位相互印证。VISION.md 进一步明确产品边界每个设计是一次由 JSONL 历史与磁盘真实文件支撑的长期会话面向创始人、产品经理、营销、设计师与设计工程师明确不做通用软件工程 Agent、不做 Figma/Canva 替代品、不是托管 SaaS无账号、无云同步、默认无遥测。六条硬约束项目级承诺而非偏好CLAUDE.md 强调以下约束是项目级承诺project-level commitments不是偏好preferences每一项都能在源码中找到落地证据。1. 不捆绑模型运行时No bundled model runtimes安装包不得携带Ollama、llama.cpp、Python 或浏览器二进制一律依赖系统安装或按需懒下载。源码证据packages/shared/src/config.ts 中内置 Provider 列表BUILTIN_PROVIDERS包含ollama条目其baseUrl指向http://localhost:11434/v1OLLAMA_DEFAULT_BASE_URL且requiresApiKey: false、capabilities.supportsKeyless: true——这隐含了Ollama 由用户自行在系统安装并启动的前提应用只作为客户端接入而不是把自己打包成模型运行时。2. 仅 BYOK无代理、无遥测不允许代理 API 调用、不允许云账号、默认无遥测。用户凭据存放在~/.config/open-codesign/config.toml明文、文件权限 0600对齐 Claude Code / Codex / gh CLI 惯例。源码证据在 apps/desktop/src/main/config.tsdefaultConfigDir()遵循 XDG 规范优先$XDG_CONFIG_HOME否则回退到~/.config再拼接open-codesign子目录writeConfig()最终以writeFile(path, body, { encoding: utf8, mode: 0o600 })写盘0o600即仅所有者可读写正是文档承诺的文件权限解析失败分别映射到CONFIG_READ_FAILED/CONFIG_PARSE_FAILED/CONFIG_SCHEMA_INVALID三类错误码写入前还会用ConfigV3Schema.parse()做形状校验见下文schema-version节避免把损坏配置落盘。3. 本地优先存储v0.2 设计状态基于文件与会话file/session based且本地优先禁止新增 SQLite 支撑的会话/设计特性状态。这与 VISION.md 的锁定决策一致Storage: JSONL sessions workspace filesystem。最有力的源码证据是迁移实现 apps/desktop/src/main/migration/v01-to-v02.tsv0.1 时代的设计数据库designs.db通过迁移脚本被逐行展开为 workspace 目录与文件聊天记录被翻译成SessionManager管理的 JSONL注释行转换为锚定用户消息原库重命名为designs.db.v0.1.backup脚本头部注释明确写道v0.2 runtime does not bundle a SQLite driver——SQLite 仅存在于旧版迁移路径新架构不再引入。4. 随应用分发的依赖必须宽松许可MIT-compatible permissive随应用分发的运行时依赖、捆绑资源、脚手架scaffolds、技能skills、品牌引用与复制代码必须是 MIT 兼容许可仅用于工作流/CI 的发布工具可保留 copyleft 许可前提是未被 vendored / bundled / linked / copied 进产品且需在 PR 中说明理由。根 package.json 声明license: MITdocs/VISION.md 的锁定决策表同样将 License 锁定为 MIT并与Contributor agreement: DCO (Signed-off-by)配套。5. 重特性懒加载Lazy-load heavy featuresPPTX 导出、web 捕获、代码库扫描等重特性必须在首次使用时动态导入而非应用启动时加载。源码证据Provider 层的核心调用 packages/providers/src/index.ts 中complete()函数通过await import(mariozechner/pi-ai)惰性加载模型 SDK注释明确说明Lazy-imports pi-ai so the bundle is not loaded at app startupexporters包PDF / PPTX / ZIP的导出器同样按需引入见 packages/exporters/src 的独立模块结构。这与 docs/VISION.md v0.2 成功标准中内置脚手架、技能与品牌引用带许可元数据并懒加载的要求一致。6. 四项原则检查PRINCIPLES §5b兼容性Compatibility、可升级性Upgradeability、无膨胀No bloat、优雅Elegance四项检查每个 PR 描述必须四项全部标绿。该条目来自内部文档 PRINCIPLES公开检出中不可见时以文档描述为准执行规划细节可参考 docs/v0.2-plan.md。技术栈与约定单点锁定避免工具蔓延CLAUDE.md 以近乎白名单的方式锁定工具链防止 AI 代理或贡献者引入替代方案维度锁定选择仓库证据包管理器仅 pnpm禁止 npm / yarn根 package.jsonpackageManager: pnpm10.33.4pnpm-workspace.yaml 声明packages: apps/*, packages/*, website与onlyBuiltDependencies: [electron]构建编排Turborepoturbo.json 定义build/dev/test/typecheck/lint五类 task 及依赖关系Lint 格式Biome 单工具不用 ESLint Prettierbiome.json 配置 formatter 与 linter并在 overrides 中为apps/desktop/src/main/**、packages/core/src/**、packages/providers/src/**、packages/exporters/src/**、packages/shared/src/**追加noConsole: error测试Vitest单元 PlaywrightE2E新功能至少一个 Vitest 测试全仓库遍布*.test.ts/*.test.tsx如 apps/desktop/src/main/config.ts 配套的provider-settings.test.ts、migration/v01-to-v02.test.ts根脚本test先跑test:scripts再turbo run testTypeScriptstrict: true、verbatimModuleSyntax: true、moduleResolution: bundler禁止anytsconfig.base.jsonbiome.json 中noExplicitAny: error提交Conventional Commits由 commitlint 强制commitlint.config.cjs版本管理Changesets不手改CHANGELOG.md根 package.json 提供changeset/version-packages/release脚本Node22 LTS.nvmrcengines钉住根 package.jsonengines: { node: 22 }、types/node ^22模型层所有 LLM 调用经mariozechner/pi-ai应用代码禁止直接导入 Provider SDK缺能力时在packages/providers加薄扩展packages/providers/src/index.ts 头部注释App code MUST go through this package - never import a provider SDK directly模型层细节pi-ai 边界与 Provider 适配packages/providers是文档约束在代码中最集中的体现。该包以 pi-ai 为底座提供wire 类型抽象openai-chat/openai-responses/anthropic/openai-codex-responses四种传输协议见 packages/shared/src/config.ts 的WireApiSchema未知模型合成当 pi-ai 注册表里没有某模型时synthesizeWireModel()会按 wire baseUrl 合成一个PiModel使 DeepSeek、Ollama、LiteLLM、Azure 等自定义端点仍能路由到正确的 pi-ai 适配器OpenRouter 走synthesizeOpenRouterModel()reasoning 推断inferReasoning()根据 wire、baseUrl 与模型 ID 模式如claude-opus|sonnet-4、o1|o3|o4|gpt-[56]、deepseek-r\d、qwq决定是否开启推理并对 OpenAI 官方与非官方网关、DeepInfra 等做差异化兼容supportsDeveloperRole等能力扩展detectProviderFromKey()通过密钥前缀sk-ant-→anthropic、sk-or-→openrouter、AIza→google、gsk_→groq 等自动识别 Provider供引导流程免手选。这正是 CLAUDE.md缺能力就在packages/providers加薄扩展、而不是绕过 pi-ai这一约束的落地形态。前端栈锁定Locked文档对渲染端同样给出白名单式约束且与 apps/desktop/package.json 的依赖一一对应UI 框架React 19 Vite文档写 Vite 6当前依赖清单为vite ^7.3.5以仓库实际为准配套vitejs/plugin-react、electron-vite ^5.0.0样式Tailwind v4 CSS 变量token 收敛在 packages/ui应用代码禁止硬编码颜色/字体/间距状态Zustandzustand ^5.0.2禁止引入 Redux / Recoil / MobX路由路由数 ≤ 5 时用原生useState视图切换仅超过 5 才考虑 TanStack Router组件Radix UI 原语 packages/ui中 shadcn 风格封装可见 Button.tsx、Card.tsx、Tooltip.tsx 等图标仅lucide-react表单原生formFormData禁止 react-hook-form / formik动画Tailwind 过渡禁止 framer-motion / motion沙箱渲染器Electron iframesrcdoc esbuild-wasm import maps对应 packages/runtime 的 iframe 预览实现Electron最新稳定版但排除 41.x跨源隔离回归存储文件/会话支撑设计状态配置用 TOMLsmol-toml 序列化见 config.ts不用 electron-store blob。仓库布局包职责一览CLAUDE.md 给出的布局与当前检出基本吻合可对照实际目录核验apps/ desktop/ # Electron 应用壳main renderer preload packages/ core/ # 生成编排prompt → artifact 流水线、Agent 会话、工具清单 providers/ # pi-ai 适配器 自定义 Provider 扩展 runtime/ # 沙箱渲染器iframe 预览、overlay、source-edit 插桩 ui/ # 共享设计系统对齐 open-cowork token exporters/ # PDF / PPTX / ZIP 导出器懒加载 templates/ # 内置演示提示词与起步模板 shared/ # 类型、工具函数、zod schemaConfigV3、ProviderEntry 等 i18n/ # 多语言en / es / pt-BR / zh-CN 四套 locale docs/ # 愿景、路线图、原则、RFCgitignored仅内部 examples/ # Claude Design 公开演示的复刻 website/ # 项目官网Vitepress需要说明的差异CLAUDE.md 布局中列出的packages/artifacts在当前检出中不存在artifact 相关 schema 实际落在packages/shared如snapshot.ts、artifact.ts而packages/i18n与website是实际存在但 CLAUDE.md 未列的模块。以当前仓库实际目录为准。在此仓库做事的方式Doing tasks here文档给 AI 代理与人类贡献者列出了任务执行的硬性流程先读愿景任何非平凡改动先读docs/VISION.md与docs/PRINCIPLES.md内部文档不可用时省略不阻塞。planning-with-files任何超过 5 次工具调用或涉及 3 个以上文件的任务必须先在.claude/workspace/写计划文件再动手。git worktrees并行开发用 worktree禁止在同一 checkout 中同时跑两条无关功能分支。先查研究队列涉及沙箱 / 内联评论 / 滑块 / PPTX / pi-ai 能力的改动先确认RESEARCH_QUEUE.md内部文档中是否仍有未决研究。当前公开检出的研究文档见 docs/research/11-custom-sliders.md 与 docs/research/15-claude-design-prompts.md可了解该目录的文档形态。精简预算加依赖前先找轻量替代、考虑内联、询问能否用 peer dep。UI 必须用packages/uitokentoken 缺失先补到packages/ui不在应用代码硬编码。禁止为未来设计的抽象三行相似代码没问题没有两个真实调用方就不要引入工厂、插件系统或配置驱动分发。注释只解释 why代码里不写解释做了什么的注释命名应该自解释只在令人意外处注释原因。磁盘数据全部带 schemaVersion配置文件、SQLite 表、IPC payload、导出 bundle 格式都要有schemaVersion字段以便迁移。源码证据非常充分ConfigV3Schema的version: 3、IMAGE_GENERATION_SCHEMA_VERSION 1、STORED_DESIGN_SYSTEM_SCHEMA_VERSION 1均在 packages/shared/src/config.tswriteConfig()写盘前先ConfigV3Schema.parse()兜底注释还回溯了 v0.1 的教训app wont reopen after deleting all providers事故正是写入activeModel后下一次启动解析拒绝导致的——空activeProvider/activeModel现在被显式声明为合法无活跃 Provider状态并用superRefine校验两者的配对关系。应避免的事项Things to avoid文档列出 8 条明确禁令几乎每条都有机制层面的强制执行❌ 把node_modules、构建输出、.env*提交进 git——biome.json 的files.includes已排除dist、node_modules、coverage、.turbo等❌ 在应用代码中导入 Provider SDKanthropic-ai/sdk、openai、google/genai——由 providers 包头注释与代码评审双重约束❌ 在 SDK 层 mock LLM——必须在core边界 mock当前仓库packages/core/src的测试如 agent.test.ts、generate.test.ts 均针对 core 边界设计❌ 未经显式 opt-in 就加入跟踪、分析或自动更新——与 BYOK/本地控制原则呼应❌ 硬编码任何路径——必须尊重 XDG 基目录 / Electronapp.getPath()config.ts 的defaultConfigDir、logger.ts 的app.getPath(logs)都是范例❌ 主进程同步 I/O——config.ts / logger.ts 均使用node:fs/promises或异步传输❌ 在apps/desktop/src/main/**、packages/core/**、packages/providers/**、packages/exporters/**、packages/shared/**中使用console.*——必须用getLogger()主进程或注入的CoreLoggercore/providers/exporters并由 Biome 的noConsole: error规则强制拦截。常用命令速查CLAUDE.md 给出的命令在根 package.json 中均有对应脚本可直接在仓库根目录执行pnpm i # 安装依赖使用 Corepack 钉住的 pnpm pnpm dev # 启动 Electron Vite 渲染器turbo 并行 dev pnpm test # Vitest watch根脚本先跑 test:scripts 再 turbo run test pnpm test:e2e # Playwright 端到端 pnpm lint # biome check . pnpm typecheck # tsc --noEmit 全 workspaceturbo run typecheck pnpm build # 产出签名 Mac/Win 安装包turbo run build pnpm changeset # 记录一次值得发布的变更此外根脚本还提供几个文档与验证命令pnpm docs:dev/docs:build/docs:preview构建 website 官网、pnpm smoke运行 scripts/smoke-models.ts 做模型连通性冒烟配置见 scripts/smoke-models.toml、pnpm lint:fixBiome 自动修复、pnpm formatBiome 格式化、pnpm release构建 changeset publish发布流程。桌面应用自身的构建脚本在 apps/desktop/package.jsondev、build、package、build:dir、release、typecheck双 tsconfig 检查、testVitest。未决问题与研究方法文档最后提醒涉及沙箱、内联评论、滑块、PPTX、pi-ai 能力的问题可能仍在研究中不要过早锁定答案。当前公开仓库的 docs/research 目录保存了此类研究文档如滑块定制 11-custom-sliders.md、Claude Design 提示词研究 15-claude-design-prompts.md而 docs/plans 目录保留了设计文档如 2026-04-23-v0.2-agentic-design-loop-design.md。对贡献者而言遇到涉及这些能力面的改动先查研究文档再动手是文档明确推荐的做法。小结这份手册如何让 AI 代理不出格把 CLAUDE.md 与仓库源码对照阅读能清晰看到一条设计主线用文档锁定决策用代码强制执行。BYOK 与 0600 文件权限、本地优先与 JSONL/TOML 存储、pi-ai 单点模型层、Biome 的 noConsole 强制、ConfigV3 的 schema-version 迁移——每一句话背后都有可读的实现与测试佐证。对任何接入该仓库的 AI 编码代理而言遵守这份手册就等于遵守仓库的架构契约对开发者而言它就是理解 open-codesign 工程决策的最佳入门地图。赞分享人工智能AI 应用桌面应用【免费下载链接】open-codesignOpen-source Claude Design alternative. One-click import your Claude Code / Codex API key. Prompt → prototype / slides / PDF. Multi-model (Claude, GPT, Gemini, Kimi, GLM, Ollama). BYOK, local-first, MIT.项目地址https://gitcode.com/gh_mirrors/op/open-codesign点击查看免费下载相关推荐Buefy 仓库协作规范解析面向 AI 编码助手的 CLAUDE.md 实战指南Buefy 仓库协作规范解析面向 AI 编码助手的 CLAUDE.md 实战指南 Buefy 是一个基于 Bulma CSS 的 Vue 3 轻量级 UI 组UI组件前端dbt v2Rust仓库的 AI 编码代理协作规范从 CLAUDE.md 读懂 dbt-core 的工程约定与代码地图dbt v2Rust仓库的 AI 编码代理协作规范从 CLAUDE.md 读懂 dbt core 的工程约定与代码地图 dbt v2.0 是 dbt 官方数据工程ETLCLI面向 AI 编码代理的 Lepton 仓库开发指南AGENTS.md 与 CLAUDE.md 的协作规范与实践面向 AI 编码代理的 Lepton 仓库开发指南AGENTS.md 与 CLAUDE.md 的协作规范与实践 Lepton 是一个基于 GitHub Gis桌面应用开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑