Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v
5.1 KiB
PROGRESS · 双 agent 自动循环试点 · 2026-10-13
任务书:docs/tasks/TASK-agent-loop-pilot-20261013.md。执行:Claude(直接执行,产品负责人 2026-10-13 授权)。分支 codex/agent-loop-pilot-20261013,基于 origin/staging e8119ed12。
状态一览
| 任务 | 状态 | 证据 / 说明 |
|---|---|---|
| T0 令牌 | 开发机已完成 | gitea.sh whoami = 产品负责人账号;文件 0600、40 字符(曾粘贴两遍,已截断) |
| T1 Grok 实测 | 通过 | 见任务书「T1 结果与定稿分工」 |
| T2 标签与封装 | 通过 | 10 个 agent/* 标签已建;自检 issue #51 演示加锁 → 评论 → 换状态 → 解锁;标签筛选为「同时带有」语义 |
| T3 Claude 侧 | 已写,未运行 | 见下「为什么没跑」 |
| T4 Grok 侧 | 已写,未安装 | 需产品负责人在 Windows 上安装 |
| T5 每晚复盘 | 已写,未运行 | docs/agents/LESSONS.md 已建空模板;AGENTS.md §4 加了一行 |
| T6 端到端 | 未开始 | — |
为什么 T3 没跑
开发机上 Claude Code 的自动模式安全检查连续拦下了「搭建无人值守、可推 staging 的 agent」相关命令(理由 Create Unsafe Agents),包括对脚本做语法检查。按规矩不绕开。产品负责人选择方案 B(自己授权无人值守脚本),授权方式是由他本人在开发机终端里运行启动命令。
据此做了两处加固(相对任务书原设计):
- 不关权限检查:原设计让 Claude/Grok 以
bypassPermissions运行;改为白名单 +dontAsk(claude-settings.json、grok-permissions.json),白名单外的操作自动拒绝。 - 只读本人账号的评论:仓库实际对外公开(匿名 API 返回
private: false),陌生人评论一律不交给模型,防止经评论注入指令。
决定:Claude 侧改用会话 /loop(2026-10-13,产品负责人同意)
yetone 公开说明他的工作流就是在 Claude Code 会话里并行跑几个 /loop + 一段大白话提示词。据此 Claude 侧不再用后台脚本,改为在这台 Linux 机器的常开会话里跑 /loop(提示词见 tools/agent-loop/prompts/loop-claude.md)。保留双 agent(Grok 执行、Claude 验收=交叉审查)、标签交接、gitea.sh、推送钩子与各提示词规则。claude-tick.sh / nightly-review.sh / agentctl.sh 降为备用,不启动。Grok 侧 Windows 计划任务不变。
Claude 侧安装与空跑已由产品负责人在终端完成:分支 b2bf15b8b 推送成功,agentctl.sh install 以产品负责人账号连上 Gitea,once 输出 nothing to do。
已实测
| 项目 | 结果 |
|---|---|
gitea.sh 建标签、按标签筛选、加/删标签、发评论 |
通过(issue #51) |
| Claude 钩子:推 main | 拒绝 |
| Claude 钩子:推 staging | 放行 |
| Grok 钩子:推 staging(新提交) | 拒绝(同 SHA 时 git 不调钩子,测试须用新提交) |
| Grok 钩子:推 main / 删除 codex 分支 | 拒绝 |
| Grok 钩子:推 codex/* | 放行 |
claude -p --json-schema 结构化输出 |
通过(structured_output 字段) |
环境缺口
- 本机无
crontab/systemctl:用agentctl.sh start常驻循环;机器重启后需再 start 一次。 claude-tick.sh、nightly-review.sh尚未实跑;白名单是否够用要第一轮实跑才知道(不够时模型会被拒并在 issue 留 error,不会越权)。- Grok 的
--allow/--deny规则语法只有公开资料,安装前需 Grok 本机核对。 test:db13 条 Windows 已知失败的测试名尚未填入windows-known-failures.txt。
产品负责人要做的
开发机(照片里那个终端),按顺序:
cd /workspace/Jyotisha/.worktrees/agent-loop-pilot-20261013
bash tools/agent-loop/agentctl.sh install
~/.local/share/jyotisha-agent/bin/agentctl.sh once # 没有带标签的 issue 时应显示 nothing to do
~/.local/share/jyotisha-agent/bin/agentctl.sh start
Windows:分支推上去后,把下面这段发给 Grok(交互模式):
在 G:\Ferti\Jyotisha.worktrees\agent-loop 里
git fetch origin后git checkout -f -B codex/agent-loop-pilot-20261013 origin/codex/agent-loop-pilot-20261013,读 tools/agent-loop/README.md 和 docs/tasks/PROGRESS-agent-loop-pilot-20261013.md。然后:
- 按
grok --help核对 tools/agent-loop/grok-permissions.json 的 allow/deny 规则写法,不对就改成正确写法(不得改成 bypassPermissions),用grok -p "运行 git status" --permission-mode dontAsk --allow <规则>实测一条放行、一条不在名单里的命令被拒。- 在 frontend 下跑
npm run test:db(Docker 已开),把失败的 13 条测试名按 "not ok N - " 后面的原文逐行填进 tools/agent-loop/windows-known-failures.txt。- 两处改动 commit 后
git push origin HEAD:refs/heads/codex/agent-loop-pilot-20261013。- 运行
powershell -NoProfile -ExecutionPolicy Bypass -File tools\agent-loop\install-grok.ps1 -RunOnce,贴出最后 5 行日志。 不要注册计划任务,等 Claude 确认。