App-templates: LLM auto-selects project template based on user requirement
- Add webapp template (FastAPI + SQLite) with INSTRUCTIONS.md and setup.sh - select_template() scans templates, asks LLM to match; apply_template() copies to workspace - ensure_workspace() runs setup.sh if present, otherwise falls back to default venv - INSTRUCTIONS.md injected into planning and execution prompts - Fix pre-existing clippy warning in kb.rs (filter_map → map) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
72
doc/templates.md
Normal file
72
doc/templates.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# App Templates(项目模板)
|
||||
|
||||
## 概述
|
||||
|
||||
预置的项目目录模板。创建项目时,LLM 根据用户需求自动选择合适的模板(或不用模板),将模板内容复制到工作区,给 agent 明确的技术栈约束和起点。
|
||||
|
||||
用户不需要手动选模板——只写需求,模板选择在后端透明完成。
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
app-templates/
|
||||
└── webapp/ # 模板 ID = 目录名
|
||||
├── template.json # 元信息(不会复制到工作区)
|
||||
├── INSTRUCTIONS.md # 注入 agent prompt 的指令
|
||||
└── scripts/
|
||||
└── setup.sh # 工作区初始化脚本
|
||||
```
|
||||
|
||||
## 模板文件说明
|
||||
|
||||
### template.json
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Web 应用",
|
||||
"description": "FastAPI + SQLite 的 Web 应用",
|
||||
"match_hint": "需要前后端、Web 界面、HTTP API、数据库的应用类项目"
|
||||
}
|
||||
```
|
||||
|
||||
- `name` / `description`: 人类可读的描述
|
||||
- `match_hint`: LLM 判断是否匹配时的依据
|
||||
|
||||
### INSTRUCTIONS.md
|
||||
|
||||
复制到工作区后,agent 每次 LLM 调用时会读取并追加到 system prompt 末尾(规划和执行阶段都会注入)。内容是技术栈约定、项目结构、启动方式等。
|
||||
|
||||
### scripts/setup.sh
|
||||
|
||||
工作区初始化脚本,在 `ensure_workspace` 阶段执行。如果工作区没有此文件,走默认逻辑(`uv venv .venv`)。应幂等。
|
||||
|
||||
## 选择流程
|
||||
|
||||
```
|
||||
用户输入需求
|
||||
→ select_template()
|
||||
1. 扫描 templates_dir() 下所有子目录的 template.json
|
||||
2. 构造 prompt,列出所有模板的 {id, name, description, match_hint}
|
||||
3. LLM 返回模板 ID 或 "none"
|
||||
→ apply_template() # 如果选中了模板
|
||||
复制模板目录到工作区(排除 template.json)
|
||||
→ ensure_workspace()
|
||||
检测 scripts/setup.sh → 有则执行,无则默认 venv
|
||||
→ run_agent_loop()
|
||||
读取 INSTRUCTIONS.md,注入 planning/execution prompt
|
||||
```
|
||||
|
||||
## 路径
|
||||
|
||||
- 生产环境(Docker): `/app/templates/`
|
||||
- 本地开发 fallback: `app-templates/`
|
||||
|
||||
`Dockerfile` 中 `COPY app-templates/ ./templates/`。
|
||||
|
||||
## 添加新模板
|
||||
|
||||
1. 在 `app-templates/` 下建子目录,目录名即模板 ID
|
||||
2. 创建 `template.json`(必须有 name, description, match_hint)
|
||||
3. 创建 `INSTRUCTIONS.md`(agent 指令)
|
||||
4. 可选:创建 `scripts/setup.sh`(初始化脚本,需 `chmod +x`)
|
||||
5. 不要放代码骨架——让 agent 根据需求 + INSTRUCTIONS.md 自己生成
|
||||
Reference in New Issue
Block a user