实战解析:基于东方财富 API 的自然语言自选股增删查)
妙想自选股管理 Skillmx-zixuan实战解析基于东方财富 API 的自然语言自选股增删查【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/datawhalechina/hello-agents导读本篇文章围绕 hello-agents 仓库中「智能股票分析助手」项目Co-creation-projects/lcyting-StockSage-agent的自选股管理 Skillmx-zixuan展开讲解如何通过自然语言查询、添加、删除东方财富通行证账户下的自选股并给出可直接运行的 Python 脚本调用方式、底层接口协议与异常处理方案。读完本文你将掌握一个完整 Skill 的骨架结构、凭据管理方式以及它如何被后端服务层与 API 路由层二次封装、最终供 Web 前端与 Agent 调用。一、Skill 定位把自选股管理变成一句自然语言mx-zixuan 是东方财富妙想团队发布的官方 Skill其元信息定义在 SKILL.md 的 YAML frontmatter 中元数据字段值说明namemx-zixuanSkill 的唯一标识名display_name妙想自选股管理 (MXSKILLS)面向用户的展示名description基于东方财富通行证账户数据及行情底层数据构建支持通过自然语言查询、添加、删除自选股供 Agent 理解 Skill 用途的说明author东方财富妙想团队官方来源version1.0.0版本号required_env_varsMX_APIKEY运行必需的环境变量credentialsapi_key类型名为MX_APIKEY凭据声明从东方财富妙想 Skills 页面获取该 Skill 的核心能力只有三个全部围绕东方财富通行证账户下的自选股数据✅ 查询我的自选股列表✅ 添加指定股票到我的自选股列表✅ 从我的自选股列表中删除指定股票所有操作均以自然语言指令为输入接口统一返回 JSON 格式内容。这与仓库中其他妙想 Skill智能选股 mx-xuangu、模拟组合管理 mx-moni、金融数据 mx-data 等共享同一套命名规范与凭据体系是 StockSage 项目中自选股业务能力的底层数据源。二、配置与前置要求2.1 获取并配置 API Key运行该 Skill 只需一个密钥MX_APIKEY步骤如下在东方财富妙想 Skills 页面获取 apikeySKILL.md 的homepage字段即指向该申请入口。将 apikey 配置到环境变量MX_APIKEYexport MX_APIKEYyour_apikey_here确保服务器网络可以访问https://mkapi2.dfcfs.com。从源码实现看mx_zixuan.py 的get_apikey()提供了两级取值逻辑优先读环境变量os.environ.get(MX_APIKEY, )环境变量缺失时回退读.env文件查找mx-zixuan目录上一级的.env文件逐行解析MX_APIKEYvalue格式的键值对自动忽略空行与#注释行。两级都取不到时会在 stderr 打印❌ 未找到MX_APIKEY请设置环境变量的提示并抛出RuntimeError(MX_APIKEY 未配置)。这一设计与仓库中其他mx_*Skill 保持一致方便在本地开发时用.env文件统一管理密钥。2.2 安全注意事项官方声明外部请求本 Skill 会将您的查询文本发送至东方财富官方 API 域名mkapi2.dfcfs.com以获取金融数据凭据保护API Key 仅通过环境变量MX_APIKEY在服务端或受信任的运行环境中使用不会在前端明文暴露。2.3 输出目录与文件约定默认输出目录/root/.openclaw/workspace/mx_data/output/自动创建对应源码中output_dir.mkdir(parentsTrue, exist_okTrue)的初始化逻辑输出文件名前缀mx_zixuan_输出文件mx_zixuan_{query}.csv—— 自选股列表 CSV 格式方便 Excel 打开查看mx_zixuan_{query}_raw.json—— API 原始 JSON 数据供二次开发。输出目录可通过命令行参数--output-dir覆盖源码在 main() 中优先取参数值缺省时才使用上述默认路径。三、直接调用Python 脚本三种操作速览先设置环境变量export MX_APIKEYyour_apikey_here3.1 查询自选股列表# 明确命令 python ./mx_zixuan.py query # 自然语言查询 python ./mx_zixuan.py 查询我的自选股列表 python ./mx_zixuan.py 我的自选 python ./mx_zixuan.py 看一下自选3.2 添加股票到自选股# 明确命令 python ./mx_zixuan.py add 贵州茅台 python ./mx_zixuan.py add 300059 # 自然语言 python ./mx_zixuan.py 把贵州茅台添加到我的自选股列表 python ./mx_zixuan.py 加入自选 比亚迪3.3 删除自选股# 明确命令 python ./mx_zixuan.py delete 贵州茅台 # 自然语言 python ./mx_zixuan.py 把贵州茅台从我的自选股列表删除 python ./mx_zixuan.py 删除自选 万科A3.4 底层命令解析逻辑直接裸跑脚本且不带参数时会打印完整使用帮助并退出exit code 1。从 main() 的命令分派逻辑可以看清三种模式的判定规则输入模式判定方式实际请求明确命令query/list/查询/列表命令词白名单精确匹配调用query_self_select()查询接口明确命令add/添加/增加 股票参数命令词匹配且有args.stock拼接把{股票}添加到我的自选股列表后调用管理接口明确命令delete/del/remove/删除/移除 股票参数命令词匹配且有args.stock拼接把{股票}从我的自选股列表删除后调用管理接口其他任意自然语言落入 else 分支若句子含查询/列表/我的自选/有哪些关键词则走查询接口否则整体作为自然语言指令走管理接口这意味着即使不记忆任何命令语法直接把一句话丢给脚本它也能通过关键词路由到正确的接口。四、异常情形与处理方式完整对照表SKILL.md 给出了覆盖网络、鉴权、限流、业务数据四类异常的排查指引异常情形可能原因处理方式connect: Connection refused网络无法访问 mkapi2.dfcfs.com检查服务器网络配置确保能访问公网401 Unauthorized / API密钥不存在API Key 错误或已失效前往妙想Skills页面重新获取 API Key 并更新环境变量code113 / 今日调用次数已达上限当日调用次数超限前往妙想Skills页面获取更多调用次数自选股列表为空账户下没有自选股在东方财富App添加自选股后重试或使用 add 命令添加找不到该股票股票名称/代码不正确确认股票名称或代码正确使用6位数字代码成功率更高操作失败股票已经在自选股中添加或不在自选股中删除先查询确认当前自选股列表再操作JSON解析错误网络中断或返回内容不完整检查网络后重试此外脚本自身的错误处理逻辑还包括未配置 apikey提示设置环境变量MX_APIKEY并在.env文件读取失败时打印读取异常接口调用失败requests层的response.raise_for_status()会抛出 HTTP 错误业务层的status/code非 0 时打印❌ 查询失败/操作失败及服务端返回的message数据为空format_query_result()在dataList为空时提示用户到东方财富 App 查询。五、输出示例5.1 查询自选股成功 我的自选股列表 股票代码 | 股票名称 | 最新价(元) | 涨跌幅(%) | 涨跌额(元) | 换手率(%) | 量比 -------------------------------------------------------------------------------- 600519 | 贵州茅台 | 1850.00 | 2.78% | 50.00 | 0.35% | 1.2 300750 | 宁德时代 | 380.00 | -1.25% | -4.80 | 0.89% | 0.9 共 2 只自选股查询完成后会自动保存CSV 格式方便 Excel 打开查看原始 JSON保存供二次开发。从源码 format_query_result() 可以看出终端表格只抽取 7 个展示字段SECURITY_CODE、SECURITY_SHORT_NAME、NEWEST_PRICE、CHG、PCHG、010000_TURNOVER_RATE、010000_LIANGBI并对涨跌幅做了正负号与颜色语义处理涨幅为正时自动加前缀而 CSV 则依据接口返回的columns元数据把全部列的中文标题作为表头写出使用utf-8-sig编码确保 Excel 打开不乱码。5.2 添加/删除成功✅ 操作成功贵州茅台已添加到自选股列表六、底层接口协议两个接口都使用POST JSON请求鉴权统一通过 Header 传递apikey6.1 查询接口URLhttps://mkapi2.dfcfs.com/finskillshub/api/claw/self-select/get方法POSTHeaderapikey: {MX_APIKEY}Body空 JSON{}对应源码 query_self_select()携带Content-Type: application/json与apikey两个 Header请求超时时间设为 30 秒返回响应体 JSON。6.2 管理接口添加/删除URLhttps://mkapi2.dfcfs.com/finskillshub/api/claw/self-select/manage方法POSTHeaderapikey: {MX_APIKEY}Body{query: 自然语言指令}对应源码 manage_self_select()与查询接口的区别在于请求体携带query字段内容即把 X 添加到我的自选股列表或把 X 从我的自选股列表删除这类自然语言指令由妙想服务端解析执行。6.3 响应状态判定约定两处格式化函数均遵循同一判定规则status与code同时为 0 才算成功否则取message字段打印错误原因。查询接口的成功响应嵌套结构为data.allResults.result.columns列定义与data.allResults.result.dataList行数据后续的 StockSage 后端服务层解析也正是沿用了这套路径。七、在 StockSage 项目中的工程化封装mx-zixuan 不只是命令行脚本在「智能股票分析助手」中它被后端服务层与 API 层二次封装成为 Web 端自选股功能的真实数据源见项目 README 中业务 API 与 Agent 分工一节选股、自选股、模拟交易由后端 Service 直连skills/。7.1 服务层watchlist_service.pywatchlist_service.py 将脚本的模块级函数直接 import 复用启动时把skills/自选股管理/mx-zixuan目录注入sys.path然后import mx_zixuan as _mxget_watchlist()调用_mx.query_self_select(settings.MX_APIKEY)将返回的dataList中 7 个字段映射为{code, name, price, change_pct, change_amount, turnover_rate, volume_ratio}结构add_to_watchlist() / delete_from_watchlist()分别拼接把 X 添加到我的自选股列表把 X 从我的自选股列表删除指令后调用_mx.manage_self_select()结果缓存查询结果写入妙想侧进程内 TTL 缓存默认 600 秒与 mx_data / mx_search 共用添加/删除成功后会调用_invalidate_watchlist_cache()主动失效缓存保证下一次查询立即拿到最新数据API Key 兜底校验MX_APIKEY未配置或仍为占位值your-mx-apikey-here时直接返回MX_APIKEY 未配置错误不发起网络请求。7.2 API 层watchlist.pywatchlist.py 以 FastAPI 暴露三个 RESTful 接口方法路径说明GET/api/v1/watchlist/查询自选股列表返回{stocks, total}POST/api/v1/watchlist/添加自选股请求体{stock}如贵州茅台/600519DELETE/api/v1/watchlist/{stock}删除自选股路径参数为股票名称或 6 位代码服务层返回的success/error会被转换为统一的success_response/error_response包装前端 Vue3 页面仪表盘自选直接价格展示、股票分析页与智能选股结果行加自选、移除二次确认均经由这组接口落地。这也印证了 README 中自选股增删查直接走 Service → skills 直连的架构设计——Skill 本身不依赖任何 Agent 框架可被 CLI、Web 服务、Agent 工具等多种形态复用。八、Skill 目录规范小结一个完整的妙想 Skill 目录通常由三个文件组成本仓库skills/下所有妙想技能均遵循此约定自选股管理/mx-zixuan/ ├── SKILL.md # 元信息frontmatter 能力说明 使用方式 异常处理 接口文档 ├── _meta.json # 平台元数据ownerId / slug / version / publishedAt └── mx_zixuan.py # 可直接执行的命令行工具实现从源码结构看mx_zixuan.py中safe_filename()对查询词做文件名安全化空格、斜杠、冒号等替换为下划线并截断 80 字符、输出文件前缀mx_zixuan_、目录自动创建等约定均与其他mx_*脚本保持一致便于在统一的/root/.openclaw/workspace/mx_data/output/目录下聚合管理所有妙想技能的产物。如果你需要在本仓库中继续扩展自选股相关能力参照该目录结构复制改造即可。九、总结mx-zixuan 以一行命令 一句自然语言的方式屏蔽了东方财富自选股接口的复杂度查询、添加、删除三类操作共用两个 POST 接口凭据统一收敛到MX_APIKEY结果自动落盘为 CSV 与原始 JSON异常场景在官方文档中均给出明确处置建议。在 hello-agents 的 StockSage 项目中它又被服务层与 API 层二次封装为可缓存、可失效的 Web 接口验证了一条清晰的 Skill 落地路径Skill 定义数据能力 → Service 层做解析与缓存 → API 层做协议适配 → 前端/Agent 消费。后续如需了解同仓库其他妙想技能智能选股、模拟组合、金融数据、资讯搜索可对比阅读对应 SKILL.md 与实现脚本会发现它们共享同一套设计与工程化范式。【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/datawhalechina/hello-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考