docs: establish project harness baseline

This commit is contained in:
QiuSW
2026-07-25 16:59:06 +08:00
commit 50a6d8ee5b
30 changed files with 2742 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
# 任务文件
> 默认一任务一文件:`docs/tasks/T-<编号>.md`。路线图只负责建议拆分,不跟踪状态。
## 命名和状态
- 文件名:`T-001.md`;细分任务可使用 `T-001a.md`。
- 状态:`TODO`、`DOING`、`DONE`、`BLOCKED`。
- 路线图已有编号时沿用;新编号不能覆盖已存在文件。
- `_template.md` 不是任务。
## 领取规则
1. 每个 agent 同时最多一个 `DOING` 任务。
2. 领取编号最小、状态为 `TODO`、依赖全部 `DONE` 的任务。
3. 开工前写清 `write_paths`;和其他活跃任务有路径重叠时不得并行。
4. 仓库启用 Git 后记录默认分支头 `context_ref` 和工作分支;未启用时保持 `null`。
5. 状态改为 `DOING` 后再修改生产代码。
6. 验收全部有证据后改为 `DONE`;无法继续时标 `BLOCKED` 并写清所需外部输入。
## 任务文件结构
```yaml
---
id: T-101
title: 一句话任务名
phase: 1
deps: [T-001]
status: TODO
created: 2026-07-25
context_ref: null
work_branch: null
write_paths:
- docs/tasks/T-101.md
- android-buyer/path/**
---
```
正文必须包含:
- 问题/背景
- 关联需求与交互
- 方案
- 验收要点
- 边界
- 执行记录
## 验证证据
执行记录至少写:
- 修改的文件。
- 实际运行的完整命令。
- 结果是成功、失败还是未运行。
- Android smoke 的设备、Android、App 和拼多多版本。
- 未验证范围和 blocker。
- 涉及自动化时的安全停止证据。
“代码写完”“看起来可以”不能作为 `DONE` 证据。
## UI 和高风险任务
- P0 UI 首次实现前应有 `docs/design/` 原型并对齐 US/IX。
- 拼多多真实自动化任务必须在受控测试账号和设备进行。
- 验证码、风控、支付或未知页面只验证“能够识别并停止”,不验证绕过。
- 任何扩大候选数量、提交订单或支付的任务,必须先更新需求并完成单独评审。
## 共享文档
- 单任务执行记录只改自己的任务文件。
- 启动命令、目录或 blocker 变化时可以同步 `current-state.md`。
- 需求、架构或 API 事实变化时,任务 `write_paths` 必须提前列出对应文档。
- `progress.md` 只记录项目级大事记。
+105
View File
@@ -0,0 +1,105 @@
---
id: T-001
title: 初始化 Git 并接入 Roubao Android 基线
phase: 0
deps: []
status: DOING
created: 2026-07-25
context_ref: null
work_branch: main
write_paths:
- docs/tasks/T-001.md
- android-buyer/**
- .gitignore
- README.md
- init.ps1
- init.sh
- docs/00-ai-start-here.md
- docs/03-tech-stack.md
- docs/04-architecture.md
- docs/05-coding-rules.md
- docs/current-state.md
---
## 问题 / 背景
当前仓库只有 Harness 文档,不是 Git 仓库,也没有 Roubao 源码、Gradle Wrapper 或
可验证的 Android 命令。所有自动化、VLM 和后台任务都依赖一个可复现的 Android
基线;在基线完成前不能开始拼多多业务修改。
预期上游已经从真实仓库完成远端核实:
- 仓库:`https://github.com/Turbo1123/roubao`
- 许可证:MIT
- 默认分支:`main`
- 核实时 `main` commit:`c8a6d7f03422eb01744b01f3ee77bf7757741f7e`
- 独立无障碍开发分支:`roubao2.0+AccessibilityService`,核实时 commit
`5b114c0a9476c359b27cfe994743fc7beb0a3554`
- 构建基线:Android Studio Hedgehog+、JDK 17、SDK 34、Gradle 8.2、AGP 8.2.0、
Kotlin 1.9.20
这些是接入前核实结果,源码仍未导入、本机仍未构建。上游 `main` 使用 Shizuku,
AccessibilityService 位于独立开发分支;接入前要先比较分支,不能只按分支名称选型。
## 关联需求与交互
- 功能:为 F-003 至 F-007 提供实现基线,本任务不实现业务功能。
- 用户故事:不适用。
- 交互:不适用。
- 架构:`04-architecture.md` 的 Android 模块。
## 方案
1. 确认当前目录应作为新仓库后初始化 Git;远端地址未知时不擅自创建远端。
2. 重新读取远端分支头,比较 `main` 与无障碍开发分支;确定以哪个 commit 为导入
基线,并记录采用或移植无障碍实现的理由。
3. 将需要二次开发的 Android 源码接入 `android-buyer/`,保留许可证和上游来源说明。
4. 不做拼多多 Skill、VLM 业务和采购 UI 修改,只处理可构建所需的最小兼容问题。
5. 运行 Gradle Wrapper 的真实构建和已有测试;有测试设备时安装并启动原始 App。
6. 把真实目录、最终依赖版本、构建命令、上游 commit 和 blocker 同步到允许修改的
文档;若接入后的配置与已核实远端版本不同,要记录差异原因。
7. 用真实安装、验证和启动命令替换 `init.ps1`/`init.sh` 占位;如果无法提供设备
启动命令,保留主动失败并把原因记录为 blocker,不能伪造命令。
## 验收要点
- [x] 当前目录已成为可正常查看状态和提交的 Git 仓库。
- [ ] `android-buyer/` 包含可追溯到明确 URL 和 commit 的 Roubao 源码。
- [ ] 上游许可证文件已保留,并确认允许当前预期的二次开发方式。
- [ ] Windows 上使用仓库内 Gradle Wrapper 成功构建 Debug APK。
- [ ] 上游已有 Android 单元测试已执行;没有测试时明确记录。
- [ ] 有测试设备时完成安装和启动 smoke,并记录设备/Android 版本;无设备时任务
不能把设备 smoke 写成已通过。
- [ ] 未加入真实 API key、签名密码、设备 token 或本地 SDK 绝对路径。
- [ ] 已处理缺失的 `google-services.json`:提供本地忽略配置,或明确移除不需要的
Firebase 插件和依赖。
- [ ] `03-tech-stack.md` 和 `current-state.md` 不再把已核实信息标为待定。
- [ ] `init.ps1`/`init.sh` 与文档中的当前命令一致,或因明确 blocker 保持主动失败。
建议验证命令形状,最终以接入工程为准:
```powershell
git status --short
Set-Location android-buyer
.\gradlew.bat tasks
.\gradlew.bat test
.\gradlew.bat assembleDebug
```
## 边界
- 不实现拼多多搜索、点击、候选比较或订单流程。
- 不接入 VLM、后台 API、任务领取和管理页面。
- 不升级与构建无关的依赖,不重构上游项目。
- 不配置生产签名,不提交本机 `local.properties` 或密钥。
## 执行记录
### 2026-07-25:Git 和文档基线
- 当前目录已初始化为 Git 仓库,工作分支为 `main`,远端名为 `origin`。
- 新增根目录 `.gitignore`,忽略本地 SDK 配置、Firebase 配置、密钥、构建产物、
运行数据和日志。
- 已核实 Roubao 上游版本并更新技术栈、当前状态及本任务,但 Android 源码尚未导入。
- 本次只建立文档与脚本提交;Gradle 构建、测试、APK 安装和设备 smoke 均未运行。
- T-001 保持 `DOING`,剩余 blocker 见 `docs/current-state.md`。
+42
View File
@@ -0,0 +1,42 @@
---
id: T-XXX
title: 一句话任务名
phase: 1
deps: []
status: TODO
created: YYYY-MM-DD
context_ref: null
work_branch: null
write_paths:
- docs/tasks/T-XXX.md
- path/to/allowed/module/**
---
## 问题 / 背景
说明当前事实、为什么要做,以及不做会阻塞什么。
## 关联需求与交互
- 功能:F-XXX
- 用户故事:US-XXX
- 交互:IX-XXX;无 UI 时写不适用
- 架构/API:对应章节
## 方案
按文件和模块写清怎么实现、如何处理失败和安全边界。
## 验收要点
- 写明可观察结果。
- 写明实际验证命令或设备 smoke 环境。
- 高风险任务写明安全停止证据。
## 边界
明确不修改的模块和不实现的后续功能。
## 执行记录
开工后记录修改、命令、结果、环境、决策和 blocker。