ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

mx-search 妙想资讯搜索 Skill 实战:从金融信源筛选到 HelloAgents 智能体工具封装

mx-search 妙想资讯搜索 Skill 实战:从金融信源筛选到 HelloAgents 智能体工具封装 mx-search 妙想资讯搜索 Skill 实战从金融信源筛选到 HelloAgents 智能体工具封装【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/datawhalechina/hello-agents本文围绕开源仓库 Datawhale《从零开始构建智能体》中社区共创项目StockSage 智能股票分析助手Co-creation-projects/lcyting-StockSage-agent所内置的mx-search 妙想资讯搜索 Skill展开。mx-search 基于东方财富妙想搜索能力专为金融场景进行信源智能筛选用于获取新闻、公告、研报、政策、交易规则、具体事件及各种影响分析等时效性信息。读完本文你将掌握该 Skill 的完整配置方式、命令行调用方法、底层 API 实现原理以及如何将其封装为符合 HelloAgents 规范的 Tool 供智能体调用从而避免金融信息搜索中常见的参考到非权威、过时信息问题。一、Skill 定位为什么金融资讯搜索需要专门的 Skill大模型在回答金融类问题时若直接依赖通用搜索或训练数据中的知识容易遇到两类典型问题一是信源不权威搜索结果可能混入自媒体、营销号等非权威来源二是信息过时金融市场时效性极强公告、研报、政策解读在几小时内就会影响行情判断。mx-search 正是为解决这一问题而设计。根据其 SKILL.md 中的定义它基于东方财富妙想搜索能力基于金融场景进行信源智能筛选适用于涉及时效性信息或特定事件信息的任务包括新闻、公告、研报政策与交易规则具体事件及其影响分析需要检索外部数据的非常识信息在 StockSage-agent 的项目结构中skills/目录是东方财富妙想 Skill业务 API 直连层包含资讯搜索mx-search、金融数据mx-data、智能选股mx-xuangu、自选股管理mx-zixuan、模拟组合管理mx-moni等多个 Skill见 README.md。其中资讯搜索承担AI 舆情分析与新闻资讯两大模块的数据采集职责。二、Skill 元数据与目录结构mx-search Skill 位于Co-creation-projects/lcyting-StockSage-agent/skills/资讯搜索/mx-search/目录下共三个文件文件作用SKILL.mdSkill 的声明文档包含 frontmatter 元数据与使用说明mx_search.py核心实现脚本封装妙想搜索 API_meta.jsonSkill 发布元数据ownerId、slug、版本、发布时间SKILL.md 的 frontmatter 完整声明了 Skill 的关键信息--- name: mx-search display_name: 妙想资讯搜索 (MXSKILLS) title: 妙想资讯搜索 skill description: 本skill基于东方财富妙想搜索能力基于金融场景进行信源智能筛选... homepage: https://dl.dfcfs.com/m/itc4 author: 东方财富妙想团队 version: 1.0.5 required_env_vars: - MX_APIKEY credentials: - type: api_key name: MX_APIKEY description: 从东方财富妙想Skills页面获取的 API Key ---关键点解读version: 1.0.5与 _meta.json 中记录的version: 1.0.5一致两者共同确认该 Skill 当前版本。required_env_vars: [MX_APIKEY]Skill 的运行强依赖环境变量MX_APIKEY没有它脚本将直接报错退出。credentials声明了 API Key 类型凭据来源为东方财富妙想 Skills 页面。三、配置设置 MX_APIKEY 环境变量使用 mx-search 前需要完成两步配置获取 API Key在妙想 Skills 页面申请 API Key。配置环境变量将 API Key 存入名为MX_APIKEY的环境变量export MX_APIKEYyour_apikey_here⚠️ 环境变量是唯一的凭据注入通道。源码层面mx_search.py 在MXSearch.__init__中通过os.getenv(MX_APIKEY)读取若未设置将抛出ValueError并提示先执行export MX_APIKEY...。同时该构造器也支持通过参数api_key显式传入实现参数优先、环境变量兜底的取值策略该策略在 Tool 封装层同样生效见下文智能体集成一节。在 StockSage-agent 的完整部署场景中MX_APIKEY还会写入项目根目录的.env文件由后端配置模块统一加载详见 README.md 的环境变量说明。四、命令行调用支持自然语言问句mx-search 支持直接以 Python 脚本方式运行第一个参数为自然语言搜索问句第二个参数可选为自定义输出目录。以下是 SKILL.md 中提供的全部常用调用示例# 常用调用示例 # 1. 个股相关资讯 python ./mx_search.py 东方财富最新公告 python ./mx_search.py 贵州茅台最新研报 python ./mx_search.py 比亚迪机构观点汇总 # 2. 行业/板块新闻 python ./mx_search.py 人工智能板块近期新闻 python ./mx_search.py 新能源汽车产业政策最新解读 # 3. 宏观经济与市场分析 python ./mx_search.py 美联储加息对A股影响分析 python ./mx_search.py 今日大盘异动原因分析 python ./mx_search.py 北向资金最新流向解读 # 4. 个股事件 python ./mx_search.py 贵州茅台分红派息实施公告 python ./mx_search.py 宁德时代定增预案解读 # 5. 交易规则 python ./mx_search.py 科创板交易涨跌幅限制 python ./mx_search.py 新股申购规则 # 6. 指定输出目录可选 python ./mx_search.py 格力电器最新研报 /path/to/output从源码看mx_search.py 的main()函数采用以下参数解析逻辑无参数运行时打印用法提示并退出sys.exit(1)两个及以上参数时将argv[1:-1]拼接为查询问句最后一个参数视为输出目录仅一个参数时该参数为查询问句输出目录回落到默认值/root/.openclaw/workspace/mx_data/output。输出目录会自动创建output_dir.mkdir(parentsTrue, exist_okTrue)保证目录不存在时自动递归创建。五、源码解析MXSearch 客户端与 API 交互mx-search 的核心实现位于 mx_search.py代码量约 200 行结构清晰包含一个客户端类与两个静态处理方法。5.1 MXSearch 类API 请求封装class MXSearch: BASE_URL https://mkapi2.dfcfs.com/finskillshub/api/claw/news-search def __init__(self, api_key: Optional[str] None): self.api_key api_key or os.getenv(MX_APIKEY) if not self.api_key: raise ValueError(...) def search(self, query: str) - Dict[str, Any]: headers { Content-Type: application/json, apikey: self.api_key } data {query: query} response requests.post(self.BASE_URL, headersheaders, jsondata, timeout30) response.raise_for_status() return response.json()值得注意的工程细节API 端点mkapi2.dfcfs.com为东方财富官方 API 域名请求路径为/finskillshub/api/claw/news-search采用 HTTP POST JSON 请求体{query: 问句}。鉴权方式API Key 放在请求头apikey字段中而非常见的Authorization: Bearer风格。超时控制timeout30秒防止请求长期挂起response.raise_for_status()将非 2xx 响应直接抛为异常。5.2 两个关键静态方法extract_content(result)从 API 响应中递归提取纯文本。它按优先级依次尝试剥开data/result信封包装层提取llmSearchResponse、searchResponse、content、answer、summary等关键字段的字符串值兜底将整个响应json.dumps为缩进 JSON。format_pretty(result)将结果格式化为终端可读文本这是理解输出说明的关键。其解析层级为result → data → data → llmSearchResponse → data → items对每条资讯提取并展示以下字段字段含义title资讯标题content正文内容date日期展示时只取日期部分date.split()[0]insName发布机构informationType资讯类型映射为中文REPORT→研报、NEWS→新闻、ANNOUNCEMENT→公告rating评级entityFullName关联证券名称每条资讯以--- {序号}. {标题} ---的分隔样式输出元信息用|连接正文独占段落。若响应status ! 0则直接输出错误: 状态码 - 消息若没有资讯条目则输出未找到相关资讯。5.3 输出文件命名safe_filename 处理输出文件名前缀 定义为mx_search_文件名为mx_search_{query}.txt与mx_search_{query}.json。其中query并非原始问句而是经过safe_filename()处理的安全文件名将:/\|?*等非法文件名字符替换为下划线空格替换为下划线长度截断至 80 字符max_len80去除首尾的点与下划线空串时回退为query。这一步保证了任意自然语言问句包括含中文、空格、特殊符号的查询都能生成合法且可预测的文件名。六、输出说明终端展示与双文件落盘根据 SKILL.md 的输出说明一节脚本执行后会依次完成四件事终端格式化输出搜索结果列出每条资讯的标题、来源、日期、内容自动创建输出目录/root/.openclaw/workspace/mx_data/output/在源码中通过mkdir(parentsTrue, exist_okTrue)实现保存纯文本提取结果到.txt文件使用extract_content提取的内容UTF-8 编码写入保存原始 JSON 响应供二次处理json.dump(result, f, ensure_asciiFalse, indent2)保留完整数据结构便于下游程序做字段级解析。这一人类可读文本 机器可读 JSON的双输出设计非常实用文本结果可以直接作为 LLM 的上下文输入而 JSON 原始数据则保留了secuList、结构化数据块等所有细节供需要精确字段的程序继续加工。七、返回数据结构字段路径说明SKILL.md 明确给出了返回数据的关键字段路径便于二次开发时按路径取值字段路径简短释义title信息标题高度概括核心内容secuList关联证券列表含代码、名称、类型等secuList[].secuCode证券代码如 002475secuList[].secuName证券名称如立讯精密secuList[].secuType证券类型如股票 / 债券trunk信息核心正文 / 结构化数据块承载具体业务数据结合源码中的format_pretty可以确认完整的资讯条目实际位于data.data.llmSearchResponse.data[]除上述字段外还包含content正文、date日期、insName机构、informationType资讯类型、rating评级、entityFullName实体全称等字段开发者在对接时可依据两处信息共同定位。八、问句示例覆盖四大金融检索场景SKILL.md 归纳了 mx-search 适用的四类问句形态可作为 Agent 提示词设计时的参考语料类型示例问句个股资讯格力电器最新研报、贵州茅台机构观点板块/主题商业航天板块近期新闻、新能源政策解读宏观/风险A股具备自然对冲优势的公司 汇率风险、美联储加息对A股影响综合解读今日大盘异动原因、北向资金流向解读这些问句同时出现在 mx_search_tool.py 的工具描述与参数描述中说明自然语言问句是该 Skill 从命令行到 Agent 工具层保持一致的接口契约。九、异常情形与排查清单网络与第三方 API 调用不可避免会遇到异常。SKILL.md 给出了完整的异常排查表实际排障时可逐项对照异常情形可能原因处理方式connect: Connection refused网络无法访问 mkapi2.dfcfs.com检查服务器网络配置确保能访问公网401 Unauthorized / API密钥不存在API Key 错误或已失效前往妙想Skills页面重新获取 API Key 并更新环境变量code113 / 今日调用次数已达上限当日调用次数超限前往妙想Skills页面获取更多调用次数未找到相关资讯关键词太偏门或没有最新相关信息尝试更换关键词或扩大搜索范围返回内容为空网络中断或请求超时检查网络后重试JSON解析错误网络不完整导致内容截断检查网络后重试此外源码层面还有两类兜底保护requests的非 2xx 状态会通过raise_for_status()抛出main()中的try/except会把所有异常统一打印到 stderr 并以非零码退出——这意味着脚本适合在 CI 或 Agent 子进程中调用调用方可以通过退出码判断成功与否。十、安全注意事项外部请求与凭据保护SKILL.md 明确提示了两点安全要求外部请求Skill 会将查询文本发送至东方财富官方 API 域名mkapi2.dfcfs.com以获取金融数据使用前需确认运行环境允许访问公网凭据保护API Key 仅通过环境变量MX_APIKEY在服务端或受信任的运行环境中使用不会在前端明文暴露。这在 StockSage-agent 的整体架构中体现为凭据只进后端前端通过 FastAPI 后端路由发起请求MX_APIKEY始终留在服务端环境变量中用户浏览器无法直接接触见 README.md 的部署说明。十一、智能体集成将 mx-search 封装为 HelloAgents 标准 Toolmx-search 的真正价值在于与智能体的深度集成。StockSage-agent 在agents/tools/mx_search_tool.py中将其封装为符合 HelloAgents 规范的MXSearchTool继承自hello_agents.tools.Tool并提供了完整的工具契约。11.1 MXSearchTool工具封装要点封装的核心逻辑包括延迟导入_get_mx_module()在使用时才import mx_search避免 Tool 初始化阶段因依赖缺失而报错参数声明通过get_parameters()声明唯一的必填参数querystring 类型描述中内置了五类问句模板个股资讯、行业新闻、宏观分析、事件公告、交易规则帮助 LLM 正确构造调用运行实现run(parameters)中校验query非空、校验MX_APIKEY已配置然后创建MXSearch(api_key...)实例发起搜索输出整形_format_result()将结果整理为带标题层级##/###的 Markdown 风格文本映射REPORT/NEWS/ANNOUNCEMENT为中文类型并限制最多展示 15 条max_items 15超出时在末尾标注仅显示前 15 条单条正文上限 2500 字符MX_SEARCH_CONTENT_MAX_CHARS 2500超长内容通过truncate_at_natural_boundary在自然边界段落/句号处截断避免上下文被截断的残句污染。这些约束非常重要金融资讯正文往往冗长若不设上限多轮 ReAct 的上下文窗口会被单次搜索快速耗尽。11.2 舆情分析 Agentmx-search 的典型消费方在 sentiment_agent.py 中MXSearchTool被注册进ToolRegistry供ReActAgent在推理循环中自主调用registry ToolRegistry() search_tool MXSearchTool(api_keyapi_key) registry.register_tool(search_tool) agent ReActAgent( name舆情分析Agent, llmllm, tool_registryregistry, system_promptprompt, configConfig(temperature0.3, max_tokens4096), max_stepsmax_steps, )该 Agent 的系统提示词SENTIMENT_SYSTEM_PROMPT围绕 mx-search 的能力设计了完整分析流程搜索最新资讯 → 逐条分析情感倾向 → 识别关键事件 → 综合研判舆情趋势。提示词中特别强调了信源权威性排序官方公告 权威研报 新闻报道与时效性优先原则这正是 mx-search金融信源智能筛选定位在 Agent 行为层面的落地。Agent 通过agent.stream_run(task)流式执行tool_call事件会对外暴露正在调用工具的状态前端即可实时展示搜索过程README 中将其列为AI 舆情分析的流式特性。11.3 调用链路小结从用户提问到资讯结果完整调用链为用户问句 → ReActAgent舆情/数据分析/对话子 Agent → MXSearchTool.run({query: 贵州茅台最新研报}) → MXSearch.search() POST https://mkapi2.dfcfs.com/finskillshub/api/claw/news-search → 解析 data.data.llmSearchResponse.data[] 并格式化 → 返回可读文本注入 Agent 上下文 → LLM 综合生成舆情结论命令行脚本、Tool 封装、Agent 三个层级共享同一套MXSearch客户端与自然语言问句接口职责单一、便于维护。十二、总结一个可复用的金融资讯 Skill 样板mx-search 提供了完整的 Skill 工程化范例可从三个层面复用能力层面以金融场景信源智能筛选为定位通过官方 API 规避非权威与过时信息是金融 Agent 数据采集层的关键一环实现层面SKILL.md声明_meta.json元数据mx_search.py实现的三文件结构配合环境变量凭据注入、安全文件名处理、双格式落盘、异常排查表构成了一个开箱即用的 Skill 模板集成层面通过Tool子类封装实现命令行能力 → Agent 工具能力的平滑迁移输出截断、条数限制、自然边界截断等工程细节保证了 ReAct 多轮推理中上下文的可用性。如果你正在为自己的智能体构建金融资讯检索能力可以直接参考本 Skill 的目录结构、MXSearch客户端封装方式与MXSearchTool的适配模式若需要在 StockSage-agent 中实际体验可运行python ./mx_search.py 贵州茅台最新研报或通过项目的 AI 对话助手发起一次舆情分析任务观察完整的 Agent 工具调用过程。免责声明本文内容仅用于技术学习与研究所有搜索结果与舆情分析均不构成投资建议。投资有风险入市需谨慎。【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/datawhalechina/hello-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表