wp-output-validator
输出硬校验 Skill。对 LLM 输出做确定性检查(不调 LLM):决策档位枚举、列表非空、激进决策与纪律违规冲突、chat_answer 长度等。校验失败返回 ValidationResult 含失败规则列表,调用方决定 retry 或 fallback。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
输出硬校验 Skill。对 LLM 输出做确定性检查(不调 LLM):决策档位枚举、列表非空、激进决策与纪律违规冲突、chat_answer 长度等。校验失败返回 ValidationResult 含失败规则列表,调用方决定 retry 或 fallback。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
从投资决策建议生成确定性分批执行计划草案。规则引擎产出所有数字(触发价/数量/批次),LLM 只写解释文案。type=function_call(确定性 orchestrator,非 llm_dispatch)。
为单一持仓标的(股票/基金)生成投资决策建议。适用场景包括用户询问"X 还能拿吗"、"X 该不该卖"、"X 涨了好多要不要止盈"等明确针对单标的的决策问题。该 Skill 编排 5 个阶段的工作流:数据加载 → 前置校验 → 规则校验 → 信号生成 → LLM 推理,最后输出 6 档结构化决策(BUY/HOLD/TAKE_PROFIT/REDUCE/SELL/STOP_LOSS)。
从 WealthPilot 知识库中语义检索用户原则类知识。覆盖三类内容: 投资纪律(investment_principles)、投资风格(investment_style)、 资产配置原则(allocation_principles)。 适用于需要"用户原则视角"的决策场景。 注意:本 Skill 不负责标的相关投研观点(那是 wp-fetch-research 的职责)。
把投资决策对话上下文翻译为结构化行动清单草稿(ActionListDraft)。仅在用户点击"生成行动清单"按钮时调用,不在每轮对话中运行。trigger: manual_button_only。不被 LLM Skill Selector 选择。
加载决策所需的完整上下文,是 ExecutingAgent 启动时调用的组合 Skill(Composite Skill)。内部封装:用户画像 + 持仓快照 + 纪律配置 + target_position 查找(含 LLM 语义兜底)+ 投研观点(含 M7 三层基金判别)+ 数据告警累积。这是 v3.0 设计中明确的"组合能力"——服务于业务自然边界,不强行拆为多个原子 Skill。
计算用户当前组合各资产类别(权益/固收/另类/衍生品/货币)相对目标区间的偏离度。返回结构化 DeviationSnapshot,含每类资产的 current_pct / target_range / deviation 等。
| name | wp-output-validator |
| description | 输出硬校验 Skill。对 LLM 输出做确定性检查(不调 LLM):决策档位枚举、列表非空、激进决策与纪律违规冲突、chat_answer 长度等。校验失败返回 ValidationResult 含失败规则列表,调用方决定 retry 或 fallback。 |
| version | 1.0.0 |
| type | validation |
| entry_point | backend.graph.decision_validator:validate_decision_output |
| inputs | {"type":"object","properties":{"result":{"type":"LLMResult or GenericLLMResult"},"intent_type":{"type":"string"},"discipline_violations":{"type":"list"}},"required":["result","intent_type"]} |
| outputs | {"type":"ValidationResult","description":"含 passed / action / failures(list[ValidationFailure])"} |
| tags | ["validation","output-quality","deterministic-check"] |
输出硬校验。
| 检查 | 失败规则名 | 严重度 |
|---|---|---|
| chat_answer 非空 | chat_answer_empty | hard |
| chat_answer >= 20 字 | chat_answer_too_short | hard |
| is_fallback = False | is_fallback | hard |
| decision 在 6 档枚举内 | decision_invalid | hard |
| reasoning 列表非空 | reasoning_empty | hard |
| risk 列表非空 | risk_empty | hard |
| 纪律严重违规 + 激进决策冲突 | discipline_conflict | hard |
| confidence < 0.5 时 infoNeeded 非空 | low_confidence_no_info_needed | soft |
任一 hard 规则失败 → passed=False,返回失败列表。
action="pass"action="fallback"(LLM 本身出错,重试没意义)action="retry"ReviewingAgent 内部第一层调用本 Skill 做硬校验:
from backend.graph.decision_validator import validate_decision_output
result = validate_decision_output(
result=llm_result,
intent_type="PositionDecision",
)
# result.passed: bool
# result.action: str (pass/retry/fallback)
# result.failures: list[ValidationFailure]