← 返回目录

第 19 卷

第 19 / 28 卷日期:

【agent 1 - 前端UI】

基于AGENTS.md中的设计方案,实现前端所有页面:

  1. 首页 (src/app/page.tsx)
  • URL输入框(支持粘贴后自动触发)
  • 提交按钮
  • 加载状态动画
  • 摘要结果展示(三种长度切换)
  1. 历史记录页 (src/app/history/page.tsx)
  • 摘要列表,按时间倒序
  • 点击展开详情
  • 搜索过滤
  1. 布局组件 (src/app/layout.tsx)
  • 顶部导航栏
  • 响应式布局

用Tailwind CSS,风格简洁干净。不需要实际调用API,用mock数据把界面先做出来。接口约定:

  • POST /api/summarizebody: { url: string }
  • GET /api/history
  • GET /api/history/:id

最后那段接口约定是给并行准备的:先约定接口,各做各的,最后拼起来。不约定的话,agent 1可能调 /api/summary,agent 2实现的是 /api/summarize,合并时就要改一堆东西。

同样的方式创建agent 2和agent 3:

【agent 2 - 后端API】

实现所有API路由:

  1. POST /api/summarize
  • 接收 { url: string }
  • 用fetch抓取文章内容,解析出正文(去掉导航、广告等)
  • 调用OpenAI Responses API(模型用gpt-6-luna,量大便宜)生成三种摘要:
  1. one_line: 一句话总结(<50字)
  2. short: 短摘要(100-200字)
  3. detailed: 详细摘要(300-500字)
  • 存入数据库
  • 返回摘要结果
  1. GET /api/history
  • 返回最近50条记录(分页)
  1. GET /api/history/[id]
  • 返回单条详情

OpenAI API Key从环境变量OPENAI_API_KEY读取。

数据库操作通过src/lib/db.ts暴露的函数调用。

数据库函数约定:

  • insertSummary(data): 插入一条记录
  • getSummaries(page, limit): 分页查询
  • getSummaryById(id): 查单条

【agent 3 - 数据库】

实现数据库层:

  1. Schema定义 (src/lib/schema.ts)
  • summaries表:id, url, title, content, one_line, short, detailed, created_at
  1. 数据库连接 (src/lib/db.ts)
  • 导出Drizzle实例
  • 导出CRUD函数:
  1. insertSummary(data)
  2. getSummaries(page, limit)
  3. getSummaryById(id)
  4. deleteSummary(id)
  5. 迁移脚本 (drizzle.config.ts + scripts/migrate.ts)
  • 生成并运行迁移
  1. 写单元测试验证CRUD操作正确

SQLite文件放在项目根目录的data/目录下。

三个agent同时开始工作。你可以在App的任务列表里看到它们各自的进度。每个agent在自己的git worktree里操作,互不干扰。

提示:并行开发最容易出问题的地方是接口对不上。开三个agent之前,先在AGENTS.md里把接口约定写清楚,字段名、类型、返回格式越具体越好。

等agent干活的时候你并不需要干等。可以做几件事:

准备环境变量。创建 .env.local 文件,写入OpenAI API Key。

检查先完成的agent。数据库层通常最先完成,因为代码量最少。它完成后,看一眼schema是否合理、测试是否通过。

准备部署配置。在Vercel上创建项目,配置好环境变量。等代码合并后可以直接部署。

阶段四:集成和测试(CLI + Review)

三个agent都完成了。现在要把三条分支的代码合并到一起。

回到CLI。先看看三个分支的状态:

git branch # * main #feat/frontend-ui #feat/backend-api #feat/database

合并顺序是先底层,再上层:API依赖数据库,前端依赖API,所以是database → backend-api → frontendui。

git merge feat/database git merge feat/backend-api git merge feat/frontend-ui

如果运气好,三次merge都没冲突。但更常见的情况是backend-api和database会有冲突,因为两者都会动 src/lib/ 下的文件。遇到冲突,让Codex来解:

合并feat/backend-api时遇到冲突,帮我解决。

原则:数据库层以feat/database的实现为准,API层以feat/backend-api为准。

合并完成后跑一遍 npm run dev,多半会报错:三个agent各自用mock数据开发,真正对接时类型可能不匹

配、导入路径可能不对。

这时候用Codex的 /review 命令做一次代码审查:

全站分卷索引 · 28 卷
  1. 1第 1 卷
  2. 2第 2 卷
  3. 3第 3 卷
  4. 4第 4 卷
  5. 5第 5 卷
  6. 6第 6 卷
  7. 7第 7 卷
  8. 8第 8 卷
  9. 9第 9 卷
  10. 10第 10 卷
  11. 11第 11 卷
  12. 12第 12 卷
  13. 13第 13 卷
  14. 14第 14 卷
  15. 15第 15 卷
  16. 16第 16 卷
  17. 17第 17 卷
  18. 18第 18 卷
  19. 19第 19 卷
  20. 20第 20 卷
  21. 21第 21 卷
  22. 22第 22 卷
  23. 23第 23 卷
  24. 24第 24 卷
  25. 25第 25 卷
  26. 26第 26 卷
  27. 27第 27 卷
  28. 28第 28 卷