Rainnystone/SOFA
GitHub: Rainnystone/SOFA
SOFA 是一个 agent 辅助的开源 OSINT 研究框架,用于对科技股和科技行业进行结构化的供应链瓶颈分析与证据驱动的投资研究。
Stars: 1 | Forks: 0
# SOFA
**[中文](README_CN.md) | [English](README.md)**

SOFA 是 **serenitive osint framework analyzor**:一个开源的、agent 辅助的 OSINT 研究框架,专注于科技股和科技行业。
它专为具备评估技术和商业论点能力、但不需要“黑盒”选股器的受过专业教育的读者而构建。SOFA 帮助 agent 绘制供应链依赖图、测试瓶颈声明、将技术约束转化为财务影响,并撰写带有审计轨迹的、易读的投资研究报告。
SOFA 旨在将广泛的技术投资问题转化为四个具体的研究问题:
| 问题 | SOFA 要求研究展示的内容 |
|----------|----------------------------------------|
| 瓶颈在哪里? | 可能产生影响的供应链层级、物理依赖、客户认证路径或监管瓶颈。 |
| 证据有多强? | 每个重要论断背后的来源质量、时效性、声明状态以及未解决的空白。 |
| 它能转化为财务现实吗? | 营收桥梁、利润率路径、现金流影响、稀释风险、估值背景以及催化剂时钟。 |
| 什么会打破这一论点? | 最强的反驳、失效触发条件、替代供应商、技术替代方案以及时机风险。 |
SOFA 不是一种自动交易工具,也不是一个将股票代码转化为买入或卖出指令的“黑盒”。它支持两项“剥洋葱”式的研究工作:
| 模式 | 问题 | SOFA 交付物 |
|------|----------|------------------|
| Ticker Dive(个股深挖) | 这家公司是 AI 或硬科技供应链中真正的瓶颈吗? | 证据链、财务桥梁、红队挑战、失效条件、观察协议以及最终研究报告 |
| Sector Hunt(行业搜寻) | 一个行业中的哪些部分最有可能包含未被充分关注的瓶颈公司? | 依赖图、瓶颈评分矩阵、排名候选队列以及下一次深挖的建议 |
| Sector-to-Ultra(行业到深度) | 我们如何将 Sector Hunt 的推荐列表转化为单只个股的深度研究工作? | 为更严格的 Ticker Dive 工作流提供输入的 Ultra Dive 数据包 |
## Serenity 是谁,为什么从这开始?
Serenity / [@aleabitoreddit](https://x.com/aleabitoreddit) 是一位公众投资者和 AI / 半导体供应链研究领域的人士,以其在 AI 基础设施、光互连、CPO、材料和物理瓶颈方面的工作而闻名。其中有价值的部分并不是某一次具体的公开预测,而是可以被观察到的研究脉络:从真实的下游需求出发,沿着技术栈向上游溯源,依次经过芯片、光学器件、激光器、基板、外延片、原材料和专用工具,然后探究是哪个微小的物理节点可能会阻碍或拖延更大规模的产业建设。
SOFA 的灵感正是来源于这种公开的研究模式。它不隶属于 Serenity,也不认可任何自我报告的回报、持仓或社交媒体上的叙事。本代码库专注于方法论:如何将瓶颈发现转化为一个以证据为先、可证伪、可审计的研究过程,并且能够由现代 agent 协助执行。
## SOFA 能做什么?
- **分解科技行业。** 从终端需求出发,逆向推导至材料、设备、认证、客户和监管限制。
- **将故事转化为证据。** 每个重要的论断都必须先落入证据账本中,然后才能用于支撑某个论点。
- **将发现与确信度分离。** Sector Hunt 仅生成依赖图和排好序的候选队列;在进行任何带有操作级别定论的语言之前,必须进行后续的 Ticker Dive 或 Ultra Dive。
- **管理前沿生命周期。** 前沿主题(frontier)可以通过确定性的检查机制进行添加、退役、延续和重新激活,而不是仅仅作为一个被冻结的 Stage 1 列表停留在那里。
- **保持研究轨迹可见。** 每个工作区都会存储 `research_workflow.md`、`evidence_ledger.md`、`claim_ledger.md`、`search_log.md`、关卡检查、方法卡记录以及最终报告。
- **为决策者而写。** 报告以结论、关键证据、最强反驳和下一步行动开头,然后将审计轨迹移至正文和附录中。
## 为什么是一个框架,而不仅仅是一个技能(Skill)?
许多 agent 技能试图将一整套投资风格压缩到一个可调用的 prompt 中。这确实很方便,但它会产生可预见的失败模式:当上下文变长时,agent 可能会跳过步骤,将搜索与论点形成混为一谈,过度信任薄弱的证据,忘记已经检查过的内容,或者在没有可见审计轨迹的情况下生成一份精美的报告。
因此,SOFA 被构建为一个框架。用户仍然从一个统一的入口开始,但工作被分配到一个受编排的系统中:
| 层级 | 它的功能 | 为什么重要 |
|-------|--------------|----------------|
| Router(路由) | 根据用户的研究意图选择 Ticker Dive、Sector Hunt 或 Sector-to-Ultra。 | 工作流会根据用户是在研究单一公司还是在绘制整个行业的图谱而发生变化。 |
| Mode guides(模式指南) | 定义每种模式的逐步研究循环。 | Agent 不会随意安排构建框架、映射、挑战、财务桥梁、红队和撰写报告的顺序。 |
| Private method cards(私有方法卡) | 为子 agent 提供关于供应链映射、客户发现、财务桥梁和红队工作的具体方法。 | 用户不需要直接调用消耗大量上下文的方法;主工作流控制着何时以及为何使用每种方法。 |
| Deterministic gates(确定性关卡) | 运行用于工作区设置、阶段检查、循环执行和档案验证的脚本。 | 重要的检查由代码处理,而不是依赖 agent 的记忆或确信度。 |
| Durable workspace(持久化工作区) | 将证据、声明、搜索、工作输出、评分表和报告写入文件。 | 研究可以被随时复查、恢复、挑战并在日后改进。 |
| Host adapters(宿主适配器) | 将相同的核心工作流映射到 Codex、Claude Code 和通用 agent 环境。 | SOFA 不绑定于特定供应商的工具名称或某一个运行时。 |
## Agent 循环如何工作
SOFA 借鉴了情报循环:定向、收集、处理、分析、传播和反馈。在投资研究的语境下,这变成了一个不断推动证据前沿向前发展的循环,而不是仅仅从第一印象直接跳到最终论点。
| 循环步骤 | 在 SOFA 中 |
|-----------|---------|
| 定向(Direction) | 明确研究问题,选择 Ticker Dive 或 Sector Hunt,将需求从终端市场分解到上游约束。 |
| 收集(Collection) | 搜索财务报告、公司公告、技术文档、客户痕迹、市场数据以及可信的反面证据。 |
| 处理(Processing) | 对证据进行评级,将已确认的事实与推断出的声明区分开来,并更新账本。 |
| 分析(Analysis) | 构建依赖阶梯、瓶颈图谱、财务桥梁和初步论点。 |
| 挑战(Challenge) | 在允许使用确信度语言之前,运行 Challenge Probe、Coverage Challenge 和正式的红队测试。 |
| 传播(Dissemination) | 生成面向读者的报告和观察协议,同时保留审计轨迹。 |
| 反馈(Feedback) | 决定是继续、转向、分叉前沿、生成 Ultra Dive 数据包,还是因为缺少主要证据而停止。 |
这就是核心的设计差异:SOFA 并非只是在一个长 prompt 中要求 agent “更努力地思考”。它为 agent 提供了一个循环、角色、文件、关卡和停止规则。
## 它是为谁准备的?
- 从事科技成长股、半导体、AI 基础设施、光通信和先进制造业研究的投资者和研究人员。
- 了解技术和商业逻辑、但希望由 agent 来处理研究工作流和文件规范的非程序员专业读者。
- 希望在 agent 辅助下进行深度研究,但又不想接受“黑盒”答案的用户。
- 需要标准化的 OSINT 证据质量、反驳处理和报告轨迹的研究团队。
## 安装与开始
SOFA 是一个框架代码库。最基本的使用不需要搜索 API 或财务数据 API。
使用其 GitHub URL 克隆代码库,然后进入该仓库:
```
cd SOFA
python scripts/capability_check.py
```
在 Codex、Claude Code 或其他宿主 agent 中,将 agent 指向此入口文件:
```
skills/sofa-analyze/SKILL.md
```
然后初始化一个研究工作区:
```
python scripts/init_workspace.py "SIVE" "./workspace/sive" --mode ticker
python scripts/init_workspace.py "CPO laser supply-chain bottlenecks" "./workspace/cpo-laser" --mode sector
```
请参阅 [docs/installation.md](docs/installation.md) 了解完整的设置路径。请参阅 [docs/adapters/](docs/adapters/) 了解针对特定宿主的映射。
## 推荐的能力,非硬性依赖
SOFA 会检测并推荐搜索和财务数据能力。它从不会在未经批准的情况下静默安装工具或写入 API 密钥。
| 能力 | 推荐顺序 |
|------------|-------------------|
| 通用搜索 | AnySearch 技能 -> Exa MCP 服务器 -> Tavily 技能 / CLI -> 宿主 agent 内置功能 |
| 中国财务数据 | 首先阅读 Wind AIFin Market 技能设置指南 |
| 英语 / 全球公开市场数据 | `yfinance` 可用于研究快照;财务报告、交易所发布和公司公告依然是权威来源 |
详情请参阅 [docs/capability-setup.md](docs/capability-setup.md)。
## 如何使用它
给你的宿主 agent 一个明确的研究目标,并要求它使用 SOFA Analyze:
```
Use SOFA Analyze for a Ticker Dive on AXTI. Focus on whether InP substrate demand can translate into revenue, margin, catalysts, and invalidation conditions.
```
```
Use SOFA Analyze for a Sector Hunt on advanced optical interconnect bottlenecks. Produce the dependency ladder, chokepoint matrix, and ranked queue only.
```
```
Use the Sector-to-Ultra guide to convert the top ranked Sector Hunt candidates into Ultra Dive packets, then ask me which candidate to deep dive.
```
## 最终报告是什么样的?
SOFA 的报告不应读起来像内部的草稿笔记。推荐的报告结构如下:
1. **执行摘要**:一句话结论、当前的操作级别或研究状态、关键证据以及最强反驳。
2. **为什么这可能很重要**:为什么该节点可能是一个瓶颈,以及为什么市场可能低估或误解了它。
3. **证据图谱**:证据评级、来源、时效性以及未解决的声明。
4. **财务桥梁**:需求如何转化为营收、利润率、现金流、估值和稀释风险。
5. **红队结果**:最强烈的反对意见、SOFA 的回应以及未解决的问题。
6. **观察协议**:未来的财务报告、客户认证、产能增加、监管事件、定价信号和失效触发条件。
请参阅 [docs/report-guide.md](docs/report-guide.md)。
## 研究边界
SOFA 用于支持研究。它不是投资建议。它不进行交易,不替代判断,不承诺回报,不将社交媒体线索视为事实,也不允许 Sector Hunt 的输出直接成为买入或卖出的结论。任何操作级别的语言都需要在完成 Ticker Dive 或 Ultra Dive 之后,这其中包括财务桥梁、正式的红队测试、催化剂时钟和失效条件。
## 深入文档
- [安装](docs/installation.md)
- [能力设置](docs/capability-setup.md)
- [报告指南](docs/report-guide.md)
- [架构](docs/architecture.md)
- [代码映射](docs/codemap.md)
- [Codex 适配器](docs/adapters/codex.md)
- [Claude Code 适配器](docs/adapters/claude-code.md)
- [通用 agent 适配器](docs/adapters/generic-agent.md)
- [许可证](LICENSE)
标签:ESC4, OSINT, 供应链分析, 投资研究, 自动化报告, 逆向工具, 金融分析