# Agent 工作手册(通用) > 本文件与具体业务仓库无关,可整文件复用到其他项目。 > **本仓库差异化约定见 [PROJECT.md](./PROJECT.md)。** --- ## 1. 目的与适用范围 - 适用于在本仓库工作的所有编码 Agent(Cursor、Claude Code、Codex、Kimi、Antigravity 等)。 - **聊天记录易失**;Git 与活文档区才是可协作、可审计的真相来源。 - 任何任务、调研、审计、修复、运维操作均须同步落盘,禁止「只改代码 / 只留在对话」。 --- ## 2. 启动协议(Session Bootstrap) 每次会话开始,按顺序阅读: 1. **本文件** `AGENTS.md` 2. **[PROJECT.md](./PROJECT.md)**(本仓库地图与约定) 3. **[`.doc/README.md`](./.doc/README.md)**(文档 taxonomy) 4. **[`.doc/ops/CURRENT.md`](./.doc/ops/CURRENT.md)**(焦点、并行认领、集成槽位) 5. **[`.doc/status/FEATURE-MATRIX.md`](./.doc/status/FEATURE-MATRIX.md)**(模块完成度) 6. 相关 **short-term** / **handoff** / **audit** / **remediation** 7. 发布/审计类任务:[`remediation/gap-matrix.md`](./.doc/remediation/gap-matrix.md) **未读完不得开始改代码**(紧急热修除外,事后必须在 24h 内补文档)。 --- ## 3. 文档同步红线(强制) | 时机 | 必须动作 | |------|----------| | 任务开始 | 在 `short-term/` 或 `long-term/` 新建或更新条目(复制 templates) | | 认领 | 在 CURRENT「并行认领」表登记 owner / branch / mutex | | 合 dev + 容器测 | 占用 CURRENT「集成槽位」;他人排队 | | 里程碑 | 更新任务文 `status`、FEATURE-MATRIX、CURRENT | | 调研/审计 | 写入 `audit/` 或 `ops/research/` | | 整改方案 | 写入 `remediation/` | | 验收 | 写 test-report(路径见 PROJECT),回链 checklist | | 会话结束/切换 Agent | 按 [session-close-checklist](./.doc/ops/templates/session-close-checklist.md) | | 提交 | 文档变更与代码同批或紧随 `docs(...)` 提交 | **状态字段**:`planned | in_progress | blocked | done | cancelled` **current vs historical**:完成项标 `done` 并移入 `archive/`;不删除证据。 --- ## 4. 文档 taxonomy 默认路径:`.doc/`(详见 [`.doc/README.md`](./.doc/README.md)) ```text .doc/ README.md # 总地图 status/ # FEATURE-MATRIX(模块完成度 SSOT) audit/ # 问题发现与分析 remediation/ # 整改方案;gap-matrix(发布 blocker) archive/ # 历史(只增不删) ops/ # 活协作:CURRENT、short-term、handoffs… system-design/ # 模块架构深读 adr/ | backlog/ | test-reports/ | test-fixtures/ ``` **红线**:禁止在 `.doc/` 根或 `docs/` 随意新建项目文档;新文档必须落入 taxonomy。 **命名**:`YYYY-MM-DD-.md` --- ## 5. 文档类型与何时使用 | 类型 | 路径 | 模板 | |------|------|------| | 问题/分析 | `audit/` | [audit-note.md](./.doc/ops/templates/audit-note.md) | | 整改方案 | `remediation/` | [remediation-plan.md](./.doc/ops/templates/remediation-plan.md) | | 短期任务 | `ops/short-term/` | [short-term-task.md](./.doc/ops/templates/short-term-task.md) | | 长期 backlog | `ops/long-term/` | [long-term-task.md](./.doc/ops/templates/long-term-task.md) | | Checklist | `ops/checklists/` | [checklist.md](./.doc/ops/templates/checklist.md) | | 交接 | `ops/handoffs/` | [handoff.md](./.doc/ops/templates/handoff.md) | | 调研 | `ops/research/` | [research-note.md](./.doc/ops/templates/research-note.md) | | 模块完成度 | `status/FEATURE-MATRIX.md` | [feature-matrix-row.md](./.doc/ops/templates/feature-matrix-row.md) | | 验收报告 | `.doc/test-reports/` | 见 test-reports-standard | | 历史 | `archive/**` | 关闭后迁入 | --- ## 6. 多 Agent 协作 ### 6.1 并行认领(编码阶段) 任务开始前在 CURRENT「并行认领」表登记: | 字段 | 说明 | |------|------| | owner | 工具 + 标识 | | task | short-term 文件名 | | branch | `feature/*` 或 `fix/*` | | worktree | 路径或 `-` | | mutex | 模块名(见 FEATURE-MATRIX) | | status | `in_progress` / `blocked` / `done` | **同一 mutex 同时仅一个 `in_progress`**。冲突 → 写 handoff blocker,禁止覆盖他人未合并改动。 ### 6.2 分支与 Worktree(策略 A:一律从 dev 开分支) > **禁止**在 `dev` / `test` / `main` 三大主干上直接 `git commit`(含代码、配置、文档)。 > `dev` 仅作合入点;`test`/`main` 仅作环境晋升合入,禁止开发。 **任务开始(先于改码):** 1. 更新本地 `dev`:`git checkout dev && git pull`(若已配置远端) 2. 从 `dev` 创建分支:`feature/`(新能力)或 `fix/`(缺陷);slug 与 short-term 任务名对齐 3. 多 Agent 并行:用 `./scripts/agent-worktree.sh create feature/`(worktree 内编码) 4. 单 Agent:可在主仓 `git checkout -b feature/`,**不得**留在 `dev` 上改码提交 **合回 dev(占集成槽位,见 §6.3):** ```bash git checkout dev git merge --no-ff feature/ -m "merge: feature/" # 冒烟通过后 git branch -d feature/ # 或 agent-worktree.sh remove ``` | 允许 | 禁止 | |------|------| | 在 `feature/*` / `fix/*` 上 commit | 在 `dev` / `test` / `main` 上 commit | | worktree 内 `go test -short ./...` | worktree 内 `env-service.sh * start/stop/restart` | | 占槽后在主仓 merge 入 `dev` | 多人直推同一 `dev` 工作区抢改 | | 连主仓已起服务 `:8080` | 各 worktree 各起 docker | 脚本:`./scripts/agent-worktree.sh create|list|remove` ### 6.3 集成槽位(合入 dev + 容器验证) > **编码与 worktree 单测可并行;合入 dev + 共享容器验证必须串行。** Agent A 占槽 merge + 冒烟期间,Agent B **不得** merge dev 或动共享 docker;B 可继续 worktree 编码,并写入 queue 等待。 CURRENT「集成槽位」:`holder` | `phase`(idle/merging/smoke/e2e)| `since` | `scope` | `queue` **释放**:冒烟 PASS(或 FAIL+handoff)+ 文档同步 + holder=idle。长 E2E 优先 smoke 释放,E2E 结果后补报告。 **默认冒烟(holder 在主仓执行)**: ```bash go vet ./... go test -short ./... ./scripts/env-service.sh dev rebuild curl -sf http://127.0.0.1:8080/health ``` ### 6.4 共享文档 `CURRENT.md` / `FEATURE-MATRIX.md` 由认领方或合并者更新;冲突时保留双方认领行再收敛。 ### 6.5 协作纪律 - **单一焦点**:CURRENT 只列 1–3 个焦点 - **不覆盖**:发现冲突先 handoff/blocker - **交接优先**:口头转述不可代替 handoff 文件 ### 6.6 Herdr 角色、自动审批与备援 - 本仓库 Herdr 角色、任务泳道、额度保护和备援顺序以 [Herdr Agent roster](./.doc/ops/2026-09-13-herdr-agent-roster.md) 为准。 - Herdr 实例统一通过 [`scripts/herdr-agent-start.sh`](./scripts/herdr-agent-start.sh) 启动;自动派发使用 [`scripts/herdr-agent-dispatch.sh`](./scripts/herdr-agent-dispatch.sh)。 - 自动审批只消除客户端逐条确认,不扩大任务授权;分支、worktree、mutex、集成槽和破坏性操作红线继续生效。 - 自动接管仅允许发生在未开始写入且明确的额度、认证、客户端或启动失败。`timeout` / `unknown` 不证明任务未执行,必须停止重复投递并先检查 pane 与 handoff。 - 名称 `context_pi` / “Herdr PI”专指协作终端内的 PI CLI;产品容器中的执行器统一称“产品 PI Agent Runner”,两者禁止混称或互相代替验收。 - 未进入 roster 的新模型(包括尚未接入的 Devin)默认 `standby`,通过一次只读任务和一次隔离 worktree 写任务验证后再进入路由。 --- ## 7. 文档生命周期 ```text audit(问题)→ remediation(方案)→ ops/short-term(任务) → test-reports(验收)→ archive/(关闭证据) ``` 会话结束:[session-close-checklist.md](./.doc/ops/templates/session-close-checklist.md) --- ## 8. Git 与提交 - 遵循 **Conventional Commits**:`feat` / `fix` / `refactor` / `test` / `docs` / `chore` / `ci` - **原子提交**:一个逻辑变更一批;提交发生在 `feature/*` 或 `fix/*` 上,不在三大主干 - **合回 dev**:占集成槽位后 `merge --no-ff`(见 §6.2、§6.3) - **晋升**:`dev` → `test`(rc tag)→ `main`(release tag);仅在规划的环境合并时动 `test`/`main` - **用户未要求**:不擅自 push - **用户已要求 push/同步远端**:必须自主完成 - **禁止**:在 `dev`/`test`/`main` 上直接开发 commit;在 `git config` 写入 token;硬重置/强推/删库仅在用户明确授权时 --- ## 9. Secrets 与远端推送(自主,禁止索要) ### 查找顺序 1. `${HOME}/.secrets/`(如 `gitea`) 2. **PROJECT.md** 与 **push 脚本**(`scripts/git-push-dev.sh`) ### 禁止 - 向用户索要 token - 在聊天/文档/commit 中展示 secret - 把 token 写入仓库或 `.env` 并提交 ### 缺失时 在 ops/handoff 记 blocker(路径 + 缺字段);**仍不索要 secret 内容**。 --- ## 10. 安全与合规红线 - 不提交 `.env`、密钥、凭证、生产数据倾倒 - 破坏性命令仅在用户明确授权时 - XSS/注入等修复优先于功能扩展 --- ## 11. 计划 / 实现 / 验证 1. **大改动**:先 short-term 范围;范围外记 long-term 2. **实现**:按 PROJECT 测试命令验证 3. **完成定义**:checklist 勾选须有证据链接 --- ## 12. 沟通 - 对用户:**简洁、中文** - 指向文件路径,不复述长篇规则 - 需要决策时 **一次只问 1–2 个关键问题** --- ## 13. 工具入口(薄转发) | 工具 | 入口 | |------|------| | Cursor | `.cursor/rules/*` + 本文件 | | Claude Code | [CLAUDE.md](./CLAUDE.md) | | Codex | [CODEX.md](./CODEX.md) | | Gemini | [GEMINI.md](./GEMINI.md) | | Antigravity | [ANTIGRAVITY.md](./ANTIGRAVITY.md) | | Kimi | [KIMI.md](./KIMI.md) | 均转发至本文件启动链。 --- ## 14. 模板索引 | 类型 | 路径 | |------|------| | 短期任务 | `.doc/ops/templates/short-term-task.md` | | 长期任务 | `.doc/ops/templates/long-term-task.md` | | Checklist | `.doc/ops/templates/checklist.md` | | 交接 | `.doc/ops/templates/handoff.md` | | 调研 | `.doc/ops/templates/research-note.md` | | 审计笔记 | `.doc/ops/templates/audit-note.md` | | 整改方案 | `.doc/ops/templates/remediation-plan.md` | | 完成度行 | `.doc/ops/templates/feature-matrix-row.md` | | 会话结束 | `.doc/ops/templates/session-close-checklist.md` | --- **本仓库差异化约定见 [PROJECT.md](./PROJECT.md)。**