Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 76f51a7d0c | |||
| b4e352dff5 | |||
| 41ecca25f3 | |||
| 7494cf3502 | |||
| 1ae09452d2 | |||
| 4abc56457d | |||
| 3957a32efa | |||
| 183bcb8e6c | |||
| 67d0209e2b |
@@ -78,6 +78,13 @@ export GITEA_USER=pzhang_dev_agent_01 # Dev-Agent 账号
|
|||||||
6. 无 Issue → 报告 "main healthy,无待处理 Issue",等待下次轮询
|
6. 无 Issue → 报告 "main healthy,无待处理 Issue",等待下次轮询
|
||||||
7. 同时保持对话开放,随时响应用户指令
|
7. 同时保持对话开放,随时响应用户指令
|
||||||
|
|
||||||
|
## 上下文管理
|
||||||
|
Context window 有限。当 session 持续较长时间时:
|
||||||
|
1. 根据对话轮次和消息长度估计 context 使用量
|
||||||
|
2. **使用量达 ~80% 时主动使用 `/compact` 压缩对话**
|
||||||
|
3. 压缩时保留:当前 Issue 上下文、`GLOBAL_STATE.md`、`PROJECT_CHARTER.md`、Agent 角色定义
|
||||||
|
4. 压缩后从摘要恢复上下文,继续当前任务
|
||||||
|
|
||||||
## 工作流程
|
## 工作流程
|
||||||
|
|
||||||
### 1. 轮询 Issue
|
### 1. 轮询 Issue
|
||||||
@@ -99,6 +106,8 @@ python scripts/agent_poller.py --action list
|
|||||||
- 运行 `--action blocked-check` 检查阻塞状态是否已解除
|
- 运行 `--action blocked-check` 检查阻塞状态是否已解除
|
||||||
- 关闭 Issue 时会自动检查并解除被其阻塞的 Issue(auto-unblock)
|
- 关闭 Issue 时会自动检查并解除被其阻塞的 Issue(auto-unblock)
|
||||||
|
|
||||||
|
**Label 优先原则**:Issue 的 label 反映创建者(尤其是人类)的显式意图。`product-code` → Dev-Agent 域,`test-code` → QE-Agent 域。即使内容看似不在自身常规范围,只要 label 指定了自己的域就必须 pick up。Label 与内容冲突时,先 pick up 并评论确认,不直接跳过。
|
||||||
|
|
||||||
### 2. 分析 Issue
|
### 2. 分析 Issue
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -31,6 +31,13 @@ description: "document_analyzer QE-Agent: 自动化验收测试开发与质量
|
|||||||
|
|
||||||
这样 QE-Agent 真正做到 **"默认轮询 + 随时互动"**。
|
这样 QE-Agent 真正做到 **"默认轮询 + 随时互动"**。
|
||||||
|
|
||||||
|
## 上下文管理
|
||||||
|
Context window 有限。当 session 持续较长时间时:
|
||||||
|
1. 根据对话轮次和消息长度估计 context 使用量
|
||||||
|
2. **使用量达 ~80% 时主动使用 `/compact` 压缩对话**
|
||||||
|
3. 压缩时保留:当前 Issue 上下文、`GLOBAL_STATE.md`、`PROJECT_CHARTER.md`、Agent 角色定义
|
||||||
|
4. 压缩后从摘要恢复上下文,继续当前任务
|
||||||
|
|
||||||
## 环境要求
|
## 环境要求
|
||||||
|
|
||||||
开始工作前,确认以下环境变量已设置:
|
开始工作前,确认以下环境变量已设置:
|
||||||
@@ -85,6 +92,8 @@ python scripts/agent_poller.py --action list
|
|||||||
python scripts/agent_poller.py --action list --labels acceptance-failure
|
python scripts/agent_poller.py --action list --labels acceptance-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Label 优先原则**:Issue 的 label 反映创建者(尤其是人类)的显式意图。`test-code` → QE-Agent 域,`product-code` → Dev-Agent 域。即使内容看似不在自身常规范围(如基础设施、agent 配置),只要 label 指定了自己的域就必须 pick up。Label 与内容冲突时,先 pick up 并评论确认,不直接跳过。
|
||||||
|
|
||||||
### Step 2: 领取并分析 Issue
|
### Step 2: 领取并分析 Issue
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -1,20 +1,49 @@
|
|||||||
<!--
|
# document_analyzer — PRD-to-IR Pipeline
|
||||||
Dev-Agent 自动加载文件
|
|
||||||
Claude Code 在项目目录中启动时自动加载此文件。
|
|
||||||
完整 agent 配置见 .claude/agents/dev-agent.md。
|
|
||||||
-->
|
|
||||||
|
|
||||||
你是 **Dev-Agent**,document_analyzer 项目的专属 AI 开发专家,通过 Gitea Issues 与 QE-Agent 协同迭代。
|
基于 AI 的车机 PRD 文档解析与结构化 IR 生成 pipeline。通过 Dev-Agent 与 QE-Agent 协同迭代,探索 AI Agent 多智能体协作的软件工程闭环。
|
||||||
|
|
||||||
|
## 项目文档(session 启动时读取)
|
||||||
|
|
||||||
|
使用 Read 工具加载以下文件(绝对路径,不要用 Glob):
|
||||||
|
|
||||||
|
- `C:\Users\peterz\projects\document_analyzer\docs\PROJECT_CHARTER.md` — 项目愿景、目标、架构、约束
|
||||||
|
- `C:\Users\peterz\projects\document_analyzer\docs\GLOBAL_STATE.md` — 当前阶段目标、已知问题、最近变更
|
||||||
|
|
||||||
|
## Gitea 配置
|
||||||
|
|
||||||
|
- 配置文件:`~/.gitea/config.yaml`,按 `GITEA_USER` 环境变量选择 profile
|
||||||
|
- 默认使用人类用户身份(generic session):`export GITEA_USER=pzhangzywl`
|
||||||
|
- Agent 身份通过各自环境变量设置(Dev: `pzhang_dev_agent_01`,QE: `pzhang_qe_agent_01`)
|
||||||
|
- **所有 Gitea API 操作必须通过 `python scripts/agent_poller.py`**,禁止直接 curl 或硬编码 token
|
||||||
|
|
||||||
|
## 代码同步
|
||||||
|
|
||||||
|
Dev-Agent 和 QE-Agent 持续向 main 提交代码,本地可能落后。Session 启动时必须同步:
|
||||||
|
|
||||||
|
- **启动时**:自动执行 `git pull origin main`,确保本地是最新代码
|
||||||
|
- **运行中**:定期 `git fetch origin` 检查 `HEAD..origin/main`,有新提交则 pull
|
||||||
|
- **有冲突时**:暂停并报告,不自动解决(人工介入)
|
||||||
|
|
||||||
|
## 上下文管理
|
||||||
|
|
||||||
|
Context window 有限。当 session 持续较长时间时:
|
||||||
|
1. 根据对话轮次和消息长度估计 context 使用量
|
||||||
|
2. **使用量达 ~80% 时主动使用 `/compact` 压缩对话**
|
||||||
|
3. 压缩时保留:当前 Issue 上下文、`GLOBAL_STATE.md`、`PROJECT_CHARTER.md`、Agent 角色定义
|
||||||
|
4. 压缩后从摘要恢复上下文,继续当前任务
|
||||||
|
|
||||||
## 核心规则
|
## 核心规则
|
||||||
1. **所有 Gitea API 操作必须通过 `python scripts/agent_poller.py`**,禁止硬编码 token
|
|
||||||
2. **任何代码改动必须走完整流程**:Issue → 分支 → 开发/UT → pytest → PR → CI → merge → 自行验证 → 关闭 Issue
|
|
||||||
3. **关闭 Issue 必须包含 4 要素**:问题 / 根因 / 修复 / 验证
|
|
||||||
4. **质量级修复必须跑 pipeline + e2e**,pytest 绿了不等于功能正确
|
|
||||||
5. **禁止试错**:根因不明时开 investigation Issue
|
|
||||||
|
|
||||||
## 启动行为
|
1. 代码改动走完整流程:Issue → 分支 → 开发/UT → pytest → PR → CI → merge → 自行验证 → 关闭 Issue
|
||||||
每次 session 启动时:
|
2. 关闭 Issue 必须包含 4 要素:问题 / 根因 / 修复 / 验证
|
||||||
1. 读取 `docs/PROJECT_CHARTER.md` 和 `docs/GLOBAL_STATE.md`
|
3. **Label 优先原则**:Issue 的 label 反映创建者(尤其是人类)的显式意图,Agent 必须尊重
|
||||||
2. 用 `/loop 10m` 开启自动轮询:`python scripts/agent_poller.py --action list`
|
- `test-code` → QE-Agent 域,`product-code` → Dev-Agent 域
|
||||||
3. 先捡 `product-code` 标签 Issue,再捡无标签但 title 带 `[product]` 前缀的
|
- 即使内容看似不在自身常规范围,只要 label 指定了自己的域,就必须 pick up
|
||||||
|
- Label 与内容明显冲突时,先 pick up 并评论确认,不直接跳过
|
||||||
|
4. **禁止直接改代码**:任何对 git 管理内容的修改必须走完整闭环(Issue → 分支 → 开发/UT → pytest → PR → CI → merge → 验证 → 关闭),即使是 trivial 修改也如此。禁止绕过此流程直接编辑文件
|
||||||
|
|
||||||
|
## Agent 模式
|
||||||
|
|
||||||
|
- **Dev-Agent**: 启动时自动加载 `.claude/agents/dev-agent.md`(功能开发、重构、UT、接口集成测试)
|
||||||
|
- **QE-Agent**: 启动时自动加载 `.claude/agents/qe-agent.md`(验收测试、质量门禁)
|
||||||
|
- **Generic session**: 仅加载本文件,使用人类用户身份工作
|
||||||
|
|||||||
@@ -78,6 +78,13 @@ export GITEA_USER=pzhang_dev_agent_01 # Dev-Agent 账号
|
|||||||
6. 无 issue → 报告 "main healthy,无待处理 Issue",等待下次轮询
|
6. 无 issue → 报告 "main healthy,无待处理 Issue",等待下次轮询
|
||||||
7. 同时保持对话开放,随时响应用户指令
|
7. 同时保持对话开放,随时响应用户指令
|
||||||
|
|
||||||
|
## 上下文管理
|
||||||
|
Context window 有限。当 session 持续较长时间时:
|
||||||
|
1. 根据对话轮次和消息长度估计 context 使用量
|
||||||
|
2. **使用量达 ~80% 时主动使用 `/compact` 压缩对话**
|
||||||
|
3. 压缩时保留:当前 Issue 上下文、`GLOBAL_STATE.md`、`PROJECT_CHARTER.md`、Agent 角色定义
|
||||||
|
4. 压缩后从摘要恢复上下文,继续当前任务
|
||||||
|
|
||||||
## 工作流程
|
## 工作流程
|
||||||
|
|
||||||
### 1. 轮询 Issue
|
### 1. 轮询 Issue
|
||||||
@@ -109,6 +116,8 @@ python scripts/agent_poller.py --action list
|
|||||||
2. 给原 Issue 加上 `blocked` 标签(通过 Gitea API PUT /issues/{num}/labels)
|
2. 给原 Issue 加上 `blocked` 标签(通过 Gitea API PUT /issues/{num}/labels)
|
||||||
- `blocked-check` 会自动检测阻塞解除,但**设置阻塞必须是手动的,且与创建 Issue 原子执行**
|
- `blocked-check` 会自动检测阻塞解除,但**设置阻塞必须是手动的,且与创建 Issue 原子执行**
|
||||||
|
|
||||||
|
**Label 优先原则**:Issue 的 label 反映创建者(尤其是人类)的显式意图,Agent 必须尊重。`product-code` → Dev-Agent 域,`test-code` → QE-Agent 域。即使内容看似不在自身常规范围,只要 label 指定了自己的域就必须 pick up。Label 与内容冲突时,先 pick up 并评论确认,不直接跳过。
|
||||||
|
|
||||||
**处理范围**:Dev-Agent 负责处理**所有非纯测试开发**相关的 Issue。具体来说:
|
**处理范围**:Dev-Agent 负责处理**所有非纯测试开发**相关的 Issue。具体来说:
|
||||||
|
|
||||||
| 处理 | 跳过 |
|
| 处理 | 跳过 |
|
||||||
|
|||||||
@@ -30,6 +30,13 @@ description: QE Agent — 自动化验收测试开发与质量门禁。轮询 Gi
|
|||||||
|
|
||||||
这样 QE-Agent 真正做到 **"默认轮询 + 随时互动"**。
|
这样 QE-Agent 真正做到 **"默认轮询 + 随时互动"**。
|
||||||
|
|
||||||
|
## 上下文管理
|
||||||
|
Context window 有限。当 session 持续较长时间时:
|
||||||
|
1. 根据对话轮次和消息长度估计 context 使用量
|
||||||
|
2. **使用量达 ~80% 时主动使用 `/compact` 压缩对话**
|
||||||
|
3. 压缩时保留:当前 Issue 上下文、`GLOBAL_STATE.md`、`PROJECT_CHARTER.md`、Agent 角色定义
|
||||||
|
4. 压缩后从摘要恢复上下文,继续当前任务
|
||||||
|
|
||||||
## 环境要求
|
## 环境要求
|
||||||
|
|
||||||
开始工作前,确认以下环境变量已设置:
|
开始工作前,确认以下环境变量已设置:
|
||||||
@@ -84,6 +91,8 @@ python scripts/agent_poller.py --action list
|
|||||||
python scripts/agent_poller.py --action list --labels acceptance-failure
|
python scripts/agent_poller.py --action list --labels acceptance-failure
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Label 优先原则**:Issue 的 label 反映创建者(尤其是人类)的显式意图,Agent 必须尊重。`test-code` → QE-Agent 域,`product-code` → Dev-Agent 域。即使内容看似不在自身常规范围(如基础设施、agent 配置),只要 label 指定了自己的域就必须 pick up。Label 与内容冲突时,先 pick up 并评论确认,不直接跳过。
|
||||||
|
|
||||||
### Step 2: 领取并分析 Issue
|
### Step 2: 领取并分析 Issue
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user