docs(tasks): agent loop pilot — Grok side on native Windows, T1 env survey first

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
This commit is contained in:
Jesse_Chen
2026-10-13 10:23:59 +08:00
co-authored by Claude Opus 5.5
parent 3caa875ece
commit 00b933a6eb
+38 -7
View File
@@ -22,7 +22,7 @@
## 2. 决策记录(产品负责人 2026-10-13 授权)
1. **两个 cron,职责分开**:Claude 只做规划(诊断 + 任务书)与验收(含推 staging、核对部署);Grok Build 只做执行(按任务书在 `codex/` 分支实现并回报)。
2. **Claude 侧跑在本开发机**(`/workspace/Jyotisha`);**Grok 侧跑在产品负责人本地电脑**。
2. **Claude 侧跑在本开发机**(`/workspace/Jyotisha`);**Grok 侧跑在产品负责人本地电脑(Windows,不装 WSL)**。Grok 侧能否自跑测试、跑哪些,以 T1 第 3 步环境检测结果由产品负责人与 Claude 再定(2026-10-13 补充决定)。
3. **用产品负责人自己的 Gitea 账号**,不另开 bot 账号。因此 agent 的评论靠首行标记区分(见 §4.3),不靠作者区分。
4. 交接媒介 = Gitea issue 的**标签**(状态)+ **评论**(交接内容)。两个 cron 不按时间配合,只按标签领活。
5. 不推翻任何既有红线:提升 `main`、改 `.gitea/workflows/**`、动 DNS 仍只由产品负责人触发(`AGENTS.md` §2.7)。
@@ -81,7 +81,7 @@ tools/agent-loop/
README.md 安装、启停、看日志、紧急停止
gitea.sh 读/改标签、发评论的最小封装(curl + jq,令牌从文件读)
claude-tick.sh Claude 侧入口:领单 → 调 claude -p → 改标签
grok-tick.sh Grok 侧入口:领单 → 调 grok -p → 改标签
grok-tick.ps1 Grok 侧入口(Windows PowerShell):领单 → 调 grok -p → 改标签
nightly-review.sh Claude 每晚复盘
prompts/claude-plan.md
prompts/claude-review.md
@@ -99,7 +99,7 @@ tools/agent-loop/
1. Gitea → 设置 → 应用 → 生成访问令牌,权限勾 `issue: 读写`、`repository: 读写`。
2. 在**两台机器**上各存一份:`~/.config/jyotisha-agent/gitea-token`,权限 `0600`。
3. 本地电脑确认 `grok` 已安装并登录。
3. 本地电脑确认 `grok` 已安装并登录。Windows 上存令牌用 PowerShell(见 T1 末尾附录)。
验收:两台机器上 `gitea.sh whoami` 返回你的用户名(不打印令牌)。
@@ -107,9 +107,40 @@ tools/agent-loop/
1. `grok --help` 记录实际可用的无人值守参数(公开资料称有 `-p` / `--prompt-file`、`--permission-mode`、`--max-turns`、`--output-format json`,**以本机版本为准**)。
2. 在一个临时目录跑一次:`grok -p "创建 hello.txt 写入 ok,然后运行 cat hello.txt"`,确认不弹审批也能写文件、跑命令、正常退出、退出码可用。
3. 确认本地电脑具备执行环境:本仓克隆、Node 22、`frontend` 依赖、Python `.venv`。
3. **环境检测(Windows 原生,不装 WSL)**:只检测、不安装、不改系统设置,结果填下表交给产品负责人。
验收:PROGRESS 里贴出参数清单与第 2 步的退出码/输出。若无人值守会卡在审批或无输出退出 → 写 `BLOCKED.md`,本单停在 T1。
| 项目 | 检测命令(PowerShell) | 需要记录 |
| --- | --- | --- |
| Windows 版本 | `[Environment]::OSVersion.Version` | 版本号 |
| Git | `git --version` | 版本;是否带 Git Bash(`where.exe bash`) |
| Node | `node -v`、`npm -v` | 版本(仓库要求 Node 22,见 `frontend/package.json` 的 `engines`) |
| Python | `py -0p` 或 `python --version` | 版本与路径(仓库要求见 `pyproject.toml`) |
| Grok | `grok --version`、`grok --help` | 版本与无人值守参数 |
| 本仓克隆 | `git clone https://git.copse.top/root/Jyotisha.git` 到一个**不含中文和空格**的路径 | 路径;`git config core.autocrlf` 的值 |
| 长路径 | `git config core.longpaths` | 值;克隆或 checkout 是否报路径过长 |
| 前端依赖 | 在 `frontend` 下 `npm ci` | 是否成功、耗时 |
| 前端检查 | `frontend` 下 `node_modules\.bin\tsc --noEmit`、`npm run lint`、`npm test` | 各自 通过 / 失败(失败贴前 20 行) |
| Python 测试 | `py -m venv .venv` → `.venv\Scripts\pip install -r requirements.txt` → `.venv\Scripts\python -m pytest tests/test_repo_privacy_markers.py -q` | 能否装上、能否跑 |
| 计划任务 | `Get-Command Register-ScheduledTask` | 是否可用 |
| 推送前钩子 | 在克隆里放一个只打印的 `pre-push` 钩子,`git push --dry-run` 看是否触发 | 是否触发 |
检测完由 Claude 按表给出建议:Grok 侧自跑哪些检查、哪些全部留给 Claude 验收时跑;产品负责人拍板后再做 T4。
验收:PROGRESS 里贴出参数清单、第 2 步的退出码/输出、第 3 步的整张表。若无人值守会卡在审批或无输出退出 → 写 `BLOCKED.md`,本单停在 T1。
附录 · Windows 存令牌(PowerShell,粘贴一次后回车,屏幕不显示):
```powershell
$d="$HOME\.config\jyotisha-agent"; New-Item -ItemType Directory -Force $d | Out-Null; $s=Read-Host "粘贴令牌后回车" -AsSecureString; $t=[Net.NetworkCredential]::new('',$s).Password; [IO.File]::WriteAllText("$d\gitea-token",$t.Trim()); Remove-Variable s,t; "已保存,长度 " + (Get-Item "$d\gitea-token").Length
```
长度应为 40;检查令牌是否可用:
```powershell
(Invoke-RestMethod https://git.copse.top/api/v1/user -Headers @{Authorization="token $(Get-Content $HOME\.config\jyotisha-agent\gitea-token)"}).login
```
显示 `jesse` 即可。
### T2 · Gitea 标签与封装(本开发机)
@@ -127,12 +158,12 @@ tools/agent-loop/
验收:在测试 issue 上从 `agent/待规划` 走到 `agent/待执行`,评论格式正确,任务书已推 staging 且为纯文档推送。
### T4 · Grok 侧 tick(本地电脑)
### T4 · Grok 侧 tick(本地电脑,Windows;T1 环境表定稿后再细化)
1. 本地克隆装 `hooks/pre-push-codex-only`;手动 `git push origin HEAD:staging` 必须被拒(贴出拒绝输出)。
2. `grok-tick.sh`:只领 `agent/待执行`;读 issue 里最新一条 `agent:claude plan` 或修复单评论,拿到任务书路径与分支名;`git fetch` 后在新 worktree 执行;结束发 `agent:grok report`。
3. 提示词 `grok-execute.md`:先读 `AGENTS.md` 全文与任务书;只在指定分支工作;写 PROGRESS 与 BUG_HISTORY;只推 `codex/*`;测试失败如实回报,不得弱化断言(§7.3);遇到需要决策的事回报为"需拍板"而不是自行决定。
4. 调度:macOS 用 `launchd`(或 `crontab`),README 给出一条安装命令。
4. 调度:Windows 计划任务(`Register-ScheduledTask`),tick 脚本用 PowerShell 写(`grok-tick.ps1`),README 给出一条安装命令;推送前钩子用 Git for Windows 自带的 bash 执行。
验收:钩子拒绝推 staging 的输出;测试 issue 从 `agent/待执行` 走到 `agent/待验收`,回报含 head SHA 与命令结果。