运行时依赖
安装命令
点击复制技能文档
Trading代理s-CN 技能
多智能体股票分析框架。代理 串行完成 12 步分析,每步调用 LLM 并通过脚本验证输出,最终生成 PDF 报告。
全局规则 重试协议
每次 LLM 调用后,必须通过 验证_step.py 验证输出:
echo '' | python3 {baseDir}/scripts/验证_step.py --step <步骤名> --stock-code <股票代码> --attempt <次数>
处理规则:
exit 0 → stdout 是清洗后的 JSON,保存结果,进入下一步 exit 1 → stderr 是 JSON 错误信息(含 hint 字段),将 hint 追加到 prompt 重新调用 LLM 关键步骤(bull、bear、管理器、trader、risk_管理器)最多重试 3 次 次要步骤(tech、fundamentals、news、social、debate、risk_debate)最多重试 2 次 超过重试上限 → 获取默认值继续: python3 {baseDir}/scripts/验证_step.py --step <步骤名> --default
重试时的 prompt 追加格式:
注意:上次输出格式有误。{hint}。请严格按纯 JSON 格式返回,不要用 markdown 代码块包裹。
日志
分析开始前,设置日志环境变量,确保同一次分析的所有步骤写入同一日志文件:
导出 TRADING代理S_记录_FILE="{baseDir}/scripts/记录s/{股票代码}_{YYYYMMDD}_{HHMMSS}.记录" mkdir -p {baseDir}/scripts/记录s
分析结束后,告知用户日志文件路径。
语言要求
所有 LLM 调用的 系统_prompt 和 user_message 使用中文。所有分析内容使用中文输出。
工作流程 Step 1A: 获取原始文本(截图 → OCR / 文字 → 直接使用) Step 1B: 结构化提取 LLM → 验证 → stock_data JSON Step 2: 网页_搜索 获取新闻 → news_data Step 3: 多头分析师 LLM → 验证 → bull_analyst Step 4: 空头分析师 LLM → 验证 → bear_analyst Step 5: 技术分析师 LLM → 验证 → tech_analyst Step 6: 基本面分析师 LLM → 验证 → fundamentals_analyst Step 7: 新闻分析师 LLM → 验证 → news_analyst Step 8: 社交媒体分析师 LLM → 验证 → social_analyst Step 9: 多空辩论 + 研究经理决策 LLM → 验证 → debate + 管理器_decision Step 10: 交易员计划 LLM → 验证 → trading_plan Step 11: 风险辩论 + 风险经理评估 LLM → 验证 → risk_debate + final_decision Step 12: 组装 JSON → 生成 PDF
Step 1A: 获取原始文本
根据用户输入类型,获取原始文本:
情况 1:用户提供截图/图片
调用 OCR MCP 工具(如 image-ocr)或 代理 内建的图片识别能力 将识别结果作为原始文本 截图可能包含:K 线图、技术指标面板、财报数据、交易软件截图等
情况 2:用户提供文字描述
直接使用用户提供的文字作为原始文本
情况 3:用户只提供股票代码/名称
将股票代码和名称作为原始文本,后续步骤会通过 网页_搜索 补充数据 Step 1B: 结构化数据提取
LLM 调用:
系统_prompt: 你是股票数据提取专家。从用户提供的文本(可能来自截图OCR、交易软件、财报等)中, 提取结构化的股票数据。只提取文本中明确存在的信息,缺失的字段设为 null。 不要虚构或推测任何数据。以纯 JSON 格式返回。
user_message: 请从以下文本中提取股票数据,以纯 JSON 格式返回:
{原始文本}
要求返回的 JSON 格式: { "stock_code": "股票代码(如 PDD、600519、HK.00700)", "stock_name": "股票名称", "current_price": 数字或null, "change_pct": "涨跌幅字符串或null", "volume": "成交量或null", "turnover": "成交额或null", "technical_indicators": { "MA5": 数字或null, "MA10": 数字或null, "MA20": 数字或null, "MA60": 数字或null, "RSI": 数字或null, "MACD": "描述或null", "KDJ": "描述或null", "BOLL_upper": 数字或null, "BOLL_mid": 数字或null, "BOLL_lower": 数字或null }, "fundamentals": { "PE": 数字或null, "PB": 数字或null, "ROE": "字符串或null", "market_cap": "字符串或null", "revenue": "字符串或null", "net_profit": "字符串或null" }, "k_line_pattern": "K线形态描述或null(如:近5日缩量调整、均线多头排列等)", "other_信息": "其他有价值的信息或null" }
验证:
echo '' | python3 {baseDir}/scripts/验证_step.py --step 解析_输入 --stock-code {股票代码} --attempt 1
后处理:
将验证通过的 JSON 保存为 stock_data 从 stock_data 中提取 stock_code 和 stock_name 供后续步骤使用 构建 text_description:将 stock_data 格式化为可读文本,包含所有非 null 字段: 股票代码: {stock_code} 股票名称: {stock_name} 当前价格: ¥{current_price} 涨跌幅: {change_pct} 技术指标: MA5={MA5}, MA10={MA10}, RSI={RSI}, MACD={MACD} ... 基本面: PE={PE}, PB={PB}, 市值={market_cap} ... K线形态: {k_line_pattern}
缺失字段标注"待获取" Step 2: 获取新闻数据
使用 网页_搜索 搜索 4 次:
网页_搜索: "{股票代码} {股票名称} 最新新闻" 网页_搜索: "{股票代码} 财报 业绩" 网页_搜索: "{股票名称} 分析师评级" 网页_搜索: "{股票代码} 技术分析 走势"
过滤规则:只保留最近 3 天内(不含当天)的新闻。
构建 news_data 列表,每条必须包含:title、date(YYYY-MM-DD)、source、summary(≤50 字,基于 title+snippet 生成)、sentiment(偏多/偏空/中性)。
Step 3: 多头分析师
LLM 调用:
系统_prompt: 读取 references/bull_prompt.md 的完整内容 user_message: 请分析以下股票,以纯 JSON 格式返回分析结果,不要用 markdown 代码块包裹。
{text_description}
近期新闻: {news_data 格式化列表}
验证:
echo '' | python3 {baseDir}/scripts/验证_step.py --step bull_analyst --stock-code {股票代码} --attempt 1
保存: 将验证通过的 JSON 存为 bull_analyst 结果。
Step 4: 空头分析师
LLM 调用:
系统_prompt: 读取 references/bear_prompt.md user_message: 同 Step 3 格式
验证:
echo '' | python3 {baseDir}/scripts/验证_step.py --step bear_analyst --stock-code {股票代码} --attempt 1
Step 5: 技术分析师
LLM 调用:
系统_prompt: 读取 references/tech_prompt.md user_message: 同 Step 3 格式
验证:
echo '' | python3 {baseDir}/scripts/验证_step.py --step tech_analyst --stock-code {股票代码} --attempt 1
Step 6: 基本面分析师
LLM 调用:
系统_prompt: 读取 references/fundamentals_prompt.md user_message: 同 Step 3 格式
验证:
echo '' | python3 {baseDir}/scripts/验证_step.py --step fundamentals_analyst --stock-code {股票代码} --attempt 1
Step 7: 新闻分析师
LLM 调用:
系统_prompt: 读取 references/news_prompt.md user_message: 同 Step 3 格式
验证:
echo '' | python3 {baseDir}/scripts/验证_step.py --step news_analyst --stock-code {股票代码} --attempt 1
Step 8: 社交媒体分析师
LLM 调用:
系统_prompt: 读取 references/social_prompt.md user_message: 同 Step 3 格式
验证:
echo '' | python3 {baseDir}/scripts/验证_step.py --step social_analyst --stock-code {股票代码} --attempt 1
Step 9: 多空辩论 + 研究经理决策 阶段 A: 多空辩论
LLM 调用:
系统_prompt: "你是一位专业的投资辩论主持人。" user_message: 以下是多头和空头的观点:
多头观点: {bull_analyst 的 analysis 部分,JSON 格式}
空头观点: {b