Install
openclaw skills install stock-analysis-chinaA股持仓深度技术分析技能。当用户发送持仓截图图片、或提及持仓/股票/投资建议相关意图时,本技能自动激活。 激活条件(满足任一即触发): - 用户发送了图片(持仓截图、行情截图等) - 用户说"分析持仓"、"我的持仓怎么样"、"给投资建议"、"持仓诊断"、"我的股票"、"目前持仓" - 用户说"更新持仓"、"录入持...
openclaw skills install stock-analysis-china当本 skill 被激活时,AI 必须按以下顺序执行,只有识别图片的结果不是持仓信息时可以退出,否则不得跳过步骤或中途停止:
第一步:处理图片(如有图片)
~/.qclaw/media/inbound/,或者~/.openclaw/media/inbound/(跨平台)SKILL_ROOT/data/目录下是否存在json文件或json文件是否为空,若为空,优先执行"环境依赖与故障排查"章节的环境配置相关操作第二步:读取/更新持仓数据
SKILL_ROOT/data/positions_portfolio.json第三步:运行技术分析
python3 <SKILL_ROOT>/scripts/stock_analysis_core.py
第四步:输出分析结果
⚠️ 关键禁止行为:
data/positions_portfolio.json 持仓数据stock-analysis-china/
├── SKILL.md # 本文件
├── data/
│ └── positions_portfolio.json # 持仓数据
├── scripts/
│ ├── stock_analysis_core.py # 技术指标计算引擎
│ └── portfolio_update.py # 持仓数据管理工具
└── references/
└── analysis_prompt_template.md # 报告输出模板
| 资源 | Windows | macOS / Linux |
|---|---|---|
| 用户主目录 | %USERPROFILE% | ~ |
| 工作区 | %USERPROFILE%\.qclaw\workspace | ~/.qclaw/workspace |
| 微信截图 | %USERPROFILE%\.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 执行步骤:
读取截图 — 微信截图自动保存至 %USERPROFILE%\.qclaw\media\inbound\,
查找最新图片文件,读取内容
图像识别 — 优先使用 AI 多模态能力直接识别截图内容; 备用方案:使用 Tesseract OCR(需安装 tesseract + chi_sim 语言包)
tesseract <截图路径> stdout --oem 1 --psm 6 -l chi_sim+eng
提取持仓数据 — 从识别结果中解析出:名称、代码、数量、成本价等
更新持仓 JSON — 调用 portfolio_update.py
python <SKILL_ROOT>/scripts/portfolio_update.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 <SKILL_ROOT>/scripts/stock_analysis_core.py
Step 3 — AI 综合研判 结合脚本输出的指标数据,AI 给出:
{
"last_updated": "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,
"asset_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 行为 |
|---|---|
| 发送持仓截图 | 识别并更新持仓数据 |
| "分析持仓" / "我的持仓怎么样" | 运行完整技术分析 |
| "更新持仓" + 截图 | 更新持仓并确认 |
| "列出我的持仓" | 显示当前持仓列表 |
| "清空持仓" | 清空所有持仓数据 |
本 skill 需要以下环境支持:
| 依赖 | 版本 | 用途 | 安装方式 |
|---|---|---|---|
| Python 3 | 3.10+ | 技术指标计算 | 系统 Python 或 winget install Python.Python.3.12 |
| pip | 最新 | Python 包管理 | 随 Python 自动安装 |
| AKShare | 最新 | 股票数据源 | pip install akshare pandas |
| Node.js | 18+ | 图片处理(sharp) | winget install OpenJS.NodeJS.LTS |
| sharp | 0.30+ | 图片读取与处理 | npm install sharp -g |
| Tesseract OCR | 5.0+ | 备用 OCR 识别 | winget install UB-Mannheim.TesseractOCR |
| chi_sim.traineddata | 最新 | 中文 OCR 语言包 | 随 Tesseract 自动安装或者claw自己安装 |
Cannot find package 'sharp')症状:
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'sharp' imported from ...
原因:
%APPDATA%\npm\node_modules\ 中,OpenClaw 进程找不到解决方案:
检查 sharp 是否已安装
npm list sharp -g
若未安装,全局安装 sharp
npm install sharp -g --prefer-offline
创建 junction 链接(Windows)
New-Item -ItemType Junction `
-Target "$env:APPDATA\npm\node_modules\sharp" `
-Path "C:\Program Files\QClaw\resources\openclaw\node_modules\sharp"
重启 OpenClaw
openclaw gateway restart
验证
node -e "require('sharp'); console.log('ok')"
症状:
tesseract : 无法将"tesseract"项识别为 cmdlet、函数、脚本文件或可运行程序的名称
原因:
解决方案:
安装 Tesseract
winget install UB-Mannheim.TesseractOCR
验证安装
"C:\Program Files\Tesseract-OCR\tesseract.exe" --version
检查中文语言包
Get-ChildItem "C:\Program Files\Tesseract-OCR\tessdata\chi_sim.traineddata"
若语言包缺失,重新安装 Tesseract
ModuleNotFoundError: No module named 'akshare')症状:
ModuleNotFoundError: No module named 'akshare'
原因:
解决方案:
安装依赖
pip install akshare pandas
验证
python -c "import akshare; print('ok')"
症状:
锟斤拷)Error opening data file .../chi_sim.traineddata原因:
解决方案:
检查图片格式
file <image_path> # 确保是 JPEG/PNG
安装 Tesseract OCR
winget install UB-Mannheim.TesseractOCR
下载中文语言包(Windows 需要)
Tesseract 默认安装目录可能没有中文语言包,需要手动下载:
# 创建用户 tessdata 目录
New-Item -ItemType Directory -Path "$env:USERPROFILE\tessdata" -Force
# 下载中文简体语言包
Invoke-WebRequest -Uri "https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata" -OutFile "$env:USERPROFILE\tessdata\chi_sim.traineddata"
# 复制英文语言包(中英文混合识别需要)
Copy-Item "C:\Program Files\Tesseract-OCR\tessdata\eng.traineddata" "$env:USERPROFILE\tessdata\eng.traineddata" -Force
配置 TESSDATA_PREFIX 环境变量
方法一:临时设置
$env:TESSDATA_PREFIX = "$env:USERPROFILE\tessdata\"
tesseract <image_path> stdout --oem 1 --psm 6 -l chi_sim+eng
方法二:永久设置(推荐)
[System.Environment]::SetEnvironmentVariable("TESSDATA_PREFIX", "$env:USERPROFILE\tessdata\", "User")
验证语言包安装
$env:TESSDATA_PREFIX = "$env:USERPROFILE\tessdata\"
& "C:\Program Files\Tesseract-OCR\tesseract.exe" --list-langs
运行中文 OCR 识别
$env:TESSDATA_PREFIX = "$env:USERPROFILE\tessdata\"
& "C:\Program Files\Tesseract-OCR\tesseract.exe" <图片路径> stdout --oem 1 --psm 6 -l chi_sim+eng
若仍失败,使用 AI 多模态识别(推荐)
症状:
FileNotFoundError: [Errno 2] No such file or directory: '.../positions_portfolio.json'
原因:
解决方案:
手动创建初始文件
python <SKILL_ROOT>/scripts/portfolio_update.py --list
或通过 AI 识别截图自动创建
或手动添加持仓
python <SKILL_ROOT>/scripts/portfolio_update.py --add 600584 长电科技 400 39.53
症状:
[WARN] 指数数据获取失败: ...
原因:
解决方案:
检查网络连接
ping github.com
重试分析(AKShare 有内部重试机制)
若持续失败,检查 AKShare 服务状态
症状:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\...\...'
原因:
解决方案:
pathlib.Path 和 Path.home() 动态推断路径SKILL_ROOT 和 WORKSPACE_DIR 的推断逻辑路径动态推断
Path(__file__).parent.parent 相对 skill 目录Path.home() 获取用户主目录(跨平台)持仓数据优先级
data/positions_portfolio.json(跟随 skill 更新)~/.qclaw/workspace/data/positions_portfolio.json(升级保护)图片识别优先级
跨平台支持
platform.system())sys.executable)⚠️ 多文件改动时务必完整检查
当修改脚本时,必须同步更新:
检查清单:
环境检测
python <SKILL_ROOT>/scripts/stock_analysis_core.py
持仓管理
python <SKILL_ROOT>/scripts/portfolio_update.py --list
图片识别
完整流程