Files
2026-06-06 10:40:48 +08:00

3.3 KiB

Best Practices — 从实际任务提取

来源: reflections/ + 日常开发经验 每次任务完成后更新 Promotions: 1st→reflection, 2nd→pattern, 3rd→here, 4th→AGENTS.md checklist, 5th→hard rule


代码质量

  1. 写完即测,不等集成 — 每个模块 run 一次确认输出正确
  2. 边界用例覆盖 — 空输入、超大输入、非法输入都要测
  3. 零依赖优先 — 核心算法不自带 npm 依赖(例外: better-sqlite3 等已安装的稳定库)
  4. CLI + Library 双接口node module.jsrequire('./module') 都要能用
  5. passthrough 是默认 — 任何操作失败时返回原始输入,不丢数据

架构设计

  1. Phase Isolation — 分析/设计/实现三阶段不交叉
  2. 先 MVP 再扩展 — 1-3h 出第一个可用版本,验证后扩展
  3. 策略可插拔 — 用分发模式,新增策略不碰核心逻辑
  4. 降级路径明确 — 每个操作至少 2 条降级路径
  5. 配置可覆盖 — 全局默认 → 项目覆盖 → 运行时参数

调试与排查

  1. FK 约束用 ON CONFLICT DO UPDATE — SQLite 的 REPLACE = DELETE+INSERT
  2. 检测需多重信号 — 启发式规则必须 2+ 个信号同时匹配
  3. WAL 模式开 — 多进程读不阻塞写
  4. 大文件分批处理 — 每 250 文件回收一次 WASM/内存
  5. stderr 和 stdout 分离 — 元数据用 stderr,数据用 stdout

JavaScript / TypeScript 陷阱

  1. || vs ?? — 用 ?? 处理数字 0value || default 把 0/''/false 当 falsy。数字类用 value ?? default。已犯 2 次(Agent Evolution FK索引 + Cross-Agent Certification 评分排序)
  2. 模板字面量反引号 — 模板内嵌反引号用 ` 转义或改用字符串拼接。不输出裸反引号到生成代码
  3. 类型单数化 — entity 复数→单数(Albums→Album, Pets→Pet),但不碰 status/bus 等不可变词根

Generator / Builder 陷阱

  1. Next.js 路径:app/ 不是 src/app/ — Next.js App Router 默认 pages in app/。生成器必须输出到 app/ 目录
  2. DDL CONSTRAINT 泄露 — schema.ts 生成时 PRIMARY KEY / FOREIGN KEY / CONSTRAINT 行不能被解析为 TS interface 字段
  3. CreateInput 完整性 — generateTypes 必须包含所有实体(包括 User)→ CreateUserInput 不能缺失
  4. JSX 三元嵌套{a ? {b} : {c}} 错误。改为 {a ? b : c}{a ? (<Comp />) : null}

Agent 编排

  1. 子 agent 并行分析 — 3 个项目同时 spawn,2-3 分钟完成
  2. 子 agent 用 Pro 模型 — 代码/方案决策用 DeepSeek V4 Pro
  3. 任务描述要包含完整输出路径 — 子 agent 不需要父 agent 上下文也能工作
  4. 用 sessions_yield 等完成 — 不 poll loop

CI / Release

  1. Exit code 规范 — PASS/WARN→0, FAIL→1。不要 PASS 也 exit 1
  2. 向后兼容 — 新增参数用 optional,不改既有函数签名。所有 PR 遵守零修改约束

记忆管理

  1. 每完成一个 Phase 写 daily — 不等到全部做完
  2. 提取模式后立即写 patterns/ — "mental notes 不存活"
  3. MEMORY.md 尽量不动 — 在缓存线以上,每次改动全缓存爆炸
  4. Reflection 必须结构化 — 含 Pattern Class + Future Trigger + Checklist,禁止"以后注意"