feat(engine): add faction power system with event triggers

- Add FactionData model with power and members fields
- Add FactionEventResult model for faction event responses
- Add faction field to AgentState
- Implement faction classification based on emotion
- Add faction event triggers (festival/panic) when power >= 5
- Update StepResponse to include triggered_faction_event
- Add tests for new faction system

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
empty
2025-12-30 12:01:07 +08:00
parent 012956f817
commit 1fd318c9e3
6 changed files with 181 additions and 27 deletions

View File

@@ -2,6 +2,7 @@ from fastapi import FastAPI
from .models import StepRequest, StepResponse
from .state import load_state, save_state
from .engine import process_events, generate_actions, check_and_trigger_global_event
from .factions import check_and_trigger_faction_event
app = FastAPI(title="AI Town Engine", version="0.1.0")
@@ -18,6 +19,9 @@ def step(request: StepRequest) -> StepResponse:
# 检查并触发世界级事件
state, global_event_result = check_and_trigger_global_event(state)
# 检查并触发阵营事件
faction_event_result = check_and_trigger_faction_event(state)
# 生成 agent 行动
actions = generate_actions(state)
@@ -27,7 +31,8 @@ def step(request: StepRequest) -> StepResponse:
return StepResponse(
world_state=state,
actions=actions,
global_event=global_event_result
global_event=global_event_result,
triggered_faction_event=faction_event_result
)