前言

2026 年上半年,GitHub 上有两个项目值得技术人关注——一个用 C++20 重写了金融终端的底层架构,一个用模块化设计重新定义了 Coding Agent 的边界。

它们解决的问题完全不同,但在架构设计哲学上有一个共同点:拒绝技术栈的惯性选择,回到问题本质重新选型

本文不做功能罗列,而是从架构决策、技术选型逻辑、工程实践三个维度深度拆解这两个项目。


一、Fincept Terminal:为什么金融终端不应该用 Electron?

1.1 问题背景

Bloomberg Terminal 标准单席位年费约 $31,980(据钛媒体等多家权威媒体 2025-2026 年报道),几乎垄断了全球专业金融数据终端市场。开源社区一直在寻找替代方案,但大多数项目选择了 Web 技术栈(React + Node.js),性能和体验与原生应用有明显差距。

Fincept Terminal 走了一条完全不同的路:纯原生 C++20 + Qt6 + 嵌入式 Python

1.2 架构拆解

┌──────────────────────────────────────────────┐
│            Qt6 UI Layer (C++20)              │
│  ┌───────────┐ ┌───────────┐ ┌────────────┐ │
│  │ Charts    │ │ Tables    │ │ Node       │ │
│  │ Engine    │ │ Renderer  │ │ Editor     │ │
│  └───────────┘ └───────────┘ └────────────┘ │
├──────────────────────────────────────────────┤
│        Embedded Python 3.11 Runtime          │
│  ┌───────────┐ ┌───────────┐ ┌────────────┐ │
│  │ QuantLib  │ │ AI Agents │ │ Data       │ │
│  │ (18 模块) │ │ (37 个)   │ │ Connectors │ │
│  └───────────┘ └───────────┘ └────────────┘ │
├──────────────────────────────────────────────┤
│       Native WebSocket / REST Layer          │
│  ┌───────────┐ ┌───────────┐ ┌────────────┐ │
│  │ Kraken    │ │ Yahoo     │ │ FRED       │ │
│  │ HyperLiq  │ │ Finance   │ │ IMF/World  │ │
│  └───────────┘ └───────────┘ └────────────┘ │
└──────────────────────────────────────────────┘

1.3 关键架构决策及其背后的逻辑

决策一:C++20 而非 JavaScript/TypeScript

金融终端的核心挑战是实时数据流的低延迟渲染。WebSocket 推送的行情数据需要毫秒级更新 K 线图和深度图。

  • Electron 的渲染路径:Node.js → IPC → Chromium → GPU,每帧至少多 2-3 层抽象
  • C++20 + Qt6 的渲染路径:原生事件循环 → Qt Quick/Widgets → GPU,直接调用系统图形栈

这不是"快一点"的问题,而是在高频数据场景下能否稳定 60fps 的问题。

决策二:嵌入式 Python 而非纯 C++

金融计算(DCF 模型、VaR、期权定价)用 Python 生态(NumPy、SciPy、QuantLib-Python)远比从零写 C++ 高效。但 Python 的 GIL 和启动时间是硬伤。

Fincept Terminal 的解法:在独立 Python 进程中执行计算,通过 IPC 与 C++ 主进程通信

// 伪代码示意
auto result = pythonRuntime->exec(
    "from quantlib.pricing import black_scholes\n"
    "result = black_scholes(S=100, K=105, T=0.5, r=0.05, sigma=0.2)\n"
);

好处:

  • 金融计算不阻塞 UI 线程
  • Python 崩溃不影响主进程稳定性
  • 可以热更新 Python 脚本,无需重新编译 C++ 代码

决策三:单二进制分发

用户下载一个文件就能运行,不需要安装 Python、配置虚拟环境、处理依赖冲突。这对金融从业者(非程序员群体)至关重要。

实现方式:将 Python 解释器和所有依赖打包进最终二进制,运行时解压到临时目录。

1.4 功能矩阵

