做什么
官方 description 用英文写明「Akshare Stock」做什么。中文介绍不改写这段原文,能力边界以文件结构与下方原文为准。
技能库 智客分类:Agent 工作流 akshare-stock
A股分析全能 Skill(实时行情、技术面、基本面、板块、衍生品与跨市场),基于 akshare + 自然语言路由
官方网址:skills.sh
先看中文介绍;官方 description 原文单独保留,不改写 SKILL.md。
官方 description 用英文写明「Akshare Stock」做什么。中文介绍不改写这段原文,能力边界以文件结构与下方原文为准。
官方 description 未单独写出 Use when。按规范,代理会在用户任务与这段 description 的关键词匹配时激活本技能。
按 Agent Skills 渐进披露:启动时只加载 name 与 description(约 100 token);任务匹配后才读入整份 SKILL.md 正文;scripts/、references/、assets/ 仅在需要时再读。 本文件正文结构:A股分析全能 Skill(AKShare)、1) 整体架构设计、A. 目录组织(建议)、B. 核心流程、C. 关键设计点、2) 触发词设计(自然语言路由)。
文件分析:这是一份仅含 SKILL.md 的指令型技能,代理激活后整份正文进入上下文。
A股分析全能 Skill(AKShare)1) 整体架构设计A. 目录组织(建议)B. 核心流程C. 关键设计点2) 触发词设计(自然语言路由)A. 意图分类(Intent)B. 触发词样例C. 参数抽取规则3) 各功能实现思路3.1 实时大盘行情(已有基础版,升级点)3.2 行情分析
来源分类:skills.sh agent-skill
nameakshare-stockdescription具体调用语法与可用工具以目标 Agent 客户端为准。 查看调用机制说明 ↗
先选择目标 Agent 和安装范围,保留技能包的附属文件,安装后检查客户端能否发现该技能。
复制安装指令给支持 Agent Skills 的代理,确认其中的目标目录与客户端匹配。
把 Agent Skill「akshare-stock」安装到我的项目:SKILL.md 原文与官方 description 见 https://zicq.com/zh/skills/skl-d5f02b67ac69fc5d-Akshare-Stock.html 请存为 .cursor/skills/akshare-stock/SKILL.md 或 .claude/skills/akshare-stock/SKILL.md,frontmatter 的 name 与 description 保持原样,不要改写。
需要 Node.js 与 npx。先查看仓库技能列表,确认实际名称。
npx skills add 'https://github.com/molezzz/openclaw-stock-skill' --list
npx skills add 'https://github.com/molezzz/openclaw-stock-skill' --skill 'akshare-stock'
CLI 会交互选择目标 Agent,默认安装到项目;用户级安装使用 -g。先通过查看命令核对仓库内容,再用 npx skills list 检查已安装技能。
目标:在 OpenClaw 中通过自然语言触发 A 股和相关市场分析,输出适配 QQ/Telegram 的紧凑文本。
/Users/molezz/Library/Python/3.9/lib/python3.9/site-packagespython3 skills/akshare-stock/main.py --query "${USER_QUERY}"采用 Router -> Service -> Analyzer -> Formatter 四层结构,便于扩展和维护。
skills/akshare-stock/
SKILL.md
main.py # OpenClaw 调用入口
router.py # 意图识别 + 参数解析
schemas.py # 数据结构定义(dataclass)
formatter.py # QQ/Telegram 输出模板
services/
market_service.py # 大盘/个股行情、K线、分时、涨跌停、资金流
fundamental_service.py# 财务指标、财报、融资融券、龙虎榜
sector_service.py # 行业/概念板块、轮动、板块资金流
cross_service.py # 期货/期权、基金、可转债、港股/美股
analyzers/
kline_analyzer.py # 均线、振幅、涨跌幅、量比等
flow_analyzer.py # 主力净流入、连续性、强弱排序
rotation_analyzer.py # 板块轮动强度、持续性
adapters/
akshare_adapter.py # 封装 akshare 接口,隔离 API 变化
utils/
trading_calendar.py # 交易日判断
symbols.py # 指数/股票/板块别名映射
cache.py # 短缓存(30~120 秒)
main.py 接收自然语言 query。router.py 输出结构化意图:intent + symbols + timeframe + metric + top_n。services/* 拉取原始数据(只做数据获取和轻清洗)。analyzers/* 做指标计算和结论生成。formatter.py 按聊天平台压缩输出(短句、分段、emoji、重点数值)。adapters/akshare_adapter.py。建议采用“关键词 + 正则 + 别名词典”混合方式。
INDEX_REALTIME:实时大盘KLINE_ANALYSIS:历史 K 线INTRADAY_ANALYSIS:分时分析LIMIT_STATS:涨跌停统计MONEY_FLOW:资金流向FUNDAMENTAL:财务指标 / 财报MARGIN_LHB:融资融券 / 龙虎榜SECTOR_ANALYSIS:行业/概念/轮动/板块资金DERIVATIVES:期货/期权FUND_BOND:基金净值 / 可转债HK_US_MARKET:港股 / 美股A股大盘 上证现在多少 沪深300实时贵州茅台近60日K线 宁德时代周线 比亚迪月线复权看下000001分时 平安银行今天分时走势今日涨停统计 跌停家数 连板梯队主力资金流入前十 北向资金 行业资金净流入茅台财务指标 宁德时代最新季报 ROE和毛利率中兴通讯融资融券 今日龙虎榜行业板块涨幅榜 概念轮动 AI板块资金流IF主力合约 300ETF期权 基金净值 可转债行情 腾讯港股 英伟达美股\b\d{6}\b(如 600519)YYYYMMDD / YYYY-MM-DD / 今天/昨日/近N日1m/5m/15m/30m/60m/day/week/month前N(默认 10)前复权/后复权/不复权下面是“功能 -> 推荐数据 -> 分析输出”的落地框架(接口以 akshare 当前版本为准,实际以 adapter 层统一封装)。
指数点位 + 涨跌幅 + 市场情绪一句话。核心指标摘要 + 同比/环比 + 风险提示。强势板块Top3 + 轮动结论 + 次日观察点。说明:以下为可直接落地的最小框架,不含完整业务细节。
main.py#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
from router import parse_query
from services.market_service import MarketService
from services.fundamental_service import FundamentalService
from services.sector_service import SectorService
from services.cross_service import CrossService
from formatter import render_output
def dispatch(intent_obj):
intent = intent_obj.intent
if intent in {"INDEX_REALTIME", "KLINE_ANALYSIS", "INTRADAY_ANALYSIS", "LIMIT_STATS", "MONEY_FLOW"}:
data = MarketService().handle(intent_obj)
elif intent in {"FUNDAMENTAL", "MARGIN_LHB"}:
data = FundamentalService().handle(intent_obj)
elif intent == "SECTOR_ANALYSIS":
data = SectorService().handle(intent_obj)
elif intent in {"DERIVATIVES", "FUND_BOND", "HK_US_MARKET"}:
data = CrossService().handle(intent_obj)
else:
data = {"ok": False, "error": "未识别请求,请补充标的或时间范围"}
return data
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--query", required=True, help="自然语言请求")
parser.add_argument("--platform", default="qq", choices=["qq", "telegram"])
args = parser.parse_args()
intent_obj = parse_query(args.query)
result = dispatch(intent_obj)
text = render_output(intent_obj, result, platform=args.platform)
print(text)
if __name__ == "__main__":
main()
router.pyfrom dataclasses import dataclass, field
import re
@dataclass
class IntentObj:
intent: str
symbols: list = field(default_factory=list)
timeframe: str = "day"
days: int = 60
top_n: int = 10
date: str = ""
raw_query: str = ""
def parse_query(query: str) -> IntentObj:
q = query.strip()
obj = IntentObj(intent="INDEX_REALTIME", raw_query=q)
# 1) intent
if any(k in q for k in ["K线", "日线", "周线", "月线"]):
obj.intent = "KLINE_ANALYSIS"
elif "分时" in q:
obj.intent = "INTRADAY_ANALYSIS"
elif any(k in q for k in ["涨停", "跌停", "连板"]):
obj.intent = "LIMIT_STATS"
elif "资金" in q:
obj.intent = "MONEY_FLOW"
elif any(k in q for k in ["财务", "财报", "ROE", "毛利率"]):
obj.intent = "FUNDAMENTAL"
elif any(k in q for k in ["融资融券", "龙虎榜"]):
obj.intent = "MARGIN_LHB"
elif any(k in q for k in ["板块", "行业", "概念", "轮动"]):
obj.intent = "SECTOR_ANALYSIS"
elif any(k in q for k in ["期货", "期权"]):
obj.intent = "DERIVATIVES"
elif any(k in q for k in ["基金", "净值", "可转债"]):
obj.intent = "FUND_BOND"
elif any(k in q for k in ["港股", "美股", "纳斯达克", "道琼斯"]):
obj.intent = "HK_US_MARKET"
# 2) symbol
code_hits = re.findall(r"\b\d{6}\b", q)
if code_hits:
obj.symbols = code_hits
# 3) topN
m = re.search(r"前\s*(\d+)", q)
if m:
obj.top_n = int(m.group(1))
return obj
adapters/akshare_adapter.pyimport akshare as ak
class AkAdapter:
def index_spot(self):
return ak.stock_zh_index_spot_sina()
def stock_kline(self, symbol: str, period: str = "daily", start_date: str = "", end_date: str = "", adjust: str = "qfq"):
# 实际参数与函数名按本地 akshare 版本适配
return ak.stock_zh_a_hist(symbol=symbol, period=period, start_date=start_date, end_date=end_date, adjust=adjust)
def stock_intraday(self, symbol: str, period: str = "1"):
return ak.stock_zh_a_minute(symbol=symbol, period=period)
def limit_up_pool(self, date: str):
return ak.stock_zt_pool_em(date=date)
def limit_down_pool(self, date: str):
return ak.stock_dt_pool_em(date=date)
formatter.pyfrom datetime import datetime
def render_output(intent_obj, result: dict, platform: str = "qq") -> str:
ts = datetime.now().strftime("%Y-%m-%d %H:%M")
if not result.get("ok", False):
return f"⚠️ 请求失败\n原因: {result.get('error', '未知错误')}\n时间: {ts}"
title = result.get("title", "A股分析")
lines = result.get("lines", [])
tips = result.get("tips", "")
# QQ/Telegram 友好输出:短行 + 分段 + 关键数字优先
text = [f"📊 {title}", f"🕒 {ts}", ""]
text.extend(lines[:15])
if tips:
text.extend(["", f"💡 {tips}"])
text.append("\n数据源: akshare")
# 长度保护
merged = "\n".join(text)
return merged[:1000]
建议统一为三段:结论 -> 关键数据 -> 风险提示。
示例:
📊 A股午盘情绪
🕒 2026-02-18 11:31
- 上证指数 3210.35(+0.62%)
- 两市成交额 6821 亿,较昨日同期 +8.4%
- 涨停 52 / 跌停 7,连板高度 4
- 主力净流入前三:证券、AI算力、汽车零部件
💡 结论:指数偏强,情绪修复中;但午后关注高位分歧。
数据源: akshare
MarketService.index_realtime()。该设计能保证你先快速可用,再逐步增强,不会一次性堆太多接口导致维护困难。
Agent 工作流
创造有效技能指南。 当用户想创造出新的技能(或更新现有的技能),以专业知识,工作流程,或工具集成来扩展克洛德的能力时,应该使用这种技能.
Agent 工作流
使用ClawdHub CLI搜索,安装,更新并发布从taladhub.com的代理技能. 需要获取苍蝇上的新技能时使用,将安装的技能同步到最新版本或特定版本,或者发布 npm-instainddhub CLI 的新/更新的技能文件夹.
Agent 工作流
管弦乐团多代理团队,任务设定周期,交接协议,审查工作流程. 使用时间: (1)建立2+特派员队伍,具有不同专业,(2)确定任务路线和生命周期(收录框_ spec_建设_审查_完成),(3)在特派员之间制定交接协议,(4)建立审查和质量关口,(5)管理特派员之间的交流和文物共享.
Agent 工作流
Spec-first,TDD,子代理驱动的软件开发工作流程. 当:(1)构建任何新功能或应用——触发脑暴_计划_子代理执行回路,(2)调试出一个bug或测试失败——触发系统性的根起过程,(3)用户说"让我们构建","帮助我计划","我想添加X",或"这个被打破",(4)完成一个功…