Coding

etf-intent-gate

Try it

ETF/行业投研平台的网关级前置意图识别与安全兜底Skill。执行于用户输入之后、业务Agent集群分发之前:规则引擎过滤非法字符/prompt注入/违规话术,LLM意图识别输出结构化JSON(7种intent_type),query标准化改写(把"可以买吗"改写为投研分析指令),Agent裁剪调度与异常降级。Use when building an ETF research platform gateway, adding pre-dispatch intent classification and safety guardrails before fan-out to multiple r

What it does

ETF/行业投研平台的网关级前置意图识别与安全兜底Skill。执行于用户输入之后、业务Agent集群分发之前:规则引擎过滤非法字符/prompt注入/违规话术,LLM意图识别输出结构化JSON(7种intent_type),query标准化改写(把"可以买吗"改写为投研分析指令),Agent裁剪调度与异常降级。Use when building an ETF research platform gateway, adding pre-dispatch intent classification and safety guardrails before fan-out to multiple research agents.

The skill document

ETF Intent Gate(ETF投研平台前置意图识别网关)

为"用户请求 → 多Agent并行投研分析"架构提供网关级前置安全与意图校验:只有校验通过才下发下游Agent,不通过直接返回标准化应答,避免下游Agent被脏输入污染、跑错方向或浪费算力。

何时使用

  • 用户正在搭建 ETF/行业/指数投研平台,聊天请求需要分发到多个业务Agent(宏观/事件/政策/估值/资金)并行处理
  • 需要在分发前拦截:非法字符、prompt注入、违规索要投资建议的query
  • 需要把口语化决策问句("芯片可以买吗")改写为客观投研指令(约束下游Agent不输出买卖建议)
  • 需要按意图裁剪Agent调度(用户只问政策 → 只跑政策agent,省算力)

核心设计(6阶段流水线)

  1. 规则预处理(不调LLM,高性能):清洗零宽/控制字符、script/SQL/markdown/prompt注入payload;长度校验(<2 或 >2000字符拦截);两级黑名单(block级:稳赚/必涨/内幕;warning级:梭哈/全仓仅打标)
  2. LLM意图识别:固定JSON Schema输出7种intent_type(etf_industry_research / platform_qa / chat_greeting / malicious_injection / illegal_content / investment_advice_request / unknown_intent),本地强校验不允许自由文本
  3. 业务边界校验:7种意图分支路由——放行(warning强制加免责声明)、平台问答、闲聊引导、注入/违规阻断、投资建议拒绝(区分口语化"可以买吗"=改写放行 vs 索要保本点位=拦截)
  4. 防注入二次校验:对改写后的query检测5类注入特征,命中直接覆盖为拦截
  5. 路由与埋点:转发场景输出调度器任务上下文(standard_query + agent_allow_list + risk_warning);单行JSON结构化埋点日志
  6. 异常降级:LLM超时/解析失败 → conservative(默认拦截,推荐金融平台)/ loose(放行打intent_parse_failed标)双模式可配

安全核心约束:下游Agent永远只使用改写后的 standard_query,禁止透传用户原始query。

安装与运行

# 1. 安装依赖(Python 3.11+)
pip install -r requirements.txt

# 2. 配置LLM(任意OpenAI兼容服务:GLM/DeepSeek/通义等)
cp .env.example .env
# 编辑 .env 填入:
#   INTENT_LLM_API_KEY=你的key
#   INTENT_LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4  (示例:智谱)
#   INTENT_LLM_MODEL=glm-4-flash
# 不配置时自动进入mock模式(本地规则模拟意图),可先跑通链路

# 3. 启动网关服务
uvicorn app.api:app --host 127.0.0.1 --port 8300

调用接口

POST /api/v1/intent/check
Content-Type: application/json

{"query": "芯片行业可以买吗?"}

返回示例(放行场景):

{
  "request_id": "ffc571a3...",
  "action": "forward",
  "risk_level": "warning",
  "intent_type": "etf_industry_research",
  "result": {
    "standard_query": "对芯片行业做ETF相关投研分析,涵盖宏观、行业事件、产业政策、估值、资金面维度,仅输出客观事实与数据,不给出买入卖出投资决策建议",
    "risk_warning": true,
    "agent_allow_list": ["宏观agent", "事件agent", "政策agent", "估值agent", "资金agent"]
  }
}