模块 具体能力
多资产分析 DCF 模型、组合优化、风险指标(VaR、Sharpe)、衍生品定价
AI Agent 37 个投资分析 Agent(Buffett、Graham、Lynch、Marks 等框架)
数据源 100+ 连接器(Yahoo Finance、FRED、IMF、AkShare 等)
实时交易 16 家券商直连(IBKR、Alpaca、Zerodha、Saxo 等)
量化分析 QuantLib 18 模块(定价、风险、随机过程、波动率、固收)
另类数据 Adanos 市场情绪(Reddit/X/Polymarket 舆情分析)

1.5 编译环境要求

CMake:     3.27.7
Qt:        6.8.3(精确版本绑定)
Python:    3.11.9
编译器:     GCC 12.3 / MSVC 19.38 / Apple Clang 15.0

⚠️ Qt 版本必须精确匹配 6.8.3,不兼容 6.5/6.6/6.8 其他小版本。本地测试可通过 -DFINCEPT_ALLOW_QT_DRIFT=ON 绕过,但正式构建不允许。

1.6 许可证

双授权模式:AGPL-3.0(开源)+ 商业授权。

  • ✅ 免费:个人学习、学术研究、开源贡献
  • ❌ 需商业授权:任何商业用途、SaaS、白标、内部使用
  • ⚠️ 未授权商业使用罚金起步 $50,000/组织/年(README 原文:“liquidated damages starting at USD 50,000 per organization per year”)

这不是"伪开源"——AGPL-3.0 本身允许自由使用,但商业场景需要额外授权,这是 FinTech 开源项目的常见商业模式。


二、pi:为什么 Coding Agent 需要"自我扩展"?

2.1 问题背景

2025-2026 年,AI 编程工具爆发:Cursor、Windsurf、Claude Code、Codex CLI……但它们的核心逻辑几乎一样——你写 prompt,AI 写代码,你 review,循环往复

Agent 的能力边界是固定的:读文件、写代码、跑命令。遇到它没有工具覆盖的任务,就只能手动操作。

pi 的设计哲学不同。它的 repo description 直接写了:“self extensible coding agent”

2.2 架构拆解

pi 采用模块化四层架构,每个包独立发布到 npm:

@earendil-works/pi-coding-agent    ← 交互式 Coding Agent CLI
@earendil-works/pi-agent-core      ← Agent 运行时(工具调用 + 状态管理)
@earendil-works/pi-ai              ← 统一多 Provider LLM API
@earendil-works/pi-tui             ← 终端 UI 库(差分渲染)

各层职责:

包名 职责 关键特性
pi-ai LLM 调用抽象层 统一 OpenAI、Anthropic、Google 等 Provider API
pi-agent-core Agent 运行时 工具调度、状态管理、扩展机制
pi-coding-agent 用户交互层 终端 CLI、会话管理、上下文压缩
pi-tui 终端渲染 差分渲染,避免全屏刷新

2.3 核心差异:自我扩展机制

官方文档的描述是:

“Pi is a minimal terminal coding harness. It is designed to stay small at the core while being extended through TypeScript extensions, skills, prompt templates, themes, and pi packages.”

关键词:stay small at the core。pi 的核心故意做得很小,能力通过扩展机制动态增长。

扩展方式有五种:

  1. TypeScript Extensions:自定义工具、命令、事件处理
  2. Skills:按需加载的能力模块
  3. Prompt Templates:可复用的 prompt 模板,通过斜杠命令触发
  4. Themes:终端主题定制
  5. Pi Packages:打包分发扩展、技能、模板和主题

这意味着什么?当 Agent 遇到它没有内置工具支持的任务时,它可以通过扩展机制创建新的能力,而不是说"我做不到"。

2.4 依赖安全策略:值得所有开源项目学习

xz-utils 后门事件之后,供应链安全不再是可选项。pi 在这方面做了系统性防护:

安全措施清单:
├── npm install --ignore-scripts    ← 禁止安装时执行生命周期脚本
├── save-exact=true                 ← 所有依赖精确版本锁定
├── min-release-age=2               ← 拒绝发布 2 天内的依赖版本
├── package-lock.json 为真相源      ← Pre-commit hook 阻止意外修改
├── npm audit 定时扫描              ← GitHub Actions 定期执行
├── Shrinkwrap 生命周期脚本白名单   ← 新增脚本依赖需人工审核
└── 发布前独立环境冒烟测试          ← npm run release:local

