调研引擎
SearchProvider 端口 + 离线确定性 provider + 在线 Tavily provider;信号去重、打分、聚类成带证据链接的报告。
调研、客户挖掘、CRM、邮件触达与供需撮合,构成一个运营型 Personal Agent。调研默认只读、离线可跑、无需密钥;邮件触达经 zeus 内核决策,无签核零外发。信号打分去重,线索与撮合全程留痕,没做的功能绝不假装成功。
D2 email HELD 423 → APPROVED → mail.sendD3 batch HELD 423 → APPROVED → mail.sendkernel down 503 DECISION_UNAVAILABLE · fail-closedtavily search ONLINE · real search with keysmtp mail FAIL-CLOSED · off mode 503lead.promoted source=signal score=89 idempotent=hitdraft.sent decision=D2 messageId=msg_1match.created score=90 reasons=category+price从市场调研到一对匹配好的买卖双方,共五个工位。搜索与邮件都藏在端口后面;唯一的外发动作——邮件触达——会在 zeus 决策门前挂起,直到人工审批放行。没有任何一步能绕过决策门。
只读 SearchProvider 采集提及,规范化、按指纹去重,并用确定性本地打分器打分——离线闭环不需要模型、不需要密钥。
need、pain、comparison 信号聚类成需求洞察,默认 pending_review,人确认后才转为 confirmed。
高意图信号幂等地提升为线索,继承评分与证据,走 new→qualified→contacted→won/lost 状态机,并带跟进回访 watch。
草稿提交 zeus 做 D2 决策、返回挂起;只有人工审批通过后,SMTP 邮件端口才真正发送——无签核,零外发。
买方需求与卖方货源按品类/数量/价格/交期/地区五维打分,得到可解释的 0–100 分,再转成联系草稿进入触达。
每个模块只负责增长闭环上的一段,通过显式端口与其他模块通信。搜索、邮件与决策三条缝都是契约,接入新的搜索源、另一家邮件通道或 zeus 内核都不用重写领域。
SearchProvider 端口 + 离线确定性 provider + 在线 Tavily provider;信号去重、打分、聚类成带证据链接的报告。
联系人、线索、校验过的状态机、跟进时间线与回访 watch——每次流转都写入 lead_events。
campaign 与草稿,submit→zeus→approve→send 流程;退信进 suppress、回复回流跟进、打开跟踪默认关闭。
买方需求 × 卖方货源五维打分、可解释匹配,外加介绍文案生成器接入触达。
DecisionPort 经 zeus-client 走 HTTP,把外发交给 zeus;本仓不做本地分级,zeus 不可达即 503。
MailPort + SMTP 适配器(STARTTLS 或隐式 TLS)。off 模式熔断,smtp 缺 host/from 返 422。
把信号分类为买方需求或卖方货源,用规则提取品类/数量/价格/MOQ/地区/邮箱——缺字段绝不硬填。
纯五维打分(品类40/数量20/价格20/交期10/地区10),每个维度给出理由。
本地 SQLite、生产 PostgreSQL;六份迁移、十六张表,由 check:migrations 强校验。
Growth OS 用邮件触达真人、触碰真实市场数据。它宁可拒绝并返回精确错误,也不执行任何无法授权的事。下面四条承诺由代码和测试强制保证。
搜索缺凭据返 422 CREDENTIAL_MISSING;zeus 不可达返 503 DECISION_UNAVAILABLE;邮件 off 模式返 503。任何无法授权的外发都不会发生。
本仓不做本地分级。每一封外发邮件都经 HTTP 交给决策内核——单封 D2、批量/高影响 D3——并等待人工审批。
离线搜索是明确标注的回放,绝不冒充真实 provider;无签核即零外发,由强反证测试验证。
信号按指纹去重、线索提升幂等;lead_events 与 outreach_events 记录每一次流转与发送,与 zeus decision 记录一一对应。
HTTP v1 路由、组合根、领域模块与三组端口。存储同时支持 SQLite 和 PostgreSQL,方言锁在存储层,迁移文件按编号双方言配对。
Node ≥22、TypeScript strict(noUncheckedIndexedAccess、exactOptionalPropertyTypes)、84 个 Vitest 用例 / 14 个文件,覆盖 G1–G5 各门。
本地用内置 node:sqlite 零依赖,生产用 PostgreSQL;sqlite/pg 迁移按编号配对,由 check:migrations 强校验。
SearchProvider(offline/online)、DecisionPort(zeus-client)、MailPort(SMTP)。
research · crm · outreach · match · decision · mail · structurer · matcher · storage。
加载 .env、在装配处注入搜索 provider、DecisionPort 与 MailPort,领域模块只依赖端口。
research、CRM、outreach 与 match 路由,统一错误体 { error: { code, message, retryable, details? } }。
无需任何 live 凭据:离线搜索回放录制好的 fixtures,假 zeus 决策链路与 G1–G5 测试证明整条闭环;默认 SQLite,上生产再换 PostgreSQL。
# 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 startG1–G5 里程碑产物。真实搜索需 Tavily key;邮件需 SMTP 与在线的 zeus。