Files
shop_helm/AGENTS.md
T

111 lines
5.6 KiB
Markdown

# AGENTS.md
> ShopHelm 的仓库级 AI coding agent 入口。进入仓库后先读本文,再读 [`docs/00-ai-start-here.md`](docs/00-ai-start-here.md)。
## 项目定位
ShopHelm(店小航)是面向小团队跨境卖家的 Windows 本地运营工作台。当前只交付三条业务主线:
1. 多店铺运营台。
2. 商品运营助手,其中包含单张商品图叠加预览和导出。
3. 客服话术与跟进助手。
项目采用 Go + Gio、SQLite 和外部 Chrome。它不是完整 ERP,不是浏览器“防关联”产品,也不以全自动 RPA 为核心。
## 事实优先级
发生冲突时按以下顺序处理:
1. 用户在当前会话中的最新明确指令。
2. 本文件的仓库级执行与安全规则。
3. [`docs/02-requirements.md`](docs/02-requirements.md) 的产品范围和验收标准。
4. [`docs/03-tech-stack.md`](docs/03-tech-stack.md)、[`docs/04-architecture.md`](docs/04-architecture.md)、[`docs/api.md`](docs/api.md) 和 [`docs/routes.md`](docs/routes.md) 的技术事实。
5. [`docs/06-tasks.md`](docs/06-tasks.md) 的任务拆分。
6. [`docs/current-state.md`](docs/current-state.md) 和代码、测试所反映的当前现实。
若计划文档与可运行代码冲突,先在 `current-state.md` 记录差异,再确认应修文档还是修实现;不得静默选择一边。
## 必读顺序
每次开始编码前按顺序读取:
1. `AGENTS.md`
2. `docs/00-ai-start-here.md`
3. `docs/01-vision.md`
4. `docs/02-requirements.md`
5. `docs/03-tech-stack.md`
6. `docs/04-architecture.md`
7. `docs/05-coding-rules.md`
8. `docs/api.md` 和 `docs/routes.md` 中与任务相关的部分
9. `docs/06-tasks.md`
10. `progress.md`
11. `docs/current-state.md`
## 固定开工流程
1. 用 `pwd` 确认仓库根目录。
2. 读取 `progress.md` 和 `docs/current-state.md`,恢复当前事实。
3. 若存在 `.git`,运行 `git status --short --branch` 和 `git log --oneline -5`;若尚未初始化 Git,以 `current-state.md` 为准。
4. 若存在 `go.mod`,运行 `./init.ps1`;若不存在,只允许领取负责初始化项目的 T-001。
5. 基线失败时先修基线,不叠加新功能。
6. 从 `docs/06-tasks.md` 领取第一个依赖均为 `DONE` 的 `TODO` 任务。
## 任务纪律
- 单 agent 模式下一轮只做一个任务。
- 开始前把任务改为 `DOING`;同一时间最多一个 `DOING`。
- 只修改完成该任务所需的代码和文档,不顺手实现 Backlog。
- 验收和验证全部通过后才能改为 `DONE`。
- 把真实命令、结果、阻塞和关键决策追加到 `progress.md`,并覆盖更新 `docs/current-state.md`。
- 会话结束前执行 [`docs/clean-state-checklist.md`](docs/clean-state-checklist.md)。
- 多 agent 并发时切换到 [`docs/tasks/README.md`](docs/tasks/README.md) 的一任务一文件模式。
## 业务与安全硬边界
- 密码、Cookie、token、代理密码不得明文进入 SQLite、日志、测试夹具或文档。
- MVP 不保存平台密码;依靠独立 Chrome profile 保留用户登录会话。
- `user-data-dir` 只表示会话和缓存隔离,不得宣传或实现“防关联”“反指纹”能力。
- Chrome 必须通过 `exec.Command` 参数启动,不拼接 shell 命令。
- 删除或归档店铺时不得自动删除对应 profile 目录。
- 图片导出默认写入独立目录,不覆盖原图;覆盖必须由用户明确选择并二次确认。
- 不绕过验证码、平台风控、权限校验、限流或反爬机制。
- 不实现刷单、刷评、批量未确认发消息、批量爬取或自动修改平台数据。
- 新增任何会改变第三方平台数据的自动化前,必须先补需求、合规边界、dry-run、人工确认、审计和失败恢复设计。
## 工程规则
- 标识符、包名和文件名使用英文;产品界面和项目文档默认使用简体中文。
- 遵守 `internal/domain -> internal/application -> internal/infrastructure/platform -> internal/ui` 的依赖方向。
- Gio 的 frame/layout 回调中不得做数据库、网络、文件或进程阻塞操作。
- UI 控件状态必须持久化在页面状态结构中,不得在每帧临时创建导致状态丢失。
- 数据库 schema 只能通过追加 migration 演进,不得修改已经发布的 migration。
- 文件和数据库写入需处理部分失败;备份、恢复和图片导出使用临时文件加原子替换。
- 新增依赖前先更新 `docs/03-tech-stack.md`,说明用途、许可证、替代方案和锁定版本。
- 默认优先标准库和现有项目组件,不为未来可能需求提前抽象。
## 文档同步规则
| 变化 | 必须同步 |
| --- | --- |
| 产品范围或验收变化 | `02-requirements.md`、`06-tasks.md` |
| 依赖、Go/Gio 版本或命令变化 | `03-tech-stack.md`、`00-ai-start-here.md`、`current-state.md`、`init.*` |
| 模块边界或数据模型变化 | `04-architecture.md`、`api.md`、相关 migration 和任务 |
| 页面或导航变化 | `routes.md`、相关需求和任务 |
| 代码现实或下一任务变化 | `current-state.md`、`06-tasks.md`、`progress.md` |
## 对话约定
- 用户输入 `grill me:` 或 `grill:` 时,执行反方评审:先查事实,指出需求、技术、商业和合规上的薄弱点,只讨论,不修改代码或文件,除非用户同时明确要求落地修改。
## 最低验证
代码初始化后,任务结束前至少运行:
```powershell
go test ./...
go vet ./...
go build -o build/shophelm.exe ./cmd/shophelm
```
涉及 Chrome、图片导出、备份恢复或 Gio 交互时,还必须执行任务中写明的手工 smoke,并在 `progress.md` 记录输入、观察结果和环境。