diff --git a/docs/tasks/TASK-agent-loop-pilot-20261013.md b/docs/tasks/TASK-agent-loop-pilot-20261013.md index 36679005..01cfc61d 100644 --- a/docs/tasks/TASK-agent-loop-pilot-20261013.md +++ b/docs/tasks/TASK-agent-loop-pilot-20261013.md @@ -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 与命令结果。