SCHEMA

这是 investment-llm-wiki/ 的主 schema 文件,也是维护本 wiki 的唯一权威规则入口。

它对应 Karpathy 原版 LLM Wiki 的 schema layer:定义目录结构、页面约定、状态枚举、source 元信息、Ingest / Query / Lint 工作流,并约束 LLM 如何持续维护 wiki。

说明:本项目历史上沿用了 rules/ 目录名;语义上它就是 schema layer。KB_RULES.mdINGEST_WORKFLOW.mdLINT_CHECKLIST.md 是本文件的摘要/操作清单,不应与本文件冲突。

1. 三层结构

Raw sources: sources/

  • 定位:原始资料层,视为 source of truth。
  • 规则:只读、不可静默改写、尽量保留原始出处与时间。
  • 可以新增元信息或旁注,但不要覆盖原文事实。
  • 做公司详细分析时,使用 Gangtise 系列 skill 拉取最近 4 个季度与最近 4 个年度的 Gangtise 业绩电话会纪要;统一称为 Gangtise 电话会议纪要。若 Gangtise 登录态不可用,明确记录为资料缺口,不编造内容。

建议子目录:

  • sources/methodology/:方法论原文
  • sources/filings/:财报、公告、招股书
  • sources/company-official/:官网产品页、官网图片、投资者材料、官方业务说明
  • sources/reports/:研报
  • sources/news/:新闻、政策、采访
  • sources/calls/:电话会、纪要、访谈
  • sources/field-notes/:用户亲自线下参与、小范围会议、闭门会、路演、调研后的手动笔记;分析前应优先搜索,引用时按可信度与保密级别控制
  • sources/industry-data/:行业空间测算、竞争格局、市占率、可比公司数据表
  • sources/market-data/:数据快照、回测输出、估值表
  • sources/chats/:聊天记录、碎片想法
  • sources/meetings/morning/:晨会原始记录、轻度整理稿、附件与待验证清单
  • sources/weekly-reports/:周报原始材料、周期跟踪表、附件与下周验证清单

Persistent wiki: wiki/

  • 定位:持续更新的知识层。
  • 规则:允许重写、补写、归纳、交叉引用,但必须保留更新时间与证据链。
  • 原则:优先维护对象页,而不是给每份资料各写一篇摘要。

当前投研扩展页型:

  • wiki/companies/
  • wiki/convertible-bonds/(可转债独立对象页,不与公司页模板混用)
  • wiki/industries/
  • wiki/themes/(定位为题材/跨行业主题,不再承载行业主分类)
  • wiki/strategies/
  • wiki/positions/
  • wiki/queries/
  • wiki/reviews/
  • wiki/briefs/companies/<公司名>/<公司名>_对话回复brief.md(面向用户的聊天回复原文累计页;不替代公司页或 query)

Schema layer: rules/

  • 定位:维护约束与操作手册。
  • 主入口:rules/SCHEMA.md
  • 子文件:DETAILED_COMPANY_WORKFLOW.mdKB_RULES.mdINGEST_WORKFLOW.mdLINT_CHECKLIST.md,只保留细化流程/摘要/清单,不能另立一套规则。

2. 导航与日志

Karpathy 原版强调两个特殊文件:

  • index.md:内容导向目录,列 source、wiki 页、简短说明。
  • log.md:时间导向日志,追加记录 ingest / query / lint / schema change。

本项目 canonical 约定:

  • 使用小写 index.md,不再并行维护 INDEX.md
  • 原因:macOS 常见大小写不敏感文件系统上,INDEX.mdindex.md 不能可靠共存。
  • logs/ingest-log.md / logs/change-log.md 是细分日志,可选同步维护;若冲突,以 log.md 为准。

3. 链接格式

内部文件、附件、source、wiki 页面之间的链接统一使用普通 Markdown 本地相对链接;这是 canonical 格式,因为 Typora 可直接打开本地文件,Obsidian 也会将 Markdown link 计入 backlinks / graph / outgoing links:

