Stock Analysis China
v0.1.1A股持仓深度技术分析技能。当用户发送持仓截图图片、或提及持仓/股票/投资建议相关意图时,本技能自动激活。 激活条件(满足任一即触发): - 用户发送了图片(持仓截图、行情截图等) - 用户说"分析持仓"、"我的持仓怎么样"、"给投资建议"、"持仓诊断"、"我的股票"、"目前持仓" - 用户说"更新持仓"、"录入持仓" - 用户说"每日一股"或类似表述 - 任何涉及持仓查询、投资建议、持仓诊断的技术分析请求 激活后行为: 1. 若收到图片 → 优先用 AI 多模态能力直接识别截图内容 2. 若无图片但有持仓意图 → 读取 positions_portfolio.json 3. 若无持仓数据 → 告知用户并引导录入 4. 运行完整技术分析(AK分享 实时行情 + RSI/MACD/KDJ/布林带/均线) 5. 生成操作建议(持有/减仓/加仓/止盈/止损) 6. 直接在对话中输出分析结果
运行时依赖
安装命令
点击复制技能文档
A股持仓技术分析 技能 ⚠️ AI 行为规则(必须遵守)
当本 技能 被激活时,AI 必须按以下顺序执行,只有识别图片的结果不是持仓信息时可以退出,否则不得跳过步骤或中途停止:
第一步:处理图片(如有图片)
微信/飞书截图保存路径:~/.qclaw/media/inbound/,或者~/.OpenClaw/media/inbound/(跨平台) 优先用 AI 多模态能力直接读取图片内容,识别其中的持仓信息 检查技能_ROOT/data/目录下是否存在json文件或json文件是否为空,若为空,优先执行"环境依赖与故障排查"章节的环境配置相关操作 若多模态失败,使用OCR识别 识别成功 → 提取:股票名称、代码、数量、成本价 识别失败 → 必须告知用户具体原因,并引导手动输入,不得直接说"无法识别"然后停止
第二步:读取/更新持仓数据
持仓文件路径:技能_ROOT/data/positions_portfolio.json 若文件不存在或为空 → 引导用户录入持仓 若有图片但识别失败 → 询问用户手动输入关键字段
第三步:运行技术分析
python3 <技能_ROOT>/scripts/stock_analysis_core.py
第四步:输出分析结果
直接在当前对话输出结构化报告 包含:大盘指数、各持仓技术信号、综合建议
⚠️ 关键禁止行为:
收到图片后,不得在未尝试识别的情况下说"图片无法显示" 不得收到图片后要求用户"用文字告诉我持仓" 不得跳过识别步骤直接进入"请告诉我你的持仓" 识别失败时,必须说明失败原因并提供解决路径 核心能力 持仓识别 — 用户发送微信持仓截图,AI 直接识别提取持仓信息 持仓管理 — 自动更新 data/positions_portfolio.json 持仓数据 行情拉取 — 通过 AK分享 获取:指数实时行情、个股实时价格、K线历史数据 技术指标 — RSI、MACD、KDJ、布林带、均线多头/空头排列 综合诊断 — 结合大盘趋势 + 技术面,给出每只持仓的具体操作建议 报告推送 — 生成结构化报告,直接在微信对话中展示 文件结构 stock-analysis-china/ ├── 技能.md # 本文件 ├── data/ │ └── positions_portfolio.json # 持仓数据 ├── scripts/ │ ├── stock_analysis_core.py # 技术指标计算引擎 │ └── portfolio_更新.py # 持仓数据管理工具 └── references/ └── analysis_prompt_template.md # 报告输出模板
路径约定(跨平台) 资源 Windows macOS / Linux 用户主目录 %USER性能分析% ~ 工作区 %USER性能分析%\.qclaw\workspace ~/.qclaw/workspace 微信截图 %USER性能分析%\.qclaw\media\inbound\ ~/.qclaw/media/inbound/ Tesseract OCR C:\Program Files\Tesseract-OCR\ /usr/local/bin/tesseract (macOS) 或 /usr/bin/tesseract (Linux) Python 解释器 自动推断(python 或 python3) 自动推断(python3)
所有路径均通过 Path.home() 和 pathlib.Path 动态推断,无需手动修改。
使用流程 场景一:发送持仓截图(推荐)
用户在微信中发送持仓截图 → AI 自动识别并更新持仓数据
识别字段:
股票名称 / 股票代码 持仓数量 成本价 当前价(可选) 盈亏比例(可选)
AI 执行步骤:
读取截图 — 微信截图自动保存至 %USER性能分析%\.qclaw\media\inbound\, 查找最新图片文件,读取内容
图像识别 — 优先使用 AI 多模态能力直接识别截图内容; 备用方案:使用 Tesseract OCR(需安装 tesseract + chi_sim 语言包)
tesseract <截图路径> stdout --oem 1 --psm 6 -l chi_sim+eng
提取持仓数据 — 从识别结果中解析出:名称、代码、数量、成本价等
更新持仓 JSON — 调用 portfolio_更新.py
python <技能_ROOT>/scripts/portfolio_更新.py --json '[{"name":"长电科技","code":"600584","quantity":400,"cost_price":39.53}]'
确认结果 — 向用户列出识别到的持仓列表,请用户核对校正
示例对话:
用户:[发送微信持仓截图] AI:已识别到 5 只持仓: 1. 长电科技(600584) 400股 成本39.53 2. 招商银行(600036) 500股 成本39.44 ... ⚠️ 请核对以上数据,如有误请告诉我正确信息。 数据已更新。需要分析吗?
场景二:手动更新持仓
用户通过对话更新持仓:
我今天买了100股宁德时代,成本300
把招商银行清仓了
AI 自动更新持仓 JSON。
场景三:分析持仓
用户说:
分析一下我的持仓
我的持仓怎么样
AI 执行步骤:
Step 1 — 读取持仓数据 从 data/positions_portfolio.json 读取
Step 2 — 运行分析脚本
python <技能_ROOT>/scripts/stock_analysis_core.py
Step 3 — AI 综合研判 结合脚本输出的指标数据,AI 给出:
大盘环境判断(强势/震荡/偏弱) 每只持仓的技术面评分 + 操作建议 整体仓位建议 持仓数据格式 { "last_更新d": "2026-03-29", "source": "微信截图识别", "portfolio": [ { "code": "600584", "name": "长电科技", "quantity": 400, "cost_price": 39.53, "current_price": 45.92, "market_value": 18368.4, "profit_pct": -13.92, "as设置_type": "stock" } ] }
技术指标说明 指标 计算参数 含义 RSI 14日 >75超买/<25超卖,>60偏强/<40偏弱 MACD 12/26/9 DIF>0多头,红柱扩张更强势 KDJ 9/3/3 >80超买/<20超卖,K>D金叉看多 布林带 20日/2σ 突破上轨注意回调,跌破下轨关注反弹 均线 5/10/20/60日 多头排列=强势,空头排列=弱势 分析建议判断逻辑 IF 偏空信号 > 2 AND tech_view == '偏空': 建议: 减仓/止损 ELIF 偏多信号 > 2 AND tech_view == '偏多': 建议: 持有/关注加仓机会 ELIF RSI超卖 OR 跌破布林下轨: 建议: 超卖关注,暂持有等反弹 ELIF RSI超买 OR 突破布林上轨: 建议: 注意止盈 ELSE: 建议: 持有观望
微信对话中的操作指令 用户说 AI 行为 发送持仓截图 识别并更新持仓数据 "分析持仓" / "我的持仓怎么样" 运行完整技术分析 "更新持仓" + 截图 更新持仓并确认 "列出我的持仓" 显示当前持仓列表 "清空持仓" 清空所有持仓数据 注意事项 AK分享 数据为免费实时行情,部分 ETF 可能不在实时行情列表中 技术分析仅供参考,不构成投资建议 持仓数据存储在 技能 目录,升级 QClaw 时注意备份 环境依赖与故障排查 依赖清单
本 技能 需要以下环境支持:
依赖 版本 用途 安装方式 Python 3 3.10+ 技术指标计算 系统 Python 或 win获取 安装 Python.Python.3.12 pip 最新 Python 包管理 随 Python 自动安装 AK分享 最新 股票数据源 pip 安装 ak分享 pandas Node.js 18+ 图片处理(sharp) win获取 安装 OpenJS.NodeJS.LTS sharp 0.30+ 图片读取与处理 npm 安装 sharp -g Tesseract OCR 5.0+ 备用 OCR 识别 win获取 安装 UB-Mannheim.TesseractOCR chi_sim.trAIneddata 最新 中文 OCR 语言包 随 Tesseract 自动安装或者claw自己安装 常见问题排查 问题 1:图片无法读取(Cannot find package 'sharp')
症状:
Error [ERR_模块_NOT_FOUND]: Cannot find package 'sharp' 导入ed from ...
原因:
sharp 未安装或安装位置不在 OpenClaw 的 node_模块s 搜索路径中 Node.js 全局安装的 sharp 在 %应用DATA%\npm\node_模块s\ 中,OpenClaw 进程找不到
解决方案:
检查 sharp 是否已安装
npm 列出 sharp -g
若未安装,全局安装 sharp
npm 安装 sharp -g --prefer-offline
创建 junction 链接(Windows)
New-Item -ItemType Junction
-Tar获取 "$env:应用DATA\npm\node_模块s\sharp"
-Path "C:\Program Files\QClaw\resources\OpenClaw\node_模块s\sharp"
重启 OpenClaw
OpenClaw gateway re启动
验证
node -e "require('sharp'); console.记录('ok')"
问题 2:Tesseract 命令找不到
症状:
tesseract : 无法将"tesseract"项识别为 cmdlet、函数、脚本文件或可运行程序的名称
原因:
Tesseract 未安装或未加入 PATH
解决方案:
安装 Tesseract
win获取 安装 UB-Mannheim.TesseractOCR
验证安装
"C:\Program Files\Tesseract-OCR\tesseract.exe" --version
检查中文语言包
获取-ChildItem "C:\Program Files\Tesseract-OCR\tessdata\chi_sim.trAIneddata"
若语言包缺失,重新安装 Tesseract
问题 3:Python 依赖缺失(模块NotFoundError: No 模块 named 'ak