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:
@@ -44,11 +44,22 @@ class Stance(BaseModel):
|
||||
fear: float = Field(default=0.5, ge=0.0, le=1.0)
|
||||
|
||||
|
||||
class FactionData(BaseModel):
|
||||
"""单个派系的数据"""
|
||||
power: int = 0
|
||||
members: List[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class Factions(BaseModel):
|
||||
"""派系分布"""
|
||||
optimists: int = 0
|
||||
fearful: int = 0
|
||||
neutral: int = 0
|
||||
"""派系分布(带 power 和 members)"""
|
||||
optimists: FactionData = Field(default_factory=FactionData)
|
||||
fearful: FactionData = Field(default_factory=FactionData)
|
||||
|
||||
|
||||
class FactionEventResult(BaseModel):
|
||||
"""阵营事件触发结果"""
|
||||
type: Optional[str] = None # "festival" | "panic" | None
|
||||
source_faction: Optional[str] = None # "optimists" | "fearful"
|
||||
|
||||
|
||||
class AgentState(BaseModel):
|
||||
@@ -60,6 +71,8 @@ class AgentState(BaseModel):
|
||||
commented_effects: List[str] = Field(default_factory=list)
|
||||
# 角色立场
|
||||
stance: Stance = Field(default_factory=Stance)
|
||||
# 所属阵营
|
||||
faction: str = "neutral" # "optimists" | "fearful" | "neutral"
|
||||
|
||||
|
||||
class WorldState(BaseModel):
|
||||
@@ -106,3 +119,4 @@ class StepResponse(BaseModel):
|
||||
world_state: WorldState
|
||||
actions: List[Action]
|
||||
global_event: GlobalEventResult = Field(default_factory=GlobalEventResult)
|
||||
triggered_faction_event: FactionEventResult = Field(default_factory=FactionEventResult)
|
||||
|
||||
Reference in New Issue
Block a user