1通道
16表
D0–D3决策门
全部决策门已布防
--:--:--
English
G1–G5 · 运营型 Agent 已交付

把增长
跑成一个 决策门守护的 个人 agent

调研、客户挖掘、CRM、邮件触达与供需撮合,构成一个运营型 Personal Agent。调研默认只读、离线可跑、无需密钥;邮件触达经 zeus 内核决策,无签核零外发。信号打分去重,线索与撮合全程留痕,没做的功能绝不假装成功。

1 个运营 agent84 个测试全绿16 张表
运营控制台1 搜索通道 · Tavily
ZEUS 决策内核 · HTTP外发在这里分级,本仓不本地分级
D2 email  HELD 423 → APPROVED → mail.send
D3 batch   HELD 423 → APPROVED → mail.send
kernel down  503 DECISION_UNAVAILABLE · fail-closed
邮件 / 搜索端口SMTP 与 Tavily,都在端口之后
tavily search  ONLINE · real search with key
smtp mail      FAIL-CLOSED · off mode 503
审计台账 · lead_events + outreach_events每个关键动作,可回放
lead.promoted  source=signal score=89 idempotent=hit
draft.sent      decision=D2 messageId=msg_1
match.created    score=90 reasons=category+price
信号 / 线索流决策门 · zeus邮件 / 搜索端口闭环完成熔断控制台为静态示意
完整闭环

一条增长线索,如何走完整条闭环

从市场调研到一对匹配好的买卖双方,共五个工位。搜索与邮件都藏在端口后面;唯一的外发动作——邮件触达——会在 zeus 决策门前挂起,直到人工审批放行。没有任何一步能绕过决策门。

  1. 01
    PRODUCT

    调研

    只读 SearchProvider 采集提及,规范化、按指纹去重,并用确定性本地打分器打分——离线闭环不需要模型、不需要密钥。

  2. 02
    CONTENT

    洞察

    need、pain、comparison 信号聚类成需求洞察,默认 pending_review,人确认后才转为 confirmed。

  3. 03D3 GATE
    LISTING

    线索挖掘

    高意图信号幂等地提升为线索,继承评分与证据,走 new→qualified→contacted→won/lost 状态机,并带跟进回访 watch。

  4. 04
    ORDER

    触达过门

    草稿提交 zeus 做 D2 决策、返回挂起;只有人工审批通过后,SMTP 邮件端口才真正发送——无签核,零外发。

  5. 05D2 GATE
    REFUND

    撮合打分

    买方需求与卖方货源按品类/数量/价格/交期/地区五维打分,得到可解释的 0–100 分,再转成联系草稿进入触达。

领域模块

一套代码,九个专注模块

每个模块只负责增长闭环上的一段,通过显式端口与其他模块通信。搜索、邮件与决策三条缝都是契约,接入新的搜索源、另一家邮件通道或 zeus 内核都不用重写领域。

RESEARCH

调研引擎

SearchProvider 端口 + 离线确定性 provider + 在线 Tavily provider;信号去重、打分、聚类成带证据链接的报告。

CRM

客户与线索

联系人、线索、校验过的状态机、跟进时间线与回访 watch——每次流转都写入 lead_events。

OUTREACH

邮件触达

campaign 与草稿,submit→zeus→approve→send 流程;退信进 suppress、回复回流跟进、打开跟踪默认关闭。

MATCH

撮合引擎

买方需求 × 卖方货源五维打分、可解释匹配,外加介绍文案生成器接入触达。

DECISION

决策端口

DecisionPort 经 zeus-client 走 HTTP,把外发交给 zeus;本仓不做本地分级,zeus 不可达即 503。

MAIL

邮件端口

MailPort + SMTP 适配器(STARTTLS 或隐式 TLS)。off 模式熔断,smtp 缺 host/from 返 422。

STRUCTURER

信号结构化

把信号分类为买方需求或卖方货源,用规则提取品类/数量/价格/MOQ/地区/邮箱——缺字段绝不硬填。

MATCHER

打分匹配

纯五维打分(品类40/数量20/价格20/交期10/地区10),每个维度给出理由。

STORAGE

双方言存储

本地 SQLite、生产 PostgreSQL;六份迁移、十六张表,由 check:migrations 强校验。

工程承诺

为 fail-closed 而设计,而不是 fail-open

Growth OS 用邮件触达真人、触碰真实市场数据。它宁可拒绝并返回精确错误,也不执行任何无法授权的事。下面四条承诺由代码和测试强制保证。

FAIL-CLOSED1

默认熔断,而非默认放行

搜索缺凭据返 422 CREDENTIAL_MISSING;zeus 不可达返 503 DECISION_UNAVAILABLE;邮件 off 模式返 503。任何无法授权的外发都不会发生。

DECISION EXTERNALIZED2

分级决策,一律外移给 zeus

本仓不做本地分级。每一封外发邮件都经 HTTP 交给决策内核——单封 D2、批量/高影响 D3——并等待人工审批。

NO FAKE SUCCESS3

不假装成功

离线搜索是明确标注的回放,绝不冒充真实 provider;无签核即零外发,由强反证测试验证。

IDEMPOTENT & AUDITED4

幂等 + 全程审计

信号按指纹去重、线索提升幂等;lead_events 与 outreach_events 记录每一次流转与发送,与 zeus decision 记录一一对应。

架构

面向端口的分层,方言只在存储层

HTTP v1 路由、组合根、领域模块与三组端口。存储同时支持 SQLite 和 PostgreSQL,方言锁在存储层,迁移文件按编号双方言配对。

L1

运行时与质量门

Node ≥22、TypeScript strict(noUncheckedIndexedAccess、exactOptionalPropertyTypes)、84 个 Vitest 用例 / 14 个文件,覆盖 G1–G5 各门。

L2

双方言存储

本地用内置 node:sqlite 零依赖,生产用 PostgreSQL;sqlite/pg 迁移按编号配对,由 check:migrations 强校验。

L3

三组端口

SearchProvider(offline/online)、DecisionPort(zeus-client)、MailPort(SMTP)。

L4

领域模块

research · crm · outreach · match · decision · mail · structurer · matcher · storage。

L5

组合根 · serve.ts

加载 .env、在装配处注入搜索 provider、DecisionPort 与 MailPort,领域模块只依赖端口。

L6

HTTP v1 · Hono

research、CRM、outreach 与 match 路由,统一错误体 { error: { code, message, retryable, details? } }。

部署
开源 · 自托管

几分钟内,在本机跑通整个 agent

无需任何 live 凭据:离线搜索回放录制好的 fixtures,假 zeus 决策链路与 G1–G5 测试证明整条闭环;默认 SQLite,上生产再换 PostgreSQL。

  • 84 个测试全绿:覆盖调研、CRM、触达与撮合,含无签核零外发强反证。
  • 默认 SQLite(内置 node:sqlite),生产 PostgreSQL,六份迁移文件双方言配对。
  • 离线搜索回放录制,不触网、不要密钥;填 GROWTH_SEARCH_API_KEY(Tavily)即切换真实搜索。
  • 邮件与 zeus 在你接通之前全部 fail-closed——SMTP 与决策内核都是显式 opt-in,绝不假装成功。
快速开始:8787
# clone + install
$ git clone https://github.com/bayernjf/growth-os.git growth-os
$ cd growth-os && npm install
# migrate the local SQLite store
$ npm run migrate:up
# start — http://127.0.0.1:8787
$ npm start

G1–G5 里程碑产物。真实搜索需 Tavily key;邮件需 SMTP 与在线的 zeus。