[附件](./attachments/file.pdf)
[打开同目录PDF](./资料.pdf)
[打开上级目录图片](../images/a.png)
[打开本地文件夹](./附件/)

规则:

  • 不把 Obsidian/Wiki 双链格式(双中括号包裹路径)作为内部链接的主格式。
  • 统一写成 [显示文字](相对路径),路径相对于当前 Markdown 文件。
  • wiki/*/ 指向 sources/ 时,通常使用 ../../sources/...
  • wiki/companies/ 指向 wiki/queries/ 等同层分类时,通常使用 ../queries/...../themes/...../positions/...
  • 若链接到本地文件夹,路径以 / 结尾,例如:[附件](./attachments/)
  • 本地链接优先保持真实文件名,尤其是公司页常见的 公司名(代码).md;lint 会同时接受原始路径和 URL 编码路径。若某个 Markdown 渲染器把空格或 ) 误判为链接边界,可用尖括号包住路径(如 [晶泰控股](<../companies/晶泰控股(02228.HK).md>))或仅对链接目标做 URL 编码;不要为了编码规则重命名文件或双写链接。

说明:普通 Markdown 相对链接是主格式,不是放弃 Obsidian。Obsidian 会把 Markdown link 计入 backlinks / graph / outgoing links;不要同时保留“双链 + Markdown link”,避免重复维护和 outgoing links 变脏。

用户手工贴入的图片或附件嵌入(如 ![[...]])属于用户内容,不能因 lint 不认或暂时找不到文件而删除。处理顺序:

  1. 先定位附件原文件。
  2. 按项目与证据类型直接移动归档到对应 sources/ 位置;公司研究图片通常放入 sources/company-official/<公司名>/images/sources/filings/<公司名>/images/,若属于自制图表/数据包则放入对应 sources/market-data/<公司名>/<数据包>/images/ 或数据包目录。
  3. 将正文中的嵌入改成普通 Markdown 图片链接,例如 ![图片说明](../../sources/.../images/xxx.png),并在附近或 source README 中注明来源/用途。
  4. 归档后仍要保留在正文相关段落展示;不能因为后续补了生成版 SVG 图,就把用户手工贴图静默替换或移到仅剩 source 索引。
  5. 若一时找不到附件原文件,保留原始嵌入并标注待归档,不直接删除。

4. Source 元信息模板

每份 source 文件开头尽量包含轻量元信息块,不使用重型 YAML 也可以,但字段名要稳定:

- 来源:
- 日期:
- 类型:
- 涉及公司:
- 涉及主题:
- 一句话摘要:
- 原始链接/文件:

规则:

  • 日期 优先用资料发生/公告日期;没有则用入库日期。
  • 类型招股说明书/财报/公告/研报/新闻/政策/电话会/调研/亲历会议纪要/市场数据/聊天记录/方法论 中选近似项。
  • Source 只记录事实和摘录;判断应回写到 wiki 对象页。

5. 状态枚举

页面状态统一从以下枚举中选择,可组合使用但不要发明新词:

  • 有效:当前 thesis 仍成立。
  • 观察:证据不足或变化较快,需要继续跟踪。
  • 已削弱:新证据削弱旧判断,但尚未完全推翻。
  • 已失效:核心前提已不成立。
  • 待验证:只有线索,证据链不足。
  • 历史样板:主要用于保留方法论/策略样本,不代表当前投资吸引力。
  • 成长验证中:成长逻辑已有阶段性证据,但仍需连续验证。
  • 已完成:适用于复盘/查询类页面,表示该次记录已沉淀完毕。

6. 对象页 schema

公司页模板系统:主 template + 行业子 template

公司页默认采用两层模板:

  1. 主模板:wiki/companies/_TEMPLATE.md,负责所有公司通用的研究骨架,包括 thesis、反证、估值、订单/需求、电话会、公告、催化剂、风险、证据链、矛盾记录和全部参考资料来源。
  2. 行业子模板:wiki/companies/industry-overlays/,负责行业特有变量与检查清单。子模板是 overlay,不是独立交付页面。
  3. 详细公司研究 workflow:rules/DETAILED_COMPANY_WORKFLOW.md,负责覆盖等级、分业务/分产品深描、官方图片、行业空间测算、竞品财务比较、分业务/产品预测、创新药专项测算等执行口径。

使用规则:

  • 写入 investment-llm-wiki/ 的公司研究文档,应优先按本 schema 和主模板组织,不要把临时报告原样塞进 wiki。
  • 做“详细分析 / 深度分析 / 投研底稿 / 公司研究”时,默认至少以 L3 详细研究页 为目标;若资料不足,必须在公司页和覆盖矩阵中标明缺口,而不是把未覆盖内容隐去。
  • 完成公司详细分析并向用户发送可读文字回复时,默认把实际发送的回复原文直接追加至 wiki/briefs/companies/<公司名>/<公司名>_对话回复brief.md;同一公司多轮回复写在同一文件内,以日期/场景分节,不另行总结、不默认拆文件。归档历史回复前必须从当前会话历史或 session JSONL 提取原文逐字核对;无法取回原文时明确标记缺失,不得根据研究结论重构历史对话。公司页元数据区链接该 brief。Brief 是交付原文视图,结论与证据的持续维护仍以公司页、query 与 sources 为准。
  • 每个公司页通常选择 1 个主行业子模板;跨行业公司最多叠加 2 个,除非用户明确要求按集团业务逐项拆解。
  • 子模板内容要合并进公司页的对应章节或 行业专项模块,并删除不适用项;不要整段无差别复制。
  • 如果某行业反复出现共性模块缺口,可以新增或改进行业子模板,并在 index.md / log.md 记录 schema change。

当前建议的行业子模板:

  • 电力设备与新能源:订单/招标、技术代际、海外认证、SST/HVDC、毛利率结构。
  • 医疗器械:注册证、集采/价格治理、医院覆盖、海外注册、产品迭代。
  • 创新药与生物医药:管线、临床数据、BD、专利、医保准入、cash runway。
  • 半导体与硬科技:客户验证、良率、库存周期、国产替代、出口管制。
  • 消费与白酒:品牌、渠道库存、批价/动销、合同负债、费用投放。
  • 资源能源与周期:资源储量、价格/成本曲线、产能、资本开支、现金流与分红。

可转债页模板系统:独立证券对象

  • 可转债使用 wiki/convertible-bonds/_TEMPLATE.md,具体流程以 rules/CONVERTIBLE_BOND_WORKFLOW.md 为准;不得把公司页主模板或股票详细分析必备图表直接作为转债报告框架。
  • 必须覆盖:债券身份与条款、债价/转股价值/溢价、纯债底或到期收益、下修/回售/强赎/到期路径、偿付能力与清偿回收、风险收益和触发跟踪。
  • 发行人公司页只承接影响平价、偿付能力和条款博弈的公司证据;可转债投资结论写在转债对象页或回链该对象的 query 页。
  • 条款、评级和受托材料优先放在 sources/filings/<发行人>/,平价、溢价、触发统计和回收模型优先放在 sources/market-data/<发行人>/

公司页必须覆盖

  • 对象元数据:状态、更新时间、证券代码、交易所/市场、覆盖主题、相关持仓。
  • 覆盖等级:使用 L0/L1/L2/L3/L4 标记当前内容深度;详细分析目标为 L3,持续跟踪目标为 L4。
  • 对话回复 Brief:存在用户可读交付时,在公司页首部链接 wiki/briefs/companies/<公司名>/<公司名>_对话回复brief.md;其内容应为实际发送回复原文,按轮次累计。
  • 公司概况:业务、收入结构、行业位置。
  • 分业务 / 分产品详细介绍:详细分析必须按主要业务或产品线说明产品形态、客户问题、产业链位置、商业模式、客户/渠道/区域、收入和毛利贡献、竞争差异,并配官网/年报/招股书/投资者材料中的官方图片或业务流程图;图片应作为 source 保存或链接,注明来源,不作无证据装饰。
  • 行业研究 / 竞争格局 / 市占率 / 可比公司比较:详细分析必须按主要业务拆分对应行业/子赛道,覆盖行业空间测算、市场规模与集中度、主要玩家、公司市场份额或明确标注的代理指标、核心竞争对手横向比较和财务数据比较、份额提升逻辑及反证风险。任何市场空间或市占率必须标注产品边界、区域、期间、分母/计算口径与来源;证据不足时标 待补证据/待验证,不得臆算。可复用结论必须同步写入对应 wiki/industries/<行业>.md
  • Thesis 与分歧:看多逻辑、看空/谨慎逻辑、关键分歧。
  • 估值与市场定价:PE/PB/PS/市值、估值口径、当前定价隐含前提、估值压力/安全边际。
  • 财务简表:按市场口径列利润与估值;有天然二维结构的数据优先用 Markdown 表格,避免把多组数字写成长 bullet,但不要机械表格化。若一个大表变成互不相关的 类别 / 指标 / 数值 / 备注 一维清单,应拆成若干小二维表,或把订单、判断、跟踪口径等更适合文字的内容改回短句。A 股默认列营业收入、归母净利润、扣非归母净利润、毛利率、净利率 / 扣非净利率、ROE/ROIC、现金流,以及归母 PE / 扣非 PE;不要把扣非归母净利润另称为经调整净利润。港股 / 美股默认列营业收入、报告净利润、经调整净利润 / non-GAAP 净利润(若披露)、毛利率、报告净利率 / 经调整净利率、ROE/ROIC、现金流,以及报告 PE / 经调整 PE;注明市值 / 股价基准日。
  • 订单 / 需求 / 收入结构:下游需求、订单/客户/渠道、产能/交付节奏;收入结构除分产品/分业务营收外,必须补境内/境外(或主要地区/客户区域)收入、占比、毛利率和变化原因;尽量用近 3-5 年表格/图表展示趋势;没有 source 时必须显式写 待补证据
  • 盈利预测 / 估值桥:详细分析必须按分业务/分产品拆收入、量价/渗透率、毛利率、费用率和利润贡献,再桥接到公司披露口径;创新药公司必须按核心管线拆峰值销售、上市爬坡、权益比例和风险调整概率。完成或更新盈利预测后,同步列未来年度前瞻 PE,注明股价/市值基准日。
  • 电话会 / 调研 / 纪要 / 亲历会议:管理层表述、问答要点、待验证问题;做详细公司分析时,默认尝试用 Gangtise 系列 skill 补最近 4 个季度和最近 4 个年度的 Gangtise 业绩电话会纪要;同时搜索 sources/field-notes/ 中用户亲自线下参与或小范围会议笔记;没有 source 时不要编造。
  • 招股说明书 / 公告 / 财报事件:IPO/上市文件、定期报告、重大公告、风险提示及其对 thesis 的影响。招股说明书/招股章程/prospectus 是高优先级官方 source,不只用于上市主体/代码/发行价/募资用途/风险核实;必须详尽扫描目录与主要章节,把商业模式、产品服务、产业链、客户供应商、竞争格局、营收构成、境内外/地区收入、毛利率、成本费用、产能/募投项目、历史财务三表与财务分析、现金流、经营指标、治理/股权、关联交易、风险因素等基础资料回写到公司页各板块。
  • 详细分析图表:报告正文必须加入近年图表,包含:(1)营业收入、适用的净利润/扣非净利润/经调整净利润,并叠加一致预期净利润与本文预测净利润;(2)毛利率及适用的净利率/扣非净利率/经调整净利率;(3)按产品/业务与按国家/地区(或境内/境外/主要客户区域)的营收构成;(4)分业务/产品营收逐年增长图和分业务/产品逐年毛利率图。图表应放在对应文字段落附近,而不是集中堆到文末;若有 SVG,正文直接用 ![图表说明](相对路径.svg) 展示 SVG 图片,不用 [PNG] / [SVG] 链接列表代替展示。历史实际值、一致预期、本文预测应区分图例,并注明预测基准日、口径、币种/单位;数据和图表资产存入 sources/market-data/<公司名>/ 并回链。未披露或不适用的序列必须标明缺口,不得臆算。图表标题、坐标轴、图例、注释、单位、数据标签、缺口说明和脚注默认全部使用中文,必要英文缩写只作括注。文末可保留图表与数据 source 索引,但不把它作为主要图表展示区。
  • 行业专项模块:按所选行业子模板补充关键变量、验证指标、待补 source。
  • 催化剂、风险、核心指标、最近更新、证据链、矛盾记录、关联页面、全部参考资料来源。

行业页必须覆盖

  • 对象元数据:状态、更新时间、覆盖范围、产业链位置、关联题材、关联公司、关联策略/持仓。
  • 行业一句话判断:当前景气、主要矛盾、最大预期差。
  • 本周/最近变化:周报和晨会里的行业信息优先回写这里。
  • 核心驱动变量:需求、供给、价格、成本、政策、库存/渠道、技术/产品迭代。
  • 产业链与公司覆盖:按环节链接覆盖公司页,避免公司信息散落在周报中。
  • 竞争格局与市占率:市场定义和规模、竞争集中度、主要玩家/份额表、目标公司及核心可比公司的产品/客户/区域/收入或份额/盈利能力/竞争优势对比;所有市占率均注明产品边界、区域、期间、分母口径和来源,缺失数据明确标 待验证
  • 行业内题材/子赛道:小题材先作为行业页中的 section;跨行业、反复出现、或需要独立股票池/验证框架时,再升级为 wiki/themes/题材-xxx.md
  • 证据链、反证与风险、待验证问题、关联页面、全部参考资料来源。
  • 详细公司分析生成新的竞争格局、市占率或同行比较证据时,必须同步更新相关行业页;多业务公司应分别更新其主要业务对应行业页。

题材页 / 跨行业主题页必须覆盖

  • 题材定义:为什么不是普通行业信息,而是一个阶段性或跨行业的投资线索。
  • 所属/关联行业:可多选,必须链接行业页。
  • 受益链:核心受益公司、弹性公司、潜在受损公司。
  • 催化剂:政策、产品、价格、事件、订单、业绩、资金行为。
  • 证据与反证:标明硬证据、软证据、传闻、待验证。
  • 生命周期:萌芽 / 扩散 / 拥挤 / 兑现 / 退潮。

策略页必须覆盖

  • 策略定义、适用市场环境、关键前提、失效条件、风险与约束、证据链、关联主题/公司/复盘。

持仓页必须覆盖

  • 建仓 thesis、当前支持证据、当前反证、估值与仓位约束、失效条件、风险控制、最近复核。

查询页必须覆盖

  • 问题、结论、证据、不确定点、可回写页面。

复盘页必须覆盖

  • 当时为什么做、实际发生了什么、哪些判断对/错、是否违反纪律、应沉淀到哪些对象页。

7. Ingest / Query / Lint

Ingest

每来一个新 source:

  1. 放入 sources/ 对应目录。
  2. 按 source 元信息模板补齐字段。
  3. 判断影响哪些 wiki 页面。
  4. 更新对象页与关联页,而不是只写 source 摘要。
  5. 记录冲突、削弱、失效或待验证信息。
  6. 更新 index.mdlog.md;必要时同步 logs/ingest-log.md / logs/change-log.md

公司详细分析的默认资料补充:

  • 先搜索 sources/field-notes/ 是否存在用户亲自参与/小范围会议的手动笔记;若存在,按 可信度保密级别 判断能否引用,并回写公司页 电话会 / 调研 / 纪要 / 亲历会议 与最终 全部参考资料来源
  • 使用 Gangtise 系列 skill(如 gangtise-file-client / gangtise-kb-client / gangtise-data-client,按可用性选择)检索公司最近 4 个季度与最近 4 个年度的业绩电话会/业绩说明会。
  • 将 Gangtise 电话会议纪要放入 sources/calls/,文件名应包含日期、公司名、Gangtise、电话会议纪要等信息。
  • 将这些 call sources 回写到公司页 电话会 / 调研 / 纪要、相关 query 页、最终研究底稿的 全部参考资料来源
  • 完成主要业务/产品的深描,配套官网/年报/招股书/投资者材料图片;图片或截图 source 放入 sources/company-official/sources/filings/ 或对应附件目录,并在公司页回链。
  • 完成主要业务的行业空间测算、竞争格局、市占率与可比公司财务比较,并将可复用结论同步写入对应 wiki/industries/<行业>.md;市场空间和市占率证据不足时标 待验证,不自行给出精确值。
  • 完成盈利预测时按分业务/分产品建模;创新药按分靶点/病种/疗法补市场空间,并对核心管线做峰值销售测算。
  • 若 Gangtise app 未启动或未登录,先拉起/提示登录;仍不可用时把它记录为 [blocked] Gangtise 登录态不可用

可转债研究的默认资料与写回规则:

  • rules/CONVERTIBLE_BOND_WORKFLOW.md 执行,先建立或更新 wiki/convertible-bonds/<转债名称(代码)>.md,再视需要补发行人公司页或 query 页。
  • 募集说明书、受托管理报告、评级材料、转股价/下修/回售/赎回/剩余规模公告为基础证据;不得用正股详细分析替代条款及信用核验。
  • 默认图表改为债价与转股价值/溢价、条款触发时间线及(必要时)偿付/回收情景,不套用股票报告三类默认图表。

晨会 / 周报入库

晨会和周报属于高频研究信号源,不应只做单篇摘要。默认流程见 rules/MORNING_WEEKLY_WORKFLOW.md

  1. 原文 / 轻度整理稿先入 sources/meetings/morning/sources/weekly-reports/
  2. wiki/queries/_晨会周报入库_TEMPLATE.md 提炼本次结论、信号、分歧和待验证清单。
  3. 周报中的行业信息优先回写 wiki/industries/;覆盖公司信息回写 wiki/companies/;跨行业或阶段性题材回写 wiki/themes/;组合相关内容回写 wiki/strategies/wiki/positions/
  4. 对需要周期验证的判断,写入 wiki/reviews/_周报复盘_TEMPLATE.md 或当周复盘页。
  5. 没有硬证据的信息标 待验证,不要直接写成确定结论。

Query

回答问题时:

  1. 先读相关 wiki/ 页面。
  2. 必要时回到 sources/ 做证据校验。
  3. 若答案具有复用价值,则写回 wiki/queries/ 或相关对象页。
  4. 如有新结构变化,更新 index.mdlog.md

Lint

定期健康检查:

  1. 找过期页。
  2. 找无证据结论。
  3. 找断链/孤页。
  4. 找非法状态。
  5. 找新旧判断冲突。
  6. 找该复盘未复盘对象。
  7. 找公司详细分析覆盖缺口:分业务/产品介绍、官方图片、行业空间测算、竞品财务比较、分业务/产品预测、创新药专项测算等。
  8. 结果写入 log.md,必要时单独建 wiki/reviews/ 页面;覆盖度矩阵可写入 sources/maintenance/company_coverage_matrix.md

8. 写作纪律

  • 宁可写“不确定”,不要假装确定。
  • 不静默删除旧判断;改为标记 待验证 / 已削弱 / 已失效
  • 尽量让一份新资料触达多个受影响页面,而不是只更新单页。
  • 估值、订单、电话会、公告这类证据要和具体 source 绑定。
  • 详细公司分析正文末尾必须列 全部参考资料来源,覆盖招股说明书/招股章程/prospectus(适用于 IPO/新上市/次新公司;需说明已扫描目录并用于哪些基础资料板块)、公告/年报/一季报、官网/新闻、行情/财务数据接口、Gangtise 电话会议纪要、研报/纪要/知识星球线索等;线索型或弱可信来源要标注可信度。
  • 保持结构轻量;不要为了“完整”而批量生成大量空页。

9. 当前项目定位

investment-llm-wiki/ 的准确定位是:

Karpathy 原版 LLM Wiki 模式的投研领域实例化版本

不是:

  • 单纯的微信文章解读版
  • 只有资料归档功能的 RAG 文件夹
  • 只会临时回答问题的聊天记录集合