从数据到决策:用OpenClaw构建你的全自动AI投研工作流 —整合akshare-data、Stock-Watcher、Tavily Search与Self-Improving,打造安全、闭环智能体
1. 为什么要把投研流程交给 OpenClaw 智能体先说结论OpenClaw 是一个本地优先的开源 AI 智能体框架能真正操作你的电脑——读写文件、跑脚本、调接口、发消息。它适合谁适合每天要盯几十只自选股、又要翻新闻找原因、还得手动整理复盘笔记的个人投资者和量化爱好者。核心检索词就三个OpenClaw 智能体编排、akshare-data 行情拉取、Tavily Search 资讯补充。我自己的痛点很具体早上开盘前想看自选股异动得先开行情软件截图再去财经网站翻新闻最后手动拼成一段文字发给自己。三件事分散在三个工具里中间全靠人肉搬运。更麻烦的是昨天的判断对不对、错在哪根本没有记录第二天还是凭感觉。OpenClaw 的价值在于把这些动作串成一条流水线。akshare-data 负责把 A 股行情、财务、资金面数据拉下来Stock-Watcher 负责盯住自选股触发阈值就推送Tavily Search 负责补上“为什么涨跌”的非结构化情报Self-Improving 负责在下一个周期回看上次判断动态调整分析逻辑。四个组件各管一段OpenClaw 做总调度。这里有个关键前提模型调用通道要稳定、要统一。四个组件里至少有三个要调大模型做理解和总结如果每个技能各配一套 Key管理起来会疯掉。我的做法是通过 TaoToken 统一 Key/API 通道接入模型Base URL 指向https://taotoken.net/api所有技能共用一套凭证。这样换模型、查用量、排故障都只在一个地方操作。需要提醒的是这套系统只做信息查询、分析和决策辅助绝不接券商账户做自动交易。所有买卖动作必须由你本人确认。这是红线后面排障章节还会再强调。整篇文章我会按“装环境 → 配数据 → 配监控 → 配情报 → 配进化 → 跑一次完整回测验证”的顺序写每一步都给可复制的命令和配置。你跟着做最后能拿到一份自动生成的《每日动量报告》并且能看到它第二天怎么自我修正。2. TaoToken 前置统一模型通道与 Key 管理在装任何技能之前先把模型通道打通。原因很简单akshare-data 拉回来的是原始数据Stock-Watcher 触发的是事件Tavily Search 返回的是网页摘要这些都要送给大模型做理解、归纳、生成报告。如果模型通道不稳后面所有环节都是空中楼阁。TaoToken 在这里扮演的是统一入口的角色。你不需要在每个技能的配置文件里塞不同的厂商 Key只需要在 OpenClaw 的全局配置里写一次 Base URL 和 API Key所有技能通过环境变量继承。这样做的好处有三个一是换模型只改一处二是用量和报错集中可见三是避免 Key 散落在多个.env文件里造成泄露风险。具体操作分三步。第一步去 TaoToken 控制台创建一个 API Key。打开https://taotoken.net/console登录后在 API Keys 页面点新建复制生成的 Key形如sk-开头的一长串。这个 Key 只显示一次先存到密码管理器里。第二步确认你要用的模型 ID。不同任务对模型要求不一样数据归纳和报告生成用通用对话模型就够如果要做策略反思、逻辑推理可以选推理能力更强的模型。模型 ID 在模型对话页面能看到比如https://taotoken.net/models这类入口具体以控制台实际展示为准。记下你选定的 Model ID后面配置要用。第三步把 Base URL、Key、Model ID 三件套写进 OpenClaw 的全局环境文件。OpenClaw 默认读取~/.openclaw/.env你直接追加# 写入 OpenClaw 全局模型通道配置 cat ~/.openclaw/.env EOF TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_API_KEYsk-你的实际Key TAOTOKEN_MODEL_ID你的模型ID EOF # 重启网关让配置生效 openclaw gateway restart这里有个细节Base URL 结尾不要带/v1或/chat/completionsOpenClaw 的技能会自己拼接路径。如果你写多了会出现 404 或路径重复。我踩过的坑就是一开始写成了完整路径结果所有请求都报404 page not found排查了半小时才发现是 URL 拼重了。配置完成后验证通道是否通# 用 curl 直接测通道 curl -s https://taotoken.net/api/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: $TAOTOKEN_MODEL_ID, messages: [{role:user,content:回复OK两个字}] }如果返回里有choices字段和正常内容说明通道没问题。如果返回 401说明 Key 错了或没生效如果返回local proxy failed说明网络层有问题检查你的出口是否可达。这两个报错后面排障章节会详细讲。关于 Coding Plan如果你打算长期跑这套投研工作流每天多次调用模型建议了解一下 Coding Plan它在高频调用场景下比按量计费更划算。入口在https://taotoken.net/coding-plan。不过对于刚开始试水的朋友按量计费完全够用先跑通再说。3. 可复制配置四个技能与 OpenClaw 编排文件这一章是全文的核心所有配置都可以直接复制。我按“数据层 → 监控层 → 情报层 → 进化层 → 编排层”的顺序给。3.1 akshare-data 安装与配置akshare-data 把 AKShare 封装成标准化接口让智能体能直接查 A 股行情、财务、资金面。先装 Python 依赖再克隆技能# 安装 Python 依赖 pip install akshare pandas numpy # 克隆技能到 OpenClaw 技能目录 cd ~/.openclaw/skills git clone https://github.com/openclaw-skills/akshare-data # 重启网关加载技能 openclaw gateway restart装完后在 OpenClaw 对话里测试你帮我查一下贵州茅台 600519 今天的行情正常返回会包含收盘价、涨跌幅、成交额、市盈率。如果返回“技能未找到”说明克隆路径不对检查~/.openclaw/skills/akshare-data目录下是否有manifest.json。3.2 Stock-Watcher 安装与配置Stock-Watcher 负责自选股管理和异动预警。通过 ClawHub 一键装clawhub install stock-watcher openclaw gateway restart装完后配置自选股和预警阈值。你可以直接在对话里说你把比亚迪 002594、药明康德 603259、中芯国际 688981 加入自选股 你当自选股涨跌幅超过 5% 时通过飞书通知我Stock-Watcher 会把自选股列表和阈值写进~/.openclaw/skills/stock-watcher/config.json。如果你想手动改格式如下{ watchlist: [002594, 603259, 688981], alert_threshold: 5.0, notify_channel: feishu, check_interval_seconds: 60 }check_interval_seconds是轮询间隔默认 60 秒。如果你自选股很多别设太小否则会频繁调 akshare 接口可能被限流。3.3 Tavily Search 安装与配置Tavily 是专为 AI Agent 设计的搜索 API结果干净、无广告。先去https://app.tavily.com注册在 Dashboard 复制 API Key。然后装技能并写 Keyclawhub install tavily-search # 写入 Tavily Key echo TAVILY_API_KEY你的Tavily密钥 ~/.openclaw/.env openclaw gateway restart这里有个社区反馈的坑直接clawhub install装的 Tavily 技能有时不会被 Agent 主动调用。解决办法是在 Agent 的 Soul 文件里显式写明“使用 Tavily Search 查询”后面编排章节会给完整写法。3.4 Self-Improving 安装与配置Self-Improving 让智能体在下一个周期回看上次判断动态调整分析逻辑。建议同时装安全审计工具clawhub install skill-vetter self-improving-agent openclaw gateway restart装完后Self-Improving 会在每次任务结束后把本次的判断依据和结论写进~/.openclaw/workspace/memory/目录。下一个周期开始时它会读取这些记录对比实际结果生成改进建议。3.5 OpenClaw 编排文件Investment-Analyst现在把四个组件串起来。在 OpenClaw 的 Workspace 里创建 Agent核心指令写在Soul.md# Investment-Analyst Soul 你的使命是在每个交易日收盘后自动调用 akshare-data、Stock-Watcher 和 Tavily Search 生成一份《每日动量报告》。 ## 报告结构 ### 1. 自选动态 - 列出所有自选股的当日涨跌幅、成交量变化 - 对涨跌幅超过 ±3% 的个股使用 Tavily Search 查询并简述原因 ### 2. 市场热点 - 使用 Tavily Search 总结今日最重要的三条财经新闻 - 分析这些新闻对持仓或关注行业的影响 ### 3. 机会与风险 - 基于今日数据和新闻提出一个潜在短线机会 - 指出一个需要警惕的风险点 ## 自我改进 将本次报告的核心逻辑和依据写入 memory 目录用于明日反思。对应的 Agent 配置文件agent.toml[agent] name Investment-Analyst soul Soul.md model ${TAOTOKEN_MODEL_ID} base_url ${TAOTOKEN_BASE_URL} api_key ${TAOTOKEN_API_KEY} [skills] enabled [akshare-data, stock-watcher, tavily-search, self-improving-agent] [schedule] cron 0 16 * * 1-5 timezone Asia/Shanghai注意model、base_url、api_key三件套都从环境变量读这样你换模型只改.env一处。cron表达式0 16 * * 1-5表示周一到周五下午 4 点执行正好是 A 股收盘后。4. 验证请求跑一次完整回测与成功结果配置写完必须验证。我设计了一个最小回测动作让 Agent 拉取过去 20 个交易日的自选股数据生成一份报告然后人工核对数据准确性。4.1 手动触发一次 Agent先别等定时任务手动跑一次看结果openclaw agent run Investment-Analyst正常输出会分三段自选动态、市场热点、机会与风险。如果卡住不动看网关日志tail -f ~/.openclaw/logs/gateway.log日志里会显示每个技能的调用顺序。正常流程是akshare-data 拉数据 → Stock-Watcher 读自选股 → Tavily Search 查新闻 → 模型生成报告 → Self-Improving 写 memory。4.2 验证数据准确性报告生成后挑一只自选股手动核对涨跌幅。比如报告说“比亚迪今日涨 3.2%”你去行情软件看一眼如果对不上说明 akshare-data 的数据源有问题或者时区配置错了。我实测下来最容易出错的是时区。OpenClaw 默认用 UTC如果你不设timezone Asia/Shanghai收盘后 4 点触发时可能拉到的是前一天的数据。这个坑我在第一次跑的时候踩了报告里的日期比实际晚一天。4.3 验证 Self-Improving 是否生效第二天再跑一次检查 memory 目录ls -la ~/.openclaw/workspace/memory/ cat ~/.openclaw/workspace/memory/latest_reflection.md如果里面有“昨日判断 X实际结果 Y偏差原因 Z”这类内容说明 Self-Improving 生效了。如果目录是空的检查self-improving-agent是否在enabled列表里以及 Soul.md 里有没有写“写入 memory 目录”的指令。4.4 成功结果长什么样一份正常的报告大概长这样【自选动态】 - 比亚迪 0025943.2%成交量放大 1.5 倍。Tavily 检索显示与新款车型发布相关。 - 药明康德 603259-1.8%无重大消息。 - 中芯国际 6889815.1%触及预警阈值。Tavily 检索显示与行业政策预期相关。 【市场热点】 1. 某部委发布新能源产业支持政策来源Tavily 2. 隔夜美股半导体板块大涨来源Tavily 3. 某龙头公司发布超预期财报来源Tavily 【机会与风险】 机会半导体板块情绪回暖中芯国际放量突破可关注。 风险新能源政策落地不及预期比亚迪短期涨幅过大。这份报告的价值不在于预测准不准而在于它把“数据 资讯 判断”三件事自动串起来了而且每天都有记录方便你回看自己的判断偏差。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一章按真实报错来。我把跑这套工作流时遇到的坑全列出来你对照着查。5.1 401 Unauthorized报错原文{error:{message:Invalid API key,type:invalid_request_error}}原因有三种Key 写错了、Key 没生效、Key 过期了。排查顺序先echo $TAOTOKEN_API_KEY看环境变量有没有值再curl直接测通道第 2 章的验证命令如果 curl 也 401去 TaoToken 控制台确认 Key 状态。注意.env文件改完后必须openclaw gateway restart否则不生效。5.2 local proxy failed报错原文local proxy failed: dial tcp ... connection refused这个报错通常出现在模型通道配置里 Base URL 写错或者本地网络出口不可达。先确认TAOTOKEN_BASE_URLhttps://taotoken.net/api没写错结尾没多斜杠。再确认你的机器能正常访问外网。如果是在云服务器上跑检查安全组出站规则。5.3 reading choices 相关报错报错原文error reading choices: unexpected end of JSON input这是模型返回的响应体不完整通常是流式输出被中断或者模型 ID 写错了导致返回了错误页。先确认TAOTOKEN_MODEL_ID是控制台里真实存在的模型 ID。如果模型 ID 对检查是不是网络抖动导致响应截断重试一次通常能过。5.4 OAuth 相关报错报错原文OAuth token expired或failed to refresh token如果你用的是 Claude Code 或 Codex 这类需要 OAuth 的工具报这个错说明 token 过期了。重新走一遍授权流程即可。注意 OAuth token 和 API Key 是两套东西别混用。如果你在 OpenClaw 里同时配了 OAuth 和 API Key优先用 API Key避免 token 过期导致任务中断。5.5 技能不被调用现象Agent 跑完了但报告里没有 Tavily 的检索结果。原因技能装了但没在agent.toml的enabled列表里或者 Soul.md 里没显式写“使用 Tavily Search”。解决办法确认enabled [akshare-data, stock-watcher, tavily-search, self-improving-agent]并在 Soul.md 里把“使用 Tavily Search 查询”写进指令。5.6 三件套检查清单任何模型调用类报错先查这三件套检查项正确值常见错误Base URLhttps://taotoken.net/api多写/v1或/chat/completionsAPI Keysk-开头完整串复制时漏字符、含空格Model ID控制台实际展示的 ID凭记忆写、大小写错这三项对了90% 的报错都能解决。剩下 10% 看网关日志日志里会显示具体是哪个技能、哪一步出的问题。6. 语义一致 CTA把通道和文档用起来配置跑通后日常维护主要做三件事管 Key、查文档、看用量。管 Key 和查用量去 API Keys 页面https://taotoken.net/api-keys。这里能看到每个 Key 的调用次数、剩余额度、最近报错。建议给投研工作流单独建一个 Key和别的项目分开方便定位问题。接入文档在https://taotoken.net/doc。里面写了 Base URL 的完整说明、各语言 SDK 的调用示例、常见错误码对照。遇到 401 或路径问题时先翻文档比在群里问快。如果你只是想先试试模型效果不想配整套 OpenClaw可以直接用模型对话页面https://taotoken.net/models。把一段行情数据粘进去让它生成一份简版报告感受一下输出质量再决定要不要上完整工作流。长期跑编码类或 Agent 类任务看 Coding Planhttps://taotoken.net/coding-plan。投研工作流每天多次调用模型属于高频场景这个方案在成本上更可控。最后再强调一次安全红线这套系统只做信息查询、分析和决策辅助绝不接券商账户做自动交易。所有买卖动作必须由你本人确认。装第三方技能前先用 skill-vetter 扫一遍。API Key 不要提交到 Git不要发到公开群。市场有风险AI 是辅助工具不是印钞机。