拦截场景返回 action: "intercept",并附 reply_to_user 直接返回给聊天框;action: "platform_qa" 表示路由到平台问答模块而非投研Agent。

一键自测

# 先启动服务(终端1),然后:
python examples/manual_test.py   # 10个典型case自动比对
python -m pytest tests/ -v       # 23个pytest,无需启动服务

集成约定(下游调度器必须遵守)

  • 调度器只把 result.standard_queryresult.entity_extract 传给业务Agent
  • original_user_query 仅日志留存,不流入业务Agent
  • risk_warning: true 时汇总结果页强制追加投资风险免责声明
  • 下游Agent侧仍需二次校验,禁止输出买卖建议(多层防御)

文件结构

etf-intent-gate/
├── SKILL.md            # 本文件
├── requirements.txt    # Python依赖(fastapi/uvicorn/httpx/pydantic等)
├── .env.example        # LLM配置模板
├── app/                # 核心实现(6阶段流水线)
│   ├── preprocess.py   # 阶段1:规则引擎
│   ├── prompts.py      # 阶段2:意图识别System Prompt
│   ├── llm_client.py   # 阶段2:OpenAI兼容调用+mock模式
│   ├── pipeline.py     # 阶段3-6:边界校验/防注入/路由/降级
│   └── api.py          # FastAPI网关入口+埋点
├── tests/              # 23个pytest用例
├── examples/           # 10case一键自测脚本
└── references/         # 设计文档

详细文档

  • 设计思路与踩坑要点见 references/design.md

Related skills

ETF(交易型开放式指数基金)信息与行情查询。ETF 在证券交易所上市交易,通常通过券商股票账户买卖,盘中按交易价格成交,以6位证券代码识别(如510300)。 支持查询ETF基础信息、规模费率、持仓明细、历史分红、区间收益、资金流向、涨幅榜、热搜榜、按持仓股票反查相关ETF,以及最新价、盘中涨跌、成交、换手率、IOPV、溢折率和分钟走势。 适用于用户关注场内ETF基础信息、成交活跃度、主题ETF筛选、同类ETF比较和实时行情等场景。如果用户通过银行、基金公司或第三方基金销售平台申购赎回指数基金,应使用 open-fund-query;如果用户查询指数本身,应使用 index-query。

2 installs1 stars

用 Cue 一键深度拆解热门赛道与ETF——赛道全景分析、同类ETF横向对比、底层持仓穿透、估值水位研判,告诉你"这条赛道值不值得投、哪只ETF更匹配"。

股权投资技能套件:审条款、尽调清单、投决备忘录、测收益、筛项目、退出分析。 审条款: 帮我看下这个TS, 帮我审下SPA条款, term sheet, 审TS, 审SPA; 尽调清单: 尽调清单, due diligence, DD checklist; 投决备忘录: 帮我写投决纪要, 帮我出IC Memo, 投决备忘录, 投委会; 测收益: 帮我算下IRR, 帮我测下回报率, MOIC, DPI, 算IRR; 筛项目: 筛项目, deal sourcing, 项目初筛; 退出分析: 退出分析, 退出路径, IPO退出。

证券指数信息与行情查询。指数用于反映一组证券的整体表现,是市场基准,不是可直接申购赎回的基金产品,通常以6位指数代码识别(如000300)。 支持查询指数基础信息、分类、编制属性、成分股、行业和市值分布、区间收益、波动与回撤、PE/PB/PS估值及历史分位、ROE、股息率、营收和利润增速、相关ETF或场外基金,以及最新点位、涨跌、成交和分钟走势。 适用于用户关注沪深300、中证500、红利、行业或主题指数的检索筛选、成分股反查、指数比较、估值基本面和实时行情等场景。如果查询具体ETF产品,应使用 etf-fund-query;如果查询具体场外指数基金,应使用 open-fund-query

积分守卫 Skill — 在执行任何高消耗任务前,自动完成提问优化、积分预估、风险拦截、替代方案推荐, 帮助用户以最少积分完成有实际产出的任务。适用于 WorkBuddy 平台积分管理场景。

3 installs1 stars

Free no-API-key A-share ecosystem data query skill for OpenClaw and Hermes. Use when users ask for A股、沪深京股票、指数、ETF/LOF、可转债、行业/概念板块、实时行情、K线、涨跌排行、涨停/跌停/炸板、资金流、...

by Wu Bo Yu16 installs