min-release-age=2 这条特别值得注意——如果某个依赖被投毒后立即发布恶意版本,pi 不会在 2 天内引入,给了社区发现和报告的时间窗口。

2.5 数据共享倡议

pi 做了一件在 Coding Agent 领域很少见的事:鼓励用户公开分享编程会话数据

通过 pi-share-hf 工具,用户可以一键将会话上传到 Hugging Face 数据集。项目维护者(GitHub: badlogic)自己就公开了大量 pi-mono 项目的工作会话(badlogicgames/pi-mono)。

为什么这很重要?

当前 Coding Agent 改进依赖:
├── 厂商内部测试(场景有限)
├── Benchmark(脱离真实场景)
└── 用户反馈(碎片化)

pi 的做法:
├── 公开真实编程会话(含完整工具调用链)
├── 包含错误、重试、修复的完整过程
├── 上传到 Hugging Face 开放数据集
└── 所有人可用,推动领域整体进步

这不是 KPI 驱动的"开源做秀",而是真正有工程价值的数据共享。

2.6 快速上手

# 安装
npm install -g --ignore-scripts @earendil-works/pi-coding-agent

# 或者用官方安装脚本
curl -fsSL https://pi.dev/install.sh | sh

# 进入项目目录运行
pi

# 首次使用需要认证
# /login 订阅制 Provider,或设置环境变量
export ANTHROPIC_API_KEY=your_key
pi

三、架构对比:两个项目的共同启示

维度 Fincept Terminal pi
语言 C++20 + Python TypeScript
架构模式 分层(UI / 计算 / 数据) 模块化四包
核心理念 原生性能 + 生态兼容 小核心 + 可扩展
分发方式 单二进制 npm 包
安全策略 Python 进程隔离 依赖供应链防护
许可证 AGPL-3.0 + 商业双授权 MIT

共同启示:

  1. 技术选型回归问题本质:Fincept 没有跟风用 Electron,pi 没有做单体大应用。两者都选择了最适合问题域的技术方案,而非最流行的。

  2. 模块化是长期维护的关键:Fincept 的 C++/Python 分离让金融计算可以独立迭代;pi 的四包架构让每个组件可以独立升级。

  3. 安全意识前置:Fincept 用进程隔离保护主进程;pi 用严格的依赖策略防止供应链攻击。两者都在架构层面解决了安全问题,而非事后补丁。


四、如何选择?

选 Fincept Terminal 如果你:

  • 需要本地部署的金融分析环境
  • 关心数据隐私(本地 LLM 支持)
  • 量化研究员 / 金融科技开发者
  • 想学习 C++20 + Qt6 桌面应用架构

选 pi 如果你:

  • 想深入理解 Agent 架构设计
  • 需要多模型对比(统一 API 层)
  • 关注开源供应链安全实践
  • 对 AI 辅助编程有更高期望(能力可扩展)

五、项目地址

项目 地址
Fincept Terminal https://github.com/Fincept-Corporation/FinceptTerminal
pi https://github.com/earendil-works/pi
pi 官网 https://pi.dev
pi 文档 https://pi.dev/docs/latest
pi 会话数据集 https://huggingface.co/datasets/badlogicgames/pi-mono

结语

这两个项目代表了 2026 年开源项目的两种典型路径:

  • Fincept Terminal:在传统领域(金融终端)用正确的技术选型(C++20)挑战行业垄断者
  • pi:在新兴领域(AI Agent)用架构创新(自我扩展)建立差异化

它们的共同点是:不跟风,回到问题本身,用工程思维做技术决策

这比任何具体的代码技巧都值得学习。


FinceptTerminal 深度拆解:23k Star 的开源金融终端,到底做对了什么?

微软官方出手!dotnet/skills 项目深度解读:.NET 开发者终于有了自己的 AI 技能库

Google 官方出手了!Chrome DevTools MCP 让 AI Agent 直接操控浏览器,前端调试迎来范式革命

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