zjchina.net

Drogon · ROS 2 · 独立开发笔记

ENGINEERING NOTES/工程笔记

逼出 Agent:一个四个部门、一条规则链的量化团队

2026 年 9 月 29 日。tidewatch(潮汐)已经能跑了:数据底座、四个分析 Agent、决策层、纸面盘、飞书推送、本地仪表盘,一整个自编排多 Agent 团队决策的闭环。这篇文章讲两件事:我们那个「四个部门」的团队设计,以及它和市面上量化软件区别在哪。

一、tidewatch 现在能干什么

先给个准确的「运行态」,不吹:

  • 技术栈:纯 Rust 单 workspace,tw-core / tw-datafeed / tw-indicator / tw-agent / tw-decision / tw-server / tw-cli / tw-broker 一串 crate,依赖方向单向向内。
  • 数据:A 股个股 + ETF,新浪/东财双公开源,归一化落 SQLite 本地缓存,UNIQUE(code,date) 幂等。
  • 决策:每交易日盘后,四个 Agent 在同一份不可变 MarketSnapshot 上各自产出 Opinion,交给唯一一个 decide() 函数裁决出 Decision(方向 + 命中规则 + 条件计划)。
  • 执行:M5 纸面盘(账本 + 撮合 + 沪深 300 基准)已完成;M6 交易执行层走「Human Broker Gateway」——Agent 产可执行 Order 指令推飞书卡片,人照单执行,回填真实成交。
  • 触达:飞书机器人盘后推摘要(观点 + 理由码 + 权益曲线),本机 Dioxus 仪表盘挂 127.0.0.1:8910 复盘。

一句话:它在产出「为什么下这单」的可追踪链条,而不是一张 k 线图。

二、四个部门:把「分析」拆成四方视角

tidewatch 的核心不是单一神仙模型,而是四个各司其职的 Agent,像一个投研团队拆成四个部门,每个只看自己的方向:

部门角色驱动的脑子
技术面 Technical均线、MACD、RSI、量价,判断趋势与信号LLM + 白名单只读指标
资金面 Fund主力净流入、换手、量价配合,判断资金态度规则为主,LLM 解释
公告面 News公告/新闻文本,摘要 + 情绪打分LLM
风控 Risk波动率、回撤、持仓亏损、数据陈旧纯规则,永不碰 LLM

四个部门各自输出一个 Opinion:看多/中性/看空/规避四档立场、置信度、以及枚举的理由码(禁止用自由文本充当理由)、指向具体证据的指针。

风控这一格是刻意的「不变量」:它永不持多偏见、永不投 Bullish,触发 Avoid 时一票否决——任何开关都关不掉这条线。让端水的人不参与看多,是这套设计里最重要的一句。

三、分层设计理念:依赖单向向内

团队怎么组织,比团队里有谁更重要。tidewatch 有两层「分层」:

第一层是代码依赖,锁死单向:

cli/server → agent/decision → indicator/datafeed → core

禁止反向依赖;tw-core 永不出现网络、LLM、数据库类型。这意味着「决策用的契约」和「怎么联网取数」永远拆得开,换数据源、换模型、换供应商,都不碰契约。

第二层是协作分层(设计 §14.2,在 M7 串行聚合之上补的对齐与复盘):

L0 感知层   datafeed → indicator → MarketSnapshot(不可变)
L1 分析层   四 Agent → Opinion
L2 对齐层   TeamDeliberation → Consensus(共识/分歧/少数派/僵局)
L3 决策层   decide() 方向裁决 + TeamLead 规模精调
L4 执行层   broker + 工程护栏 + 账户重放
L5 复盘层   AuditAgent → AgentReportCard → 校准权重回写

每一层职责单一,新层只加类型(tw-core 纯 DTO),编排落在对应 facade。

四、和别的量化软件,区别在哪

这是最容易问的一句,我们把它想清楚了:

1. Agent 只产「观点」,不产「方向」。 市面上大多数「AI 炒股」是让 LLM 直接说买/卖/持有——黑盒,不可审计。tidewatch 里 Agent 顶多表达看多看空;真正的方向裁决只有一个纯函数 decide(),用显式优先级表:

风控拦截 > 风险规避 > 趋势跟随 > 资金面确认 > 技术面信号

这是规则,不是 if 顺序的隐式糊弄。LLM 永远不产方向——方向词表(看多/中性/看空/规避)只允许出现在 tw-decision 一个 crate 里。

2. 它不做回测引擎。 我们明确不做事件驱动回测、不做全市场扫描。它的「历史回放」是重放缓存数据、对比分歧,不是拟合一条收益曲线。校准靠 Brier 分——权力由实测可信度兑换,校准差的 Agent 在 decide() 里权重自动打折,而不是靠「这模型看起来挺强」。

3. 全自动,但护栏是工程级的。 定位翻案过一次:从「人按执行」改成「全自动团队决策」——正因为上班没时间看盘,才把决策权交给团队。但兜底的是确定性预检:资金限额、单日最大亏损、权益回撤熔断、单票集中度上限,全是纯规则、永不 LLM,触发即冻结转人工。

4. append-only,可溯源。 orders / fills / account_snapshots 只增不改,和观点、理由码 join 起来,任何一笔都能回放「为什么下这单、当时谁投了什么、命中了哪条规则」。

五、它和 zjchina 的关系

tidewatch 是 zjchina 框架「多 Agent 与真人协作」路线的先行试验田:独立仓库、独立信任域,交易账户与网站物理隔离。它跑通的三样东西——Opinion/Order 双对象、typed 工具白名单、校准度换权重——将来就是 zjchina L3(MCP/Agent 契约层)的标准契约,供 5.1 导购 Agent、5.3 巡检 Agent 原样复用。

还有一个闭环藏在这里:tidewatch 那 5 万根蜡烛的 120 FPS 渲染,正是 zjchina-render 自绘内核的第一个真实消费者。一个量化平台,逼出了一个自绘引擎——这大概就是「用真实项目倒逼框架成熟」。

别的量化软件问「怎么算得准」,我们问「怎么让一队 Agent 可追责地替你拍板」。

← 返回首页全部文章