feat(steward): 拦截业务无关输入返回 off_topic 计划

- schemas/steward.py:StewardPlanResponse 新增 suggested_prompts 字段
- steward_planner.py:新增 STEWARD_BUSINESS_SIGNAL_KEYWORDS 与
  _is_business_irrelevant_input 守卫,在 build_plan 入口前置;
  新增 _build_off_topic_plan 构造 plan_status=off_topic 的引导计划
- steward_intent_agent.py:system prompt 追加业务无关约束
- test_steward_planner.py:覆盖 123/你好/纯标点走 off_topic,
  并验证正常业务输入不受守卫影响
This commit is contained in:
caoxiaozhu
2026-06-18 14:15:20 +08:00
parent b8915a29c0
commit cce19e4c40
4 changed files with 143 additions and 0 deletions

View File

@@ -128,6 +128,10 @@ class StewardPlanResponse(BaseModel):
)
candidate_flows: list[StewardCandidateFlow] = Field(default_factory=list, description="等待用户确认的候选流程快捷列表。")
model_call_traces: list[dict[str, Any]] = Field(default_factory=list, description="模型工具调用轨迹。")
suggested_prompts: list[str] = Field(
default_factory=list,
description="当 plan_status 为 off_topic 等场景时,给用户的推荐话术示例。",
)
class StewardSlotOption(BaseModel):