๐ ๅค AI ๅ่ฐๅๆญฅๅ่ฎฎ
ๆ ธๅฟ้ฎ้ข๏ผๅฝๅคไธช AI๏ผClaude CodeใCodexใGemini๏ผๅๆถๆไบคๆฟๅทฅไฝๆถ๏ผๅฆไฝไฟ่ฏ๏ผ
- ็ถๆไธ่ดๆง
- ไธไธๆ่ฟ็ปญๆง
- ไปปๅกไธๅฒ็ช
- ็ปๆๅฏ่ฟฝๆบฏ
1. ๆ ธๅฟๅๅ
1.1 ๆไปถ็ณป็ปๆฏๅฏไธ็็
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅฏไธ็็ๆฅๆบ โ
โ project_document/.ai_state/ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ
โ โ Claude โ โ Codex โ โ Gemini โ โ
โ โ Code โ โ CLI โ โ CLI โ โ
โ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ .ai_state/ (ๆไปถ็ณป็ป) โ โ
โ โ โโโ active_context.md # ๅฝๅ็ถๆ โ โ
โ โ โโโ kanban.md # ่ฟๅบฆ็ๆฟ โ โ
โ โ โโโ handoff.md # ไบคๆฅ่ฎฐๅฝ โ โ
โ โ โโโ .ai_lock # ๅนถๅ้ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
่งๅ๏ผ
- ๆฏไธช AI ๅผๅงๅทฅไฝๅๅฟ
้กป่ฏปๅ .ai_state/
- ๆฏไธช AI ๅฎๆๅทฅไฝๅๅฟ
้กปๆดๆฐ .ai_state/
- ไธไพ่ตไผ่ฏ่ฎฐๅฟ๏ผๅชไพ่ตๆไปถ
1.2 ไปปๅกๅไธๆๆๆ
ๅไธๆถๅป๏ผไธไธชไปปๅกๅช่ฝ่ขซไธไธช AI ๆง่ก๏ผ
T-001: Claude Code โ
(ๆญฃๅจๆง่ก)
T-002: Codex โ
(ๆญฃๅจๆง่ก)
T-003: ๅพ
ๅ้
โณ (็ญๅพ
ไธญ)
T-001: Gemini โ (ๅฒ็ช๏ผๅทฒ่ขซ Claude ๅ ็จ)
1.3 ๆพๅผไบคๆฅ
AI ไน้ดไธ่ฝ"้ๅผ"ไผ ้ไฟกๆฏ๏ผๅฟ
้กป้่ฟ handoff.md ๆพๅผไบคๆฅ๏ผ
Claude Code ๅฎๆ T-001 โ ๅๅ
ฅ handoff.md โ Codex ่ฏปๅๅ็ปง็ปญ
2. ็ถๆๆไปถ่ง่
2.1 active_context.md๏ผๅฝๅ็ถๆ๏ผ
# Active Context
## ๐ ๅฝๅๆง่ก้
| ไปปๅก | ๆง่ก่
| ๅผๅงๆถ้ด | ็ถๆ |
|:----|:------|:--------|:----|
| T-002 | codex | 2025-01-11T10:30:00 | ๐ ๆง่กไธญ |
| T-003 | claude-code | 2025-01-11T10:35:00 | ๐ ๆง่กไธญ |
## ๐ ไปปๅก้ๅ
### ๆง่กไธญ
- T-002: ๆฐๆฎๅบ่ฎพ่ฎก (codex)
- T-003: API ๆฅๅฃ (claude-code)
### ๅพ
ๆง่ก
- T-004: ๅ็ซฏ้กต้ข (ๅพ
ๅ้
)
- T-005: ็จๆท่ฎค่ฏ (ๅพ
ๅ้
)
### ๅทฒๅฎๆ
- T-001: ้กน็ฎๅๅงๅ โ
(codex, 10:28)
## ๐ ๆ่ฟๅๆด
| ๆถ้ด | AI | ๅจไฝ | ๆไปถ |
|:----|:---|:----|:----|
| 10:35 | claude-code | ๅๅปบ | src/api/users.ts |
| 10:32 | codex | ๅๅปบ | src/db/schema.ts |
2.2 handoff.md๏ผไปปๅกไบคๆฅ๏ผ
# ไปปๅกไบคๆฅ่ฎฐๅฝ
---
## Handoff #001
**ๆถ้ด**: 2025-01-11T10:30:00
**ไปปๅก**: T-002 ๆฐๆฎๅบ่ฎพ่ฎก
**ไบคๆฅๆนๅ**: claude-code โ codex
### ๅทฒๅฎๆๅทฅไฝ
- ๆฐๆฎๆจกๅ่ฎพ่ฎกๅฎๆ
- ๆฅๅฃๅฎไนๅทฒๅๅ
ฅ src/types/
### ๅพ
็ปง็ปญๅทฅไฝ
- ๅฎ็ฐ CRUD ๅฝๆฐ
- ๆทปๅ ๆฐๆฎ้ช่ฏ
### ไธไธๆๆ่ฆ
็จๆท้ๆฑ๏ผๅๅฎข็ณป็ป ๆๆฏๆ ๏ผNext.js + SQLite ๆฐๆฎๆจกๅ๏ผUser, Article, Tag ๅ ณ็ณป๏ผArticle belongsTo User, Article hasMany Tags
### ๅ
ณ้ฎๆไปถ
- `src/types/models.ts` - ๆฐๆฎๆจกๅๅฎไน
- `src/db/schema.sql` - ๆฐๆฎๅบ Schema
### ๆณจๆไบ้กน
- ็จๆท่ฆๆฑไฝฟ็จ SQLite
- ๆ็ซ ้่ฆๆฏๆ Markdown
---
2.3 .ai_lock๏ผๅนถๅ้๏ผ
{
"locked_by": "codex",
"locked_at": "2025-01-11T10:30:00Z",
"task_id": "T-002",
"expires_at": "2025-01-11T10:35:00Z"
}
3. ๅ่ฐๆต็จ
3.1 ไปปๅก้ขๅๆต็จ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ไปปๅก้ขๅๆต็จ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ 1. ๆฃๆฅ .ai_lock โ
โ โโโ ๆ ้ โ ็ปง็ปญ โ
โ โโโ ๆ้ โ ็ญๅพ
ๆ้ๆฉๅ
ถไปไปปๅก โ
โ โ
โ 2. ๅๅปบ้ๆไปถ โ
โ .ai_lock = { locked_by: "codex", task_id: "T-002" } โ
โ โ
โ 3. ่ฏปๅ active_context.md โ
โ ่ทๅไปปๅก่ฏฆๆ
ๅไธไธๆ โ
โ โ
โ 4. ่ฏปๅ handoff.md๏ผๅฆๆๅๅบไบคๆฅ๏ผ โ
โ ่ทๅๅไธไธช AI ็ๅทฅไฝๆๆ โ
โ โ
โ 5. ๆง่กไปปๅก โ
โ โ
โ 6. ๆดๆฐ็ถๆๆไปถ โ
โ - active_context.md โ
โ - handoff.md๏ผๅฆ้ไบคๆฅ๏ผ โ
โ - kanban.md โ
โ โ
โ 7. ้ๆพ้ โ
โ ๅ ้ค .ai_lock โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3.2 ไปปๅกไบคๆฅๆต็จ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Claude Code โ Codex ไบคๆฅ็คบไพ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Claude Code (ๅฎๆ่ฎพ่ฎก้ถๆฎต): โ
โ โ
โ 1. ๅฎๆๆถๆ่ฎพ่ฎก โ
โ 2. ๅๅ
ฅ handoff.md: โ
โ - ๅทฒๅฎๆ: ๆฐๆฎๆจกๅ่ฎพ่ฎก โ
โ - ๅพ
็ปง็ปญ: ๅฎ็ฐ CRUD โ
โ - ๅ
ณ้ฎๆไปถ: src/types/models.ts โ
โ 3. ๆดๆฐ active_context.md: โ
โ - T-002: claude-code โ handoff โ codex โ
โ 4. ้ๆพ้ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ Codex (ๆฅๆถๆง่ก้ถๆฎต): โ
โ โ
โ 1. ่ทๅ้ โ
โ 2. ่ฏปๅ handoff.md โ
โ 3. ่ฏปๅๅ
ณ้ฎๆไปถ src/types/models.ts โ
โ 4. ็ปง็ปญๅฎ็ฐ CRUD โ
โ 5. ๅฎๆๅๆดๆฐ็ถๆ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3.3 ๅนถ่กๆง่กๆต็จ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅนถ่กๆง่ก็คบไพ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๅๆ๏ผไปปๅกไน้ดๆ ไพ่ตๅ
ณ็ณป โ
โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Codex โ โ Codex โ โ
โ โ T-004 โ โ T-005 โ โ
โ โ ๅ็ซฏ็ปไปถ โ โ ๅ็ซฏAPI โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ
โ โผ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ active_context.md โ โ
โ โ โ โ
โ โ ๆง่กไธญ: โ โ
โ โ - T-004: codex (instance-1) โ โ
โ โ - T-005: codex (instance-2) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ ่งๅ๏ผ โ
โ 1. ๆฏไธชไปปๅกๆ็ฌ็ซ็้ โ
โ 2. ๅนถ่กไปปๅกไธ่ฝไฟฎๆนๅไธๆไปถ โ
โ 3. ๅฎๆๅ้่ฆ้ๆ้ช่ฏ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
4. ๅฒ็ช่งฃๅณ
4.1 ๆไปถๅฒ็ช
ๅบๆฏ: Codex ๅ Claude Code ๅๆถไฟฎๆนไบๅไธๆไปถ
่งฃๅณๆนๆก:
1. ๆฃๆตๅฒ็ช:
- ๆฏ่พๆไปถไฟฎๆนๆถ้ดๆณ
- ไฝฟ็จ git diff ๆฃๆต
2. ๅฒ็ชๅค็ไผๅ
็บง:
- ็จๆทๆๅฎ > ๅๅฎๆ็ AI > ๅ
ๅฎๆ็ AI
3. ่ชๅจๅๅนถ:
- ๅฆๆไฟฎๆนไธๅๅบๅ๏ผๅฐ่ฏ่ชๅจๅๅนถ
- ๅฆๆไฟฎๆนๅไธๅบๅ๏ผๅๅปบ .conflict ๆไปถ็ญๅพ
ไบบๅทฅๅค็
4.2 ไปปๅกๅฒ็ช
ๅบๆฏ: ไธคไธช AI ๅๆถๅฐ่ฏ้ขๅๅไธไปปๅก
่งฃๅณๆนๆก:
1. ้ๆบๅถ:
- ๅ
่ทๅ้็ AI ๆง่ก
- ๅๅฐ็ AI ้ๆฉๅ
ถไปไปปๅกๆ็ญๅพ
2. ้่ถ
ๆถ:
- ้ๆ่ถ
ๆถๆถ้ด๏ผ้ป่ฎค 5 ๅ้๏ผ
- ่ถ
ๆถๅๅ
ถไป AI ๅฏไปฅๆฅ็ฎก
3. ๆญป้ๆฃๆต:
- ๅฎๆๆฃๆฅ้็ถๆ
- ๅ็ฐๆญป้่ชๅจ้ๆพ
5. ๅฎ้ ่ฐ็จ็คบไพ
5.1 ไธป AI ่ฐๅบฆๅ ถไป AI
## ๅบๆฏ๏ผClaude Code ไฝไธบไธป AI๏ผ่ฐๅบฆ Codex ๆง่กๅญไปปๅก
### Claude Code ๆไฝ๏ผ
1. ๅๆไปปๅก๏ผๅณๅฎไบค็ป Codex๏ผ
"T-004 ๆฏๅนถ่ก็ๅ็ซฏไปปๅก๏ผไบค็ป Codex ๆง่ก"
2. ๅๅ
ฅไบคๆฅไฟกๆฏๅฐ handoff.md
3. ่ฐ็จ Codex๏ผ
```bash
codex - <<'EOF'
ไปปๅกID: T-004
ๆ่ฟฐ: ๅฎ็ฐ็จๆทๅ่กจ็ปไปถ
ไธไธๆ: @project_document/.ai_state/handoff.md
่ๅด: @src/components/UserList/
ๅฎๆๅๆดๆฐ: @project_document/.ai_state/active_context.md
EOF
-
็ญๅพ Codex ๅฎๆ
-
่ฏปๅๆดๆฐๅ็ active_context.md๏ผ็ปง็ปญไธไธๆญฅ
### 5.2 ็จๆทๆๅฎ AI
```markdown
## ๅบๆฏ๏ผ็จๆท่ฆๆฑ็จ Codex ๅฎๆๅผๅ
็จๆท: "็จ codex ๆฅๅฎ็ฐ่ฟไธช็ปๅฝๅ่ฝ"
ไธป AI ๆไฝ๏ผ
1. ่ฏๅซ็จๆทๆๅฎไบ codex
2. ๆ ่ฎบ orchestrator.yaml ๅฆไฝ้
็ฝฎ๏ผ้ฝไฝฟ็จ codex
3. ๅๅคไปปๅกไธไธๆ
4. ่ฐ็จ codex ๆง่ก
5.3 ๅค AI ๅไฝๅฎๆดๆต็จ
## ๅบๆฏ๏ผๅๅฎข็ณป็ปๅผๅ
Phase 1 - ้ๆฑๅๆ (Claude Code ไธปๅฏผ)
โโโ Claude Code ๅๆ้ๆฑ
โโโ ็ๆไปปๅกๅ่กจ
โโโ ๅๅ
ฅ active_context.md
Phase 2 - ๅนถ่กๅผๅ (ๅค AI)
โโโ T-001 ้กน็ฎๅๅงๅ: Codex (ๅฟซ)
โโโ T-002 ๆฐๆฎๅบ่ฎพ่ฎก: Claude Code (้ๆ่)
โโโ T-003 ๅ็ซฏ API:
โ โโโ Claude Code ่ฎพ่ฎกๆฅๅฃ
โ โโโ Codex ๅฎ็ฐไปฃ็ (ไบคๆฅ)
โโโ T-004/T-005 ๅ็ซฏ้กต้ข: Codex ๅนถ่ก
Phase 3 - ้ๆๆต่ฏ (Claude Code)
โโโ ่ฏปๅๆๆ AI ็ๅทฅไฝๆๆ
โโโ ้ช่ฏ้ๆ
โโโ ไฟฎๅค้ฎ้ข
ๆฏไธช้ถๆฎต่ฝฌๆขๆถ๏ผ
1. ๅฝๅ AI ๆดๆฐ active_context.md
2. ๅๅ
ฅ handoff.md
3. ไธไธไธช AI ่ฏปๅๅ็ปง็ปญ
6. ่ฐๅบฆๅจๅฎ็ฐ่ฆ็น
6.1 Orchestrator ่่ดฃ
class Orchestrator:
def __init__(self, config_path="orchestrator.yaml"):
self.config = load_yaml(config_path)
self.state_dir = self.config["sync"]["state_dir"]
def select_engine(self, task, user_override=None):
"""
ๅผๆ้ๆฉไผๅ
็บง๏ผ
1. ็จๆทๆๅฎ
2. ่ง่ฒๆ ๅฐ
3. ไปปๅก็ฑปๅๆ็คบ
4. ้ป่ฎคๅผๆ
"""
if user_override:
return user_override
role = task.get("assigned_role")
if role and role in self.config["role_engine_mapping"]:
return self.config["role_engine_mapping"][role]
task_type = task.get("type")
if task_type and task_type in self.config["task_type_hints"]:
return self.config["task_type_hints"][task_type]
return self.config["default_engine"]["name"]
def dispatch(self, task, engine):
"""ๅๅไปปๅกๅฐๆๅฎๅผๆ"""
# 1. ่ทๅ้
self.acquire_lock(task["id"], engine)
# 2. ๅๅคไธไธๆ
context = self.prepare_context(task)
# 3. ่ฐ็จๅผๆ
if engine == "codex":
result = self.call_codex(task, context)
elif engine == "gemini":
result = self.call_gemini(task, context)
else:
result = self.execute_directly(task, context)
# 4. ๆดๆฐ็ถๆ
self.update_state(task, result)
# 5. ้ๆพ้
self.release_lock(task["id"])
return result
6.2 ็ถๆๅๆญฅๅฎ็ฐ
class StateSync:
def read_context(self):
"""่ฏปๅๅฝๅไธไธๆ"""
return read_file(f"{self.state_dir}/active_context.md")
def write_context(self, content):
"""ๅๅ
ฅไธไธๆ๏ผๅธฆ้๏ผ"""
with file_lock(f"{self.state_dir}/.ai_lock"):
write_file(f"{self.state_dir}/active_context.md", content)
def create_handoff(self, from_ai, to_ai, task, summary):
"""ๅๅปบไบคๆฅ่ฎฐๅฝ"""
handoff = f"""
## Handoff #{self.next_handoff_id()}
**ๆถ้ด**: {now()}
**ไปปๅก**: {task['id']} {task['name']}
**ไบคๆฅ**: {from_ai} โ {to_ai}
### ๅทฒๅฎๆ
{summary['completed']}
### ๅพ
็ปง็ปญ
{summary['pending']}
### ๅ
ณ้ฎๆไปถ
{summary['files']}
"""
append_file(f"{self.state_dir}/handoff.md", handoff)
7. ๆฃๆฅๆธ ๅ
ไปปๅกๅผๅงๅ
- [ ] ่ฏปๅ active_context.md
- [ ] ๆฃๆฅๆฏๅฆๆ้ๅฒ็ช
- [ ] ่ฏปๅ handoff.md๏ผๅฆๆไบคๆฅ๏ผ
- [ ] ่ทๅไปปๅก้
ไปปๅกๆง่กไธญ
- [ ] ๅฎๆๆดๆฐ่ฟๅบฆ๏ผ้ฟไปปๅก๏ผ
- [ ] ่ฎฐๅฝไฟฎๆน็ๆไปถๅ่กจ
ไปปๅกๅฎๆๅ
- [ ] ๆดๆฐ active_context.md
- [ ] ๆดๆฐ kanban.md
- [ ] ๅๅ ฅ handoff.md๏ผๅฆ้ไบคๆฅ๏ผ
- [ ] ้ๆพ้
็ๆฌ: v1.0 | ๆ ธๅฟ: ๆไปถ็ณป็ปๅๆญฅ + ๆพๅผไบคๆฅ + ้ๆบๅถ