AI 辅助构建静态内容网站实践:从零到壹

By: Hunter Huang

实践是最佳策略。

这个过程完全是一个从零开始的尝试,用大约100个字左右的需求描述,让 Gemini Code AssistVSCODE 的开发环境中,帮助我完成了需求文档、设计文档和任务文档的编写。然后通过手动每个任务的执行,完成代码生成、测试、修复 BUG 等。大约消耗了两天时间完成了一个可以使用的项目。

项目实现了最简单的 Markdown 格式文章的展示,只有两个页面,首页展示文章列表,点击文章后进入文章详情页。

工具链的使用

  • Gemini Code Assist 和 VSCODE 深度集成,是比较好的能够理解项目上下文的辅助 AI,但是不稳定,容易卡住。
  • Gemini Cli 浅度集成,在上下文组织结构清晰的情况下,可以很好地完成单个任务。
  • 用 Chatgpt / Gemini / Grok / Copilot 的网页版作为外部研究工具对单点离散需求进行研究,手工采用结果。

需求/设计/任务文档构建

构建一个目录用于保存需求/设计/任务文档,并且不断优化需求/设计/任务文档的内容格式,可以使得LLM对于目标的理解和上下文组织结构更加清晰,有助于整体目标和子目标的一致性。

某个任务说明的例子:
[T1.3] 创建基础内容与布局:<状态:未开始>

- **描述:** 创建一个 Markdown 文件作为内容源,并为其创建一个最基础的布局文件。该文件内容标题:‘构建一个内容网站的最佳实践’。要求文章字数不少于1000字,Markdown 格式中主要的元素都在文章中出现。
- **完成标准 (DoD):**
    1. 在 `src/content/posts/` 目录下至少存在一个 `.md` 文件(例如 `first-post.md`)。文章采用中文和英文混合排版,文章标题是构建一个内容网站的最佳实践。
    2. 在 `src/layouts/` 目录下创建一个 `BaseLayout.astro` 文件。
    3. Markdown 文件能够通过该布局在本地开发环境中正确渲染显示。

任务执行和代码生成

代码生成需要用不断优化的提示词,使得每次生成都基于一个特定的子任务。

对于子任务执行的提示词要遵循以下的基本原则:

  • 要求提示词理解项目整体目标和子任务特定目标
  • 评估需求是否存在不清晰的地方,是否和整体目标以及其它任务存在冲突
  • 首先要分析子任务的需求,组织完成目标的方案计划和步骤
  • 经过人类工程师审核确认方案计划后,执行方案计划

项目文件结构的组织

这个点蛮重要,如果需要 Gemini Code Assist 和 Gemini CLI 协同能够理解项目,主要是依赖于文件结构的组织,其中对于Gemini.md 的作用需要做更多的研究分析。项目文件结构的组织,也意味着上下文的结构组织是基于这个文件系统的。

不断增长的需求需要在一个目录下统一管理,每个子需求单独成为子目录。在子目录中保存子需求的 PRD/DESIGN/TASK 文档。

问题

  • 如何让外部的 LLM 模型网站的对话能更多了解项目上下文,使得针对性进行方案和思路研究的时候,给出的方案和答案更加准确。
  • 如何让过程闭环:需求-设计-任务-编码和执行-测试-需求理解迭代,这个过程能够不断进行闭环执行。