阅读材料: 第5部分。项目初始设置

模块「第5部分。项目初始设置」中第 1 / 5 节课
您正在未登录状态下查看课程。 请登录,以保存进度并参加测试。

第五部分. 项目初始设置

初始设置不是生成整个应用程序。而是创建一个最小化、清晰的基础,在这个基础上可以安全地编写宪法和第一个功能规范。在教学项目中,基础将是一个带有 Git 的 TypeScript 项目,但不包含产品逻辑。

阶段目标

完成初始设置后,你应该拥有:

  • Git 仓库;
  • 包含产品简要愿景的 README.md
  • QWEN.md
  • .qwen/settings.json
  • 最小化的 TypeScript 模板;
  • 空的或几乎空的 src/index.ts
  • package.json
  • 启用严格模式的 tsconfig.json

暂时不要添加 Hono、SQLite、Vitest 或页面。这些决策应该进入 specs/tech-stack.md 和路线图,然后通过功能规范来实现。

命令

mkdir agentclinic
cd agentclinic
git init
npm init -y
npm install -D typescript @types/node
npx tsc --init
mkdir -p src specs .qwen
touch src/index.ts

打开 tsconfig.json 并确保严格模式已启用:

{
  "compilerOptions": {
    "strict": true
  }
}

package.json 中添加:

{
  "scripts": {
    "typecheck": "tsc --noEmit"
  }
}

创建 .gitignore,避免意外提交构建产物和本地密钥:

node_modules/
dist/
build/
.env
.env.*

# 本地 SQLite 记忆(参见第19部分)
.qwen/memory/agent-memory.db
.qwen/memory/agent-memory.db-shm
.qwen/memory/agent-memory.db-wal

# IDE
.idea/
.vscode/

不要将 .qwen/settings.json 的配置放入 .gitignore — 团队需要它。但要检查其中没有密钥;密钥应该使用环境变量和 .env

检查:

npm run typecheck
git status

会话开始时应该给代理什么

每次启动 Qwen Code 都是一个新的窗口。如果每次代理都自己猜测要读什么,你会浪费部分请求来让它了解情况。更可靠的做法是提前确定它在开始时应该读取哪些文件:

  • QWEN.md — 代理在仓库中的行为规则。
  • specs/mission.mdspecs/tech-stack.mdspecs/roadmap.md — 项目宪法。
  • 当前功能规范的文件夹,如果正在进行功能开发:specs/<YYYY-MM-DD-feature>/

这与请求中的 @file 是同样的理念,但你把它提升到习惯和 QWEN.md 的层面。其中一个选择是在 QWEN.md 中添加一个块:

开始任何工作前,请阅读:
- README.md
- specs/mission.md、specs/tech-stack.md、specs/roadmap.md
- 活跃的功能规范,如果请求中指定了。
不要猜测这些文件的内容:如果它们不存在,请说明。

在企业文献中,这种做法被称为 Knowledge Priming — 会话开始时的「知识加载」。名字不重要;重要的是代理在第一个动作之前已经知道三件基本事情:项目为什么存在、使用什么技术栈、当前处于什么阶段。

最小化 README

# AgentClinic

AgentClinic 是一家虚构的心理健康诊所,AI 代理在这里从与人类工作的压力中恢复。

项目参与者的期望:
- 工程团队想要一个可靠的 TypeScript 教学应用;
- 产品团队想要代理、疾病、治疗、预约、反馈和评论;
- 营销团队需要一个现代浏览器体验,带有令人难忘的讽刺语气。

这个 README 不是作为最终文档,而是作为代理的项目参与者初始期望。在下一部分,Qwen Code 将阅读它并在创建宪法之前提出问题。

第一次提交

git add README.md QWEN.md package.json package-lock.json tsconfig.json src .qwen
git commit -m "Initialize AgentClinic scaffold"

如果你还不想提交 .qwen/settings.json,请检查其中是否有密钥。包含模型名称的配置通常是可以接受的,密钥则不行。

通过 Qwen Code 验证初始设置

运行:

qwen

输入:

检查这个仓库。
不要写入文件。
报告:
1. Git 是否已初始化;
2. TypeScript 严格模式是否已启用;
3. `QWEN.md` 是否充分设定了 SDD 规则;
4. 在创建 specs/mission.md、tech-stack.md 和 roadmap.md 之前还缺少什么。

如果 Qwen 建议立即安装框架或编写应用程序,请阻止它。在宪法之前这样做为时过早。

为什么不立即写代码

在常规的代理驱动开发中,初始设置经常变成「构建应用程序」。在 SDD 中,它应该是枯燥的。它的任务是给代理一个工作空间和 Git 边界,而不是做出产品决策。

比较:

构建 AgentClinic 应用程序。

和:

为 SDD 准备仓库。
暂时不要选择 Web 框架。
不要实现产品路由。

确保 TypeScript 和 Git 已准备就绪。

第二个请求将决策保留在正确的阶段。

实践

  1. 执行初始设置。
  2. 运行 npm run typecheck
  3. 询问 Qwen Code 关于仓库的准备情况。
  4. 只修复初始设置的阻塞性问题。
  5. 提交代码。

检查问题

  1. 为什么初始设置不应该包含产品功能?
  2. 代理在创建宪法之前需要哪些文件?
  3. 在第一个功能分支之前应该提交什么?
我的笔记
0 / 10000

笔记保存在当前浏览器中。在其他设备上将不会显示。

课程菜单

课程

基于 Qwen Code CLI 的规范驱动开发
进度 0 / 135