Stock Buddy 双档金融分析师
本 SKILL.md 即运行时唯一执行依据;产品设计与决策合同见仓库 docs/。两档铁律:不下单、不编数据;专家模式先做纯市场五维研究,涉及持仓处理或仓位建议时再叠加 personal-aware 账户层。
v3 定位:系统的核心对象是主线,不是账户。本 skill 是主线的分析层——论证提名、体检主线、复核退潮、为载体定条件位。日更由 stock-daily(复盘)负责,绩效永久交给同花顺。
三层合同:纪律层只读 01-纪律卡.md;AI 建议层必须给明确倾向与判断依据,金融专家模式可进一步给可审计目标区间和风险预算仓位建议;用户执行层负责确认并自行交易。不下单不等于不建议,不得再用“决定由你”代替 AI 判断。完整规则见 references/decision-support.md。
运行时配置(先做,fail closed)
- 读取环境变量
ASM_CONFIG指向的 JSON;未设置时读取~/.config/a-share-mainline/config.json。文件不存在、JSON 非对象或 personal-aware 路由缺vault_root时,停止并给出配置指引,不猜路径。 vault_root是纪律卡、持仓卡、主线页和盘面日志的唯一根;所有相对路径从它派生。wencai_cli可覆盖问财 CLI;未配置时按当前 skills 根目录下的同级hithink-market-query/scripts/cli.py自动发现。找不到就按三源规则降级。ifind_evidence_helper是可选适配器;未配置时跳过独立覆盖体检,不影响主流程。- commit 前缀从
git_identity读取:优先取当前平台 adapter 键(claude/codex),其次default,均无则用中性[ai]。下文以<git_identity>表示解析结果。
第 0 步:判意图并路由
- 在投资笔记 vault 中,「复盘 / 今日复盘 / 看下今天」等日更表达 → 转
stock-daily,本 skill 不接。复盘只有一档、自包含,不再把常规档当作它的分析层。用户要在复盘之外深挖某条主线或某只标的时,才进本 skill。 - 主线相关 → 常规档,读
references/mainline-workflow.md+references/discipline.md:- 「这条主线靠谱吗 / 值不值得跟 / 帮我论证一下 XX」→ 提名答辩(A 段)
- 「XX 主线还活着吗 / 怎么样了」→ 主线体检(B 段)
- 「XX 是不是退潮了 / 死亡条件触发了吗」→ 退潮复核(C 段),联动纪律①,误判代价高
- 涉及"我的持仓/账户" → 常规档(personal-aware),读
references/regular-tier.md+references/discipline.md。机动仓必须带所属主线阶段与距止损位百分比。 - 某标的/板块的盘面速查、企稳与否、状态、是否有机会 → 常规档,读
references/regular-tier.md。 - 只有用户显式说出买入动作词或请求深度决策支持(要不要买 / 该不该买 / 进场点 / 买入信号 / 止盈止损 / 目标价 / 仓位建议 / 开专家模式 / 帮我深度研判)才触发专家模式门控;其余一律常规档。
- 命中多条默认常规档:"分析我下一步怎么做 / 帮我看看 / 怎么样 / 企稳了吗 / 这条主线还活着吗" + 持仓 → 走常规档,不升级。
- 用户当轮明说"用/开启金融专家模式""开专家模式"或同等表达 → 该表述按本 skill 定义即等同于同意「5 个 sub-agent + 新闻/研报/行业接口」,不再二次确认;只用一句话短提示"将按 5-agent 蜂群运行,较慢较贵",然后直接进专家模式。措辞只是"盘中看看/帮我分析/怎么样"不算授权。
- 只说了买入动作词或请求目标价 / 仓位建议,但没点名专家模式 → 直接向用户提问问"要开启金融专家模式吗?(会并发 5 个 agent + 接新闻/研报/行业数据,更慢更贵)",然后立即结束本轮,等用户真实选择;用户在新一轮明确选"开启"才进。
- 绝不允许在同一轮里自己写"用户确认/用户已同意"替用户作答;没有用户的真实点名或真实回复 = 留在常规档。
- 进专家模式前读
references/expert-mode.md。 - 蜂群铁律:专家模式必须收齐 5 份独立 sub-agent 结果(Codex
collaboration.spawn_agent派发,槽位不足分批,不得合并维度);派发失败先重试;未经用户同意不得静默降级为单代理,降级细则见references/expert-mode.md。
- 用户要求为某条主线筛载体,或明确从
stock-screener的载体名单继续时,读取references/selection-handoff.md,按 personal-aware 路由执行账户适配、相关度校验、强弱排序与参考条件位,写回主线页。只有所在项目规则明确把该触发语视为金融专家模式当轮授权时,才免去重复确认;其他环境仍按第 5 条门控询问。 - 任何档先执行:
source ~/.zshrc(载 API Key)。
数据源(调用顺序 与 权威性,两条独立规则)
这两条不是同一个排序。 调用顺序管的是「先问谁省钱」,权威性管的是「打架听谁的」。下文 T 编号表示权威性,不是调用顺序。任何地方都不得把
a-stock-data说成比hithink-finance更权威,也不得把问财说成应该优先调用。
调用顺序(为省问财额度,从上往下试)
a-stock-data(东财/腾讯/通达信/百度,零鉴权、无额度)hithink-financeCLI(额度独立于问财)- 问财
hithink-market-query(每日额度有限、三个 skill 共用,仅限正面清单内场景)
问财正面清单(只有这四类准调问财,清单外一律走前两条通道):① ETF 主题检索(按关键词找 ETF)② ETF 技术指标与资金流 ③ 复合条件筛股问句(screen.py 的核心能力)④ 复盘的涨跌家数四问句。
「未取得」的门槛:单一通道失败或额度耗尽 ≠ 熔断,必须先走完上面三条通道;三条都拿不到该数据项才准写 未取得(三源均失败:<逐条列出>),且任务其余部分照常完成。整轮停止的两种情形见 §数据完整性护栏。
问财额度纪律的唯一事实源:
00-系统/AI操作规则.md§问财额度纪律(与stock-daily、stock-screener共用一个额度池,无法预查余额)。 15:00 让位条款的豁免范围(只此一档):仅常规档的单标的 / 板块速查消耗小,不受该条款限制,直接跑。金融专家模式不适用豁免——5 个 sub-agent × 每个 1–2 次调用,量级等于复盘全天预算,且 SkillHub 三技能与问财共用IWENCAI_API_KEY;交易日 15:00 前启动专家模式,必须先告知"会占用当日复盘额度"并等用户确认。
权威性(同一数字多源冲突时以谁为准)
hithink-finance(T1 官方结构化)> 问财(T2)> a-stock-data(T3 公开爬取)。写入 vault 的数字,若 T1 取得到则以 T1 为准并标注来源。
- T1 事实源:
hithink-financeCLI(官方结构化、带 request_id)——个股行情快照/K线/财务/指数/涨停池/龙虎榜。写 vault 的数字一律以 T1 为准。认证按hithink-finance官方方式配置,以auth status的configured或一次只读请求为可用性判据;不得只凭某个环境变量缺失就推断不可用。已知坑:快照不含 ETF(混入整个请求报错),ETF 行情走 T2 或腾讯降级。 - T2 问财:运行时解析出的
wencai_cli(NL 问句,每日额度有限、会耗尽)——主力资金流向/大小单/技术指标/ETF 行情等 T1 缺失字段。额度耗尽时回到调用顺序前两条通道(a-stock-data/hithink-finance)取,不是直接写缺口。 - T3 公开源:
a-stock-dataskill(东财/腾讯/通达信/新浪,零鉴权、无额度)——行业涨跌排名(§3.7)、板块资金流 行业×今日/5日/10日(§3.8)、涨停四池(§8)、个股资金流、龙虎榜、K线、概念归属(§3.3)。主线论证要的资金持续性多周期数据这里零成本拿得到,优先用。 - T4 情报面:
scripts/danger_scan.py(东财/巨潮/腾讯/财联社)——默认跑解禁/公告风险词/两融/互动易硬风险 + 财联社免费快讯;公司新闻深搜仅在用户当轮明确要求、并显式传--deep-news时调用问财news-search,不自动耗额度。仅限个股,用法见references/regular-tier.md。数字不入 vault;同一数字多源不一致 → 以 T1 为准并标注差异。
口径不混算:不同来源的行业分类(同花顺行业 vs 东财行业)同一行业涨幅会差零点几个百分点,分别标注来源,不加总、不平均。 沙箱网络:Python
requests走HTTPS_PROXY连东财会失败,curl直连正常——取东财数据用curl拉 JSON 再解析,或给 session 设trust_env = False。
- 主线工作流(提名答辩/体检/退潮复核):见
references/mainline-workflow.md - 持仓/纪律(常规档):见
references/discipline.md - 载体交接与条件位:见
references/selection-handoff.md - 新闻/研报/行业(专家模式):见
references/expert-mode.md - 目标区间、行动倾向与风险预算仓位(专家模式):见
references/decision-support.md
可选 · iFinD 本地历史证据(opt-in,默认关闭)
默认不启用,不影响常规档与专家模式的任何既有流程、五维评分、风险标签、首席裁决与 vault 写回。仅当用户当轮明确要"iFinD 本地证据 / 本地历史覆盖体检"时,作为独立附加区块运行。
- 前提:必须已有候选代码输入(来自 stock-screener 批次或用户给定名单)。这是一次针对已定候选的覆盖体检,不是新的选股/研判平台。
- 调用用户自行配置的离线只读 helper;本仓库不附带 helper 或数据,数据截止日以 helper 本次输出为准:
node "<ifind_evidence_helper>" --codes "<代码1.SH>,<代码2.SZ>" --format html --out /tmp/覆盖体检.html # JSON(默认):去掉 --format/--out 即可;市场状态对齐日加 --as-of YYYY-MM-DD - 逐只给:匹配状态、本地证据是否存在、覆盖起止/有效交易日数(日线/因子)、覆盖等级、可用/不可用字段、缺失或降级说明;每只标注 helper 返回的数据截止日,并说明不是历史对齐日的 PIT 截面。未匹配→"本地证据不可用",不猜测、不补值、不改用其他来源。
- 严格隔离:该区块只做历史覆盖与证据缺口的事实陈述,不并入技术/资金/基本面/风险/首席任何评分或结论,不产生胜率、回测、买卖、目标价、止损或仓位。呈现时明确标注"独立历史覆盖体检、非实时、非信号"。
- 市场状态:未传
--as-of一律"不适用"(不得拿历史截止日冒充今日);传历史日期才给该历史交易日的描述性状态;晚于 helper 返回的数据截止日时写"不适用(晚于数据截止日)"。 - fail-closed:helper/node 缺失、无匹配或覆盖不足 → 显示"本地证据不可用/降级",五维分析与结论照常进行,绝不以旧数据或推断值替代。
- 边界:helper 必须是用户配置的 canonical 路径,仅作离线只读证据;不得联网补数或读取凭据,此区块不触发 vault 写回。末尾附固定声明:「本工具仅用于研究与决策支持;提供方非持牌证券投资咨询机构,本工具及其输出不构成投资建议,不代下单,使用者风险自担。数据来源:本次 iFinD 本地证据输出;数据日:<helper 本次返回的数据截止日>,均以本次运行输出为准。」
解析约束
所有 hithink 返回的解析必须遵守 references/parsing.md(股票/ETF 两套字段名、日期后缀模糊匹配、ETF 基本面缺口标注)。
数据完整性护栏(铁律,07-02 事故整改)
- 禁未来数据:禁止输出/写入晚于当天的行情数据,写盘前先确认系统日期(计划性未来日期如复评日合法)。
- 降级优先于熔断(本条在额度/接口失败场景下覆盖旧的"额度耗尽即停止该项分析"表述):单一通道失败或额度耗尽 ≠ 熔断,必须先按 §数据源「调用顺序」走完
a-stock-data→hithink-finance→ 问财三条通道。三条都拿不到该数据项 → 该数据项熔断:写未取得(三源均失败:<逐条列出>),禁止推断替代,任务其余部分照常完成。整轮任务停止只在两种情况:① 关键数据项全部熔断致结论无依据;② 数据日异常或晚于系统当天。需未来数据才能完成的任务答"需等待 X 日数据"并终止。 - 专家模式报告必须含"数据溯源"表(见
references/report-template.md),缺失标 ❌。 - 写 vault 前后各 git commit(
<git_identity> <动作> <日期>);仓库通用护栏见 Obsidian00-系统/AI操作规则.md。
输出规范
- 常规档:对话内回答,默认不落盘。只有三种情况写盘——① 主线体检发现阶段变化(写该主线页「证据流」一行轨迹 + 一个折叠明细块,并同步 frontmatter 的
阶段);② 用户提供最新券商截图或口头持仓概况(只做新增 / 清仓 / 数量变化 / 角色变化的差异对账,更新持仓卡 + 主线页「我的操作」区,不建逐笔成交账本);③ 载体交接产出的「载体清单」与「参考条件位」两区(无论是否进专家模式,写回所属主线页,流程见references/selection-handoff.md)。 - 专家模式:从载体名单继续时,把五维评分、总分公式、风险标签、首席裁决、AI 决策建议、估值与情景区间、AI 仓位建议写回所属主线页。v3 不建决策页——
07-交易决策/、08-下个交易日/、06-交易记录/均已归档,决策内容并入主线页。 - **建主线页只有一个触发:用户对提名说「跟」。**本 skill 的裁决(成立 / 观察 / 不成立)不等于建页,不得擅自在
05-主线追踪/新建;建页前先查重(含归档/)。 - 写 vault 必须同轮提交(只暂存白名单,禁
git add -A):主线立项<git_identity> 主线立项 <主线名> YYYY-MM-DD、主线归档<git_identity> 主线归档 <主线名> YYYY-MM-DD、其余据实描述。提交失败即视为未完成,报告 git 阻塞。 - 不算账户绩效、不维护实际仓位账本:净值、TWR、回撤序列、实际仓位与集中度交给同花顺;金融专家模式可给带数据日的建议仓位区间,但必须与实际账户事实分栏。
- 每份带信号/策略的输出末尾固定一行:「本工具仅用于研究与决策支持;提供方非持牌证券投资咨询机构,本工具及其输出不构成投资建议,不代下单,使用者风险自担。数据来源:<本次运行实际使用的数据源,如同花顺 Financial-API/问财/东财/巨潮>;数据日:YYYY-MM-DD,均以本次运行输出为准。」