Files
ai-town/engine-python/app/main.py
empty 5ae63d9df9 feat(engine): 实现行动点系统
- 扩展 AgentState 添加 action_points, max_action_points, last_action_tick 字段
- 新增 ActionFeedback 模型用于返回行动执行结果
- 创建 action_points.py 模块实现行动点消耗与恢复逻辑
- 行动消耗表: vote=1, trigger_skill=2, influence=2, comment/support/chaos=0
- 每 tick 恢复 1 点行动点(不超过 max)
- 行动点不足时拒绝执行并返回失败反馈
- 新增 7 个测试用例,全部 37 个测试通过

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 13:48:33 +08:00

52 lines
1.5 KiB
Python

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
from .story_arcs import update_story_progress, check_and_trigger_story_event
app = FastAPI(title="AI Town Engine", version="0.1.0")
@app.post("/step", response_model=StepResponse)
def step(request: StepRequest) -> StepResponse:
"""执行一个模拟步骤"""
# 加载当前状态
state = load_state()
# 处理事件并更新状态,获取行动反馈
state, action_feedbacks = process_events(state, request.events)
# 检查并触发世界级事件
state, global_event_result = check_and_trigger_global_event(state)
# 检查并触发阵营事件
faction_event_result = check_and_trigger_faction_event(state)
# 更新剧情进度
update_story_progress(state)
# 检查并触发剧情事件
story_event_result = check_and_trigger_story_event(state)
# 生成 agent 行动
actions = generate_actions(state)
# 保存状态
save_state(state)
return StepResponse(
world_state=state,
actions=actions,
global_event=global_event_result,
triggered_faction_event=faction_event_result,
story_event=story_event_result,
action_feedbacks=action_feedbacks
)
@app.get("/health")
def health():
"""健康检查"""
return {"status": "ok"}