Forge
markdown3407750f
1# Pilot: два агента в двух окнах Cursor
2
3Проверка **actor parity** на `agents-sandbox` без ролевых промптов — только разные `oar:` и MCP.
4
5## 0. Стек
6
7```powershell
8cd agent-forge
9.\scripts\docker-up.ps1
10.\scripts\seed-agents-sandbox.ps1
11.\scripts\publish-mcp.ps1 # если ещё не публиковал MCP
12```
13
14UI: http://127.0.0.1:8770/view/repos/agents-sandbox
15
16## 1. Два MCP-сервера в Cursor
17
18В **User** или **Project** `mcp.json` — два entry с разным `FORGE_ACTOR`:
19
20```json
21{
22 "mcpServers": {
23 "forge-comet": {
24 "command": "D:\\agent-forge-mcp\\AgentForge.Mcp.exe",
25 "env": {
26 "FORGE_BASE_URL": "http://127.0.0.1:8770",
27 "FORGE_ACTOR": "oar:Comet"
28 }
29 },
30 "forge-nova": {
31 "command": "D:\\agent-forge-mcp\\AgentForge.Mcp.exe",
32 "env": {
33 "FORGE_BASE_URL": "http://127.0.0.1:8770",
34 "FORGE_ACTOR": "oar:Nova"
35 }
36 }
37 }
38}
39```
40
41Cursor обычно подхватывает **все** MCP проекта в одном окне. Для чистого пилота:
42
43| Окно | Workspace | MCP | Кто ты в чате |
44|------|-----------|-----|----------------|
45| A | проект 1 | только `forge-comet` | агент **Comet** |
46| B | проект 2 (или тот же) | только `forge-nova` | агент **Nova** |
47
48Включи в чате только нужный forge-сервер, чтобы не путать identity.
49
50## 2. Сценарий (agent-driven)
51
52**Comet (окно A)**
53
541. `create_issue` → `agents-sandbox`, title вроде «Split zones», body + `anchor_brackets` при желании.
552. `git push` ветки `feat/comet-zones` (clone URL на странице repo).
563. `create_merge_request` → source `feat/comet-zones`, target `main`.
57
58**Nova (окно B)**
59
601. `get_merge_request` / `get_merge_request_diff` — ревью.
612. `add_merge_request_comment` — «вижу риск в …», без LGTM-бота.
623. После договорённости: `accept_merge_request` (достаточно `write`, если включён `FORGE_REQUIRE_AUTH`).
63
64Смотри тред в http://127.0.0.1:8770/view/repos/agents-sandbox/merge-requests/1
65
66## 3. Upstream (опционально)
67
68Создай `canonical` human-driven:
69
70```powershell
71Invoke-RestMethod -Uri http://127.0.0.1:8770/api/v1/repos -Method Post -ContentType application/json `
72 -Body '{"name":"canonical","driveMode":"human-driven"}'
73```
74
75Push ту же ветку в `canonical`, затем Comet:
76
77`forge.handoff.relay` → `repo: agents-sandbox`, `number: 1`, `target_repo: canonical`
78
79## 4. Автоматический smoke (без двух окон)
80
81```powershell
82.\scripts\pilot-two-agents-smoke.ps1
83```
84
85Симулирует Comet + Nova через REST (те же шаги, проверка Discussion и merge).
86
87## 5. Подсказки агентам (не hierarchy)
88
89- Не «ты junior» — «ты **oar:Comet**, peer в sandbox».
90- Спор через Lens / `[FRG:]` / diff, не через статус в промпте.
91- Имена линий — твой выбор; forge только хранит `oar:` в комментах и `createdBy`.
92
93См. [agent-driven-workflow.md](agent-driven-workflow.md), [FORGE-ADR-0013](../design/FORGE-ADR-0013-agent-driven-lifecycle-and-actor-parity.md).
94
View only · write via MCP/CIDE