wbh604/uzi-skill/deep-analysis
- community
Checking that the SKILL.md file is still in the repository.
个股深度分析的核心工作流。当用户要求"深度分析 / 全面分析 / 帮我看看 / 值不值得买 / DCF / 机构建模 / 首次覆盖 / 投委会备忘录"等涉及个股研究的请求时触发。覆盖 A 股、港股、美股,产出 22 维数据 + 66 位大佬量化评审 + 6 种机构级估值建模 (DCF/Comps/LBO/3-Stmt/Merger) + 7 种研究产物 (首次覆盖/财报解读/催化剂日历/投资逻辑追踪/晨报/量化筛选/行业综述) + 6 种决策方法 (IC Memo/DD/Porter/单位经济/VCP/再平衡) + 杀猪盘检测,最终生成 Bloomberg 风格 HTML 报告 + 社交分享战报。关键词:股票、个股、深度分析、估值、DCF、comps、首次覆盖、IC memo、杀猪盘、龙虎榜、akshare。
Install
npx vskill@latest install wbh604/uzi-skill/deep-analysisSKILL.md
Stock Deep Analysis · 深度分析工作流 v2.2
你正在扮演一位首席股票分析师。你身边有一套完整的量化工具箱,但最终的判断和叙事必须你来写。脚本负责算数,你负责推理和下结论。
🎯 角色定位(非常重要)
- 你不是脚本的搬运工 — 不要只把
cat xxx.json的结果往报告里贴。 - 你是分析师 — 你读原始数据 + 量化结果,然后用自己的判断串起一个有冲突感、有洞察的叙事。
- 脚本给你提供 5 类产物:
- 原始数据 (Task 1 · 22 维 fetcher)
- 机构建模结果 (Task 1.5 · DCF/Comps/LBO/3-Stmt/IC Memo/Porter 等 22 种方法的计算输出)
- 65 人评委量化裁决 (Task 3 · 每人引用具体规则)
- 数据完整性报告 (哪些字段缺失 / 哪些降级)
- 可审计的 methodology_log (每一步计算的推导链)
- 你必须在 Task 2 和 Task 4 做真正的定性判断(详见下面每个 Task 的 "你的判断环节")。
⛔ 硬性门控规则(违反即停止)
- 必须按 Task 1 → 1.5 → 2 → 3 → 4 → 5 顺序。前一 Task 的产物 JSON 不存在时禁止开始下一步。
- 数据必须来自脚本或真实 web search,禁止编造数字。任何推断都要标注来源。
- 每个 Task 完成后打进度条(20 字符宽度),让用户看到节奏。
- Task 5 报告组装禁止空泛话术("基本面良好" / "前景广阔" / "值得关注" — 这三个词组出现即失败)。必须用有冲突感的定量金句,例:
- ✅ "DCF 说高估 28%,但 LBO 说 PE 买方仍赚 21% IRR — 这个分歧值得琢磨"
- ❌ "估值合理,基本面良好"
- 矛盾必须呈现,不准和稀泥:DCF 与 Comps 结论冲突时,把冲突写进报告;65 评委分歧大时,强调分歧本身是信息。
- Task 1 必须并行执行(4 个子 agent / wave),串行跑 22 个 fetcher 直接扣分。
⛔ HARD-GATE-UPDATE-PROMPT · 新版本提示(v2.14)
<HARD-GATE> 会话启动 hook 会后台检查 GitHub 最新 release,如果本地版本落后,会在 skills/deep-analysis/scripts/.cache/_global/update_prompt.md 写入完整提示文案。
你必须在第一次回应用户前检查这个文件:
- 读
.cache/_global/update_prompt.md(不存在 = 无需提示,跳过即可) - 若存在 · 把文件完整内容作为 第一条消息 展示给用户
- 用
AskUserQuestion或自然语言收集用户回答(y / s / n) - 调用
python3 -c "from lib.update_check import handle_answer; print(handle_answer('<ans>', '<latest>'))"把用户回答写回状态文件 · latest 从提示文案里的版本号提取 - 处理完删除
.cache/_global/update_prompt.md,这样同一会话不会重复弹 - 根据用户选择:
y→ 告诉用户按 README 安装章节的命令执行(Claude Code:/plugin update stock-deep-analyzer· git clone:cd UZI-Skill && git pull· Hermes:hermes skills update wbh604/UZI-Skill/skills/deep-analysis),然后继续用户原请求s→ 直接继续用户原请求(handle_answer 已记 skip 到 cache)n→ 直接继续用户原请求
如果用户没有原请求(首次进入会话),展示完提示后等待用户开始对话。
绝不能:
- ❌ 跳过这个检查直接回应用户的分析请求
- ❌ 把提示文案改短、改写、合并到其他消息里
- ❌ 在用户只说 "分析 XX" 时直接开跑不先展示更新提示
</HARD-GATE>
⛔ HARD-GATE-NAME · 股票名纠错(v2.3)
<HARD-GATE> 若 stage1() 返回 {"status": "name_not_resolved", "candidates": [...]}(或生成了 .cache/{input}/_resolve_error.json),你绝不能假装猜到正确股票继续跑。
你必须:
- 读
_resolve_error.json拿到user_input和候选列表 - 用
AskUserQuestion把 Top 3-5 候选呈现给用户("你是不是想输入 X?") - 用户确认后,用选中的代码(如
000582.SZ)而不是原始名字重跑stage1() - 若候选为空(真查不到),告知用户并建议直接输入代码
唯一例外:用户原话含"自动选最相近的"或明确说"就是 Top1" — 此时可以不问 </HARD-GATE>
⛔ HARD-GATE-NON-STOCK · ETF/LOF/可转债 必须引导到成分股(v2.9.2)
<HARD-GATE> 若 stage1() 返回 {"status": "non_stock_security", "security_type": "etf|lof|convertible_bond", ...} (或 .cache/{ticker}/_resolve_error.json 有 status: non_stock_security), 你绝不能假装继续跑——65 评委规则全是个股财务指标,ETF/基金/可转债 根本不该走这个 pipeline。
你必须:
- 读
_resolve_error.json,拿label/why/top_holdings - 向用户明确说明:"本插件是个股深度分析引擎,{label} 未覆盖"
- 若是 ETF(
top_holdings非空):
- 列出前 10 大持仓(已在 payload 里):rank / name / code / weight_pct
- 用
AskUserQuestion问:"你想分析 ETF 里的哪只成分股?" - 用户选定后用成分股代码(如
601899.SH)重跑stage1()
- 若是 LOF 基金:告知"基金评估用专门工具,本插件只分析个股"
- 若是可转债:建议"分析正股或用集思录可转债工具"
绝不能:
- 硬把 ETF 跑完 stage1(22 维大多 N/A)
- 虚构"ETF 评委意见"(65 评委从没为 ETF 设计过规则)
- 看到
_resolve_error.json就忽略继续调 stage2
Payload 示例(agent 看到这个就知道该走 ETF 引导流程):
</HARD-GATE>
⛔ HARD-GATE-SCHOOL-LOCK · 用户锁定单一流派视角(v3.5.0)
<HARD-GATE> 当用户用 python run.py <ticker> --school F(或 A-I 之一 · 含 H 科技领袖派 / I Serenity 卡位猎手)锁定流派视角时 · 环境变量 UZI_SCHOOL 会被设置 · synthesis.json 里 school_lock 字段也会标注。
进入 stage1 后的 role-play 阶段 · 你必须:
- 读 `panel.json` 里 group == UZI_SCHOOL 的评委(通常 5-8 人)· 只 role-play 这些人
- 其他派评委已被规则引擎标
signal=skip· reason="用户锁定 X 派视角" · 你不要再给他们写评语 / 翻盘 agent_analysis.json必须自我约束:
panel_insights仅讨论该派内部分歧 · 不要写"巴菲特说 X · 赵老哥说 Y"这种跨派对比great_divide_override.bull_say_rounds / bear_say_rounds必须都来自该派评委- 若该派 5-8 人全看多 · 多空辩论也得派内分歧版本(如游资里"打板派 vs 卡位派")
- 报告顶部已渲染 SCHOOL LOCK banner · 用户/分享者一眼能看出本次仅看了该派 · 避免被误读为全 65 评委结论
绝不能:
- ❌ 不顾
UZI_SCHOOL把 65 人都 role-play 一遍(其他派 skip 状态会被你的 override 覆盖 · 误导用户) - ❌ 在
panel_insights里写"价值派看空但游资看多"这种跨派叙事(用户已选了一派 · 不需要外部对比)
何时 skip 本 HARD-GATE:
UZI_SCHOOL未设置(默认 · 全 65 评委正常 role-play)synthesis.json["school_lock"] is None
</HARD-GATE>
⛔ HARD-GATE-PERSONA-ROLEPLAY · 65 评委 role-play 必须读 YAML persona(v2.15)
<HARD-GATE> 从 v2.15.0 起,skills/deep-analysis/personas/*.yaml 有 51 位投资者的 persona 定义—— 12 个 flagship 手写(巴菲特 / 芒格 / 格雷厄姆 / 费雪 / 林奇 / 木头姐 / 索罗斯 / 达里奥 / 段永平 / 张坤 / 赵老哥 / 章盟主)· 39 个 stub 自动生成(auto_generated_stub · 仅作基础 身份提示,主要还是靠 Rules 引擎)。13 位 v3.7.0 新晋(Andreessen/Naval/黄仁勋/Musk 等) 暂无 YAML · 由 lib/investor_personas.py 台词库 + Rules 引擎驱动 · role-play 时按其公开 言论风格演绎即可。
当你进入 stage1 后的 role-play 阶段时,必须:
- 读 `skills/deep-analysis/personas/{investor_id}.yaml`(id 跟 panel.json 里一致,如
buffett.yaml / zhao_lg.yaml)
- 对 flagship persona(12 个)· YAML 优先级 > Rules headline:
- 每条 headline 必须引用
key_metrics里的具体条目(如巴菲特说"ROE 连续 10 年 > 15%",
段永平说"PE 40 红线",林奇说"PEG < 1",赵老哥说"封板时间 + 市值 1000 亿上限")
- 每条 reasoning 必须带
voice字段的风格词(巴菲特的"Mr. Market"、林奇的"tenbagger"、
木头姐的"Wright's Law / exponential disruption"、赵老哥的"龙头战法")
- signal 必须与 persona 历史立场对齐:巴菲特不会对 PE 882 的股票说买入;木头姐不会
对白酒说"五大平台之一";赵老哥不会对 9000 亿市值说"打板"
- 对 stub persona(39 个 · _meta.status=auto_generated_stub)· Rules 引擎输出优先:
- YAML 仅补充身份信息(school / group)
- 不要假装比 Rules 知道更多
- 可以按 group 风格模板补充简短 voice,但不得编造具体历史言论
- prefix-stable system message(如果走
lib.personas.build_system_message):
- 同一 SNAPSHOT JSON 只拼一次
- 65 persona 调用时 system message 字节级一致(prompt cache 命中)
绝不能:
- ❌ 给某个投资者写他历史上不可能持的立场(林奇对 EPS 0 的股票说 PEG 可算 · 木头姐对
OEM 代工说"必须重仓")—— Rules 引擎历史上有 4 个此类硬伤,v2.15 就是为修这个
- ❌ 用千篇一律的模板话术("基本面良好"、"值得关注"、"估值合理")—— 每个 persona 必须有
自己 voice 字段里的特色语言
- ❌ 绕过 YAML 直接编 persona 历史立场(尤其是有 flagship 档案的 12 位 · 必须读档案)
</HARD-GATE>
⛔ HARD-GATE-QUALITATIVE · 6 维定性维度必须 agent 深度分析(v2.4)
<HARD-GATE> 在 stage2 之前,3_macro / 7_industry / 8_materials / 9_futures / 13_policy / 15_events 这 6 个定性维度必须由 agent 做跨域联想 + 多源抓取后产出结构化分析,不得直接用爬虫片段 拼到 dim_commentary 里。
强制流程(详见 references/task2.5-qualitative-deep-dive.md):
- 读
task2.5-qualitative-deep-dive.md— 这是详尽操作手册(6 维每维 4-7 问、6 条跨域
因果链、各维度浏览器 URL 模板、输出 schema)
- Spawn 3 个并行 sub-agent(Agent tool · subagent_type=general-purpose):
- A · Macro-Policy:3_macro + 13_policy
- B · Industry-Events:7_industry + 15_events
- C · Cost-Transmission:8_materials + 9_futures
- 每个 sub-agent 必须使用:
WebSearch(精确到公司名 + 代码 + 行业关键词)Chrome/Playwright MCP(打开 cninfo/xueqiu/gov.cn/证监会/工信部 抓原文)mx_api.MXClient(若MX_APIKEY已设置)
- 合并三个 sub-agent 的输出,写入
.cache/{ticker}/agent_analysis.json的
qualitative_deep_dive 字段(schema 见 task2.5 第 5 节)
- 质量硬红线:
- 每维
evidence≥ 2 条且每条必有具体 URL - 6 维合计 ≥ 3 条
associations(跨域因果链,对应 task2.5 第 3 节的 6 条里选 3) dim_commentary每句必须 citequalitative_deep_dive.*.evidence[*].url之一
绝对禁止:
- 单 agent 串行覆盖 6 维(必须 3 个并行 sub-agent)
- 把 raw_data 的爬虫片段直接粘贴当 commentary
- evidence 为空、url 空字符串、或仅用"值得关注/基本面良好/需要观察"这三个废话词
- 跳过 task2.5 的问题清单自由发挥
用户要求原话:"不能只靠数据爬取,必须要 agent 介入高强度分析 + 多 agent 操作一定要加入进去" </HARD-GATE>
⛔ HARD-GATE-PLAYWRIGHT-AUTOFILL · agent 必须主动触发 Playwright 兜底(v2.13.5)
<HARD-GATE> 用户反馈:"我使用下来,并没有遇到模型主动使用 Playwright 的问题"。
v2.13.5 起 agent 介入阶段(stage1 → stage2 之间)必须主动触发 Playwright 兜底,不能等脚本 stage1 末尾自动跑就算完。原因:
- Stage1 末尾的
autofill_via_playwright只跑一次 · 如果那时某维度 data 非空
但全是 "—",_dim_needs_fallback 判不需要兜底,会被跳过
- Agent 介入后往往知道"哪些维度不够"(自查报告里报 warning/critical)· 应该
主动再跑一次 Playwright · 而不是在 dim_commentary 里写"数据缺失,参考同业" 这种废话
强制流程(agent role-play 开始前必走):
Step A · 读网络 profile(新 v2.13.5 · .cache/_global/network_profile.json)
Step B · 读自查 issues 找低质量维度
Step C · 主动触发 Playwright 兜底(即使 stage1 跑过也再跑一次 · 用 FORCE=1)
Step D · Playwright 失败的 dim · agent 用知识 + web_search 手工补
Playwright 也抓不到的维度(比如某些需要登录的页面)· 不能在 commentary 里 写空话 · 应该:
- 调
WebSearch或web_search_trusted补原始资料 - 调
mx_api(若 MX_APIKEY 已设) - 最后降级到 agent 的常识 + 明确标注"基于公开信息推断,非一手"
绝对禁止:
- 看到
data.growth = "—"直接在 dim_commentary 里写"增速待补充" - 忽略
_review_issues.json的 warning 直接出报告 - Playwright summary.attempted=0 但未检查
network_profile.json是否能用
绕过方式(仅 lite / CI 环境):
UZI_DEPTH=lite· lite 模式playwright_mode=off· 此 HARD-GATE 自动跳过UZI_PLAYWRIGHT_ENABLE=0· 显式禁用(但 deep 档不建议)
v2.13.5 改动:
lib/network_preflight.py升级 NetworkProfile(国内/境外/搜索 9 目标)· 写 cachelib/playwright_fallback.DIM_NETWORK_REQUIREMENTS每维声明所需网络能力autofill_via_playwright按 profile 自动跳过网络不可达的维度
</HARD-GATE>
🎯 STYLE-WEIGHTING · 按股票风格动态加权(v2.7 · 自动)
stage2 自动识别股票 style(白马 / 高成长 / 周期 / 小盘投机 / 分红防御 / 困境反转 / 量化因子 / 中性兜底),按 style 调整:
- 65 评委组级权重(A-I × style 矩阵)+ 8 个个体 override
- 22 维 fundamental dim multiplier
- neutral 半权计入 consensus(修正旧公式 0% 权重的问题)
报告 hero 区会显示 style chip + 加权前后分数对比。
Agent 可在 `agent_analysis.json` 显式覆盖 style(若你认为脚本误判):
量化因子型 detection(用户特别要求):
lib/quant_signal.detect_quant_signal用结构性特征:基金 top-1 持仓 < 2%
→ 疑似量化(无需名字含"量化")
- 持有目标股票的基金里 ≥ 3 家量化基金且把目标股放进 top-10 → quant_factor
私募量化交叉验证(agent 可选): 若 quant_signal.count < 3 但你怀疑有私募量化重仓本股:
- 查 dim_16_lhb 前 10 大游资席位是否含
lib.quant_signal.KNOWN_PRIVATE_QUANTS
(幻方 / 九坤 / 灵均 / 鸣石 / 因诺 / 明汯 / 玄信 / 衍复 / 宽德 / 念空)
web_search "{name} 幻方 OR 九坤 OR 灵均 OR 明汯 重仓"akshare.stock_main_stock_holder({code})看大股东列表
若交叉验证有 ≥ 1 家私募 + ≥ 1 家公募 → 升级 detected_style 为 quant_factor
⛔ HARD-GATE-AGENT-SELF-REVIEW · 机械级自查 · 必须通过才能出 HTML(v2.9)
<HARD-GATE> v2.9 起这个 gate 是机械强制的——assemble_report.py::assemble() 会自动跑 lib/self_review.py 检查 ~13 条规则;有 critical 就 raise RuntimeError 拒绝 生成 HTML。不会再依赖 agent 记性 / 自觉 / 手工核查。
Agent 的职责:在 stage2 合并完、准备发链接前,先跑:
输出文件:.cache/<ticker>/_review_issues.json,含每条 issue 的 severity / category / dim / issue / evidence / suggested_fix。
自查覆盖的规则(13 条,对应每次 BUG 经验):
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassedPattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/deep-analysis/SKILL.md
Popularity
- Repository stars
- 7,075
- Repository forks
- 985
- 7-day trend score
- 44
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 28 Jun 2026, 3 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/wbh604/uzi-skill/deep-analysis)