关于 Outbound OS
Outbound OS 是面向使用命令行或 MCP 客户端团队的 MIT 许可外联工作流系统。它在发送前执行证据检查和默认阻止的审批关卡,并支持持久化状态及合成数据干运行演示。
主要功能
- 01基于证据筛选潜在客户
- 02默认阻止的发送审批关卡
- 03邮箱验证与去重
- 04精确消息审批哈希
- 05持久化生命周期和交易状态
- 06合成数据干运行演示
适用场景
- 01评估外联是否有充分依据
- 02阻止向未验证邮箱发送
- 03跨会话恢复交易上下文
- 04在不发送邮件的情况下测试关卡
MCP 相关
可选的 ChatGPT 软件包将 start、check 和 send 意图作为 MCP 工具提供。本地 MCP 服务默认绑定到 127.0.0.1,并执行与命令行相同的发送关卡。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/recepiohq/outbound-os-mcp:0.2.1本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/recepiohq/outbound-os-mcp:0.2.1Streamable HTTP工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Outbound OS
官方 MCP 注册表: Outbound OS — 当前收录(v0.2.1)。公开 OCI 软件包:ghcr.io/recepiohq/outbound-os-mcp:0.2.1。此 MCP 服务专为本地运行而设计,没有内置身份验证;切勿将其 HTTP 端口暴露到公共互联网。
在 AI 编码客户端中使用: Docker + Claude Code / Cursor MCP 快速入门 — 仅限本地使用,无需邮箱凭据,可查看三个实际的 MCP 工具。
在浏览器中更改模拟买家、邮箱、证据、重复项和审批条件。该界面执行的门控和草稿预检模块,与 CLI 使用的模块相同;它不会发出出站 API 调用,也不会发送电子邮件。此演示中的 PASS 并不授权你发送真实消息。使用 复制场景链接,与其他开发者分享完全相同的模拟输入和判定结果;链接绝不包含真实地址或消息数据。
真实浏览器演示的截图,仅使用模拟测试数据。
大多数 AI 出站工具都在优化如何发送更多内容。Outbound OS 的设计目标是知道何时不应发送。
Start.
Check.
Send.
这些是操作人员的意图,而不是绕过命令。
每项出站操作仍必须通过买家筛选、证据检查、邮箱验证、重复项检查、事实预检、商业审查、送达率/频率控制、明确授权和精确审批哈希。
**Outbound OS 是免费的、采用 MIT 许可证的决策门控出站工作流参考实现。**它的灵感来自私有 Zoho MCP 操作中使用的工作流,但此代码库不包含该项目的任何私有营销活动数据、交易状态、凭据或 Git 历史记录。
为什么要做这个项目
典型的出站工具栈会问:我们如何发送更多内容?
Outbound OS 会从更早的问题开始:
- 该组织值得联系吗?
- 证据是否足以证明联系对方是合理的?
- 发送路径和邮箱是否已验证?
- 我们之前联系过该组织吗?
- 每项个性化声明都有依据吗?
- 当前的确切消息,还是已审核并批准的那一条吗?
- 现在发送的送达率状况是否良好?
- 是否有人类回复,将其从冷线索变成交易?
任一硬性门控失败,都意味着停止。
一条命令运行 CLI 演示 — 无需全局安装
需要 Node.js 22+ 和 npm。此命令会将采用 MIT 许可证的发行存档安装到 npm 的临时缓存(而非全局软件包目录),并执行允许发送与阻止发送的模拟对比:
npm exec --yes --package=https://github.com/RecepioHQ/outbound-os/releases/download/v0.2.1/outbound-os-0.2.1.tgz -- outbound-os demo --compare
此确切命令已在搭载 Node.js 22/npm 10 的 Windows 上测试:允许的场景返回 PASS,邮箱未验证时返回 BLOCK,blocked.transport_calls=0,且 live_sent=false。它会通过 HTTPS 下载软件包;不会连接真实邮箱或发送电子邮件。
如果未安装 Node.js,请改用在线浏览器演示。
作为可安装的 CLI 运行
从经过验证的 v0.2.1 版本进行可选的全局安装
要求:Node.js 22+ 和 npm。此操作会下载附加在官方 v0.2.1 GitHub Release中的 MIT 许可归档文件,而非 npm 注册表软件包。
npm install --global https://github.com/RecepioHQ/outbound-os/releases/download/v0.2.1/outbound-os-0.2.1.tgz
outbound-os demo --json
**验证:**已在 Windows 上测试发布的 v0.2.1 GitHub Release及其附加归档文件;安装后的 CLI 通过了合成比较。对于完整性要求较高的用途,请在安装前根据发行说明验证归档文件校验和。
**演示不会发送任何邮件。**实时发送默认关闭,且每次真实发送都需要经过批准的上下文和硬性门槛检查。
需要 Node.js 22+ 和 Git。源代码采用 MIT 许可。离线演示无需邮箱凭据、ChatGPT 账号或 API 密钥。
从源代码试用(建议首次运行时使用)
git clone https://github.com/RecepioHQ/outbound-os.git
cd outbound-os
npm ci
node bin/outbound-os.js --help
node bin/outbound-os.js demo --json
从本地软件包归档文件安装可选的全局命令
npm pack
npm install --global ./outbound-os-0.2.1.tgz
outbound-os demo --json
.tgz 是在本地根据已检出的源代码构建的,安装前应先进行审查。在 Windows 上,请使用 PowerShell 执行相同命令(或将 ./ 替换为 .\\)。归档安装方式已在 Windows 上使用隔离的 npm 前缀进行验证。本项目并未声称已发布到 npm 注册表。
**请勿将 npm install -g github:RecepioHQ/outbound-os 作为推荐安装方式:**在一台经过验证的 Windows/npm 10 安装环境中,该命令生成了一个指向 npm 临时 Git 克隆的失效联接。打包后的归档文件可避免这个已观察到的问题。
演示使用保留的示例域名、模拟邮箱和试运行传输方式:不会发送真实邮件。如需实际操作,请遵循提供商配置和安全要求。start、check 和 send 命令仍会调用现有的状态、验证和硬性门槛代码;安装 CLI 不会授予绕过这些机制的权限。
60 秒演示
比较获准的试运行与被阻止的尝试
此比较使用真实门槛评估,对合成测试样例和模拟传输进行检查。一条消息满足检查条件,另一条消息的邮箱验证结果为 unknown,因此必须在调用传输方式之前将其阻止。
# In a checkout of the latest source:
npm ci
node bin/outbound-os.js demo --compare
输出包含 allowed.send_decision=PASS、blocked.send_decision=BLOCK、来自 mailbox_verification 门槛的原因,以及 blocked.transport_calls=0。这些是合成检查,并不代表任何真实邮箱已通过验证或任何实时邮件已发送。
要求:Node.js 22+。
npm install
npm test
npm run demo
该演示完全基于合成数据,不会发起网络调用。演示内容包括:
Synthetic buyer
↓
Buyer Selection → READY
↓
Verified evidence + mailbox + dedupe + review gates
↓
Dry-run send → SIMULATED (not a live send)
↓
Synthetic human reply
↓
Cold eligibility stops
↓
Deal Mode → engaged
示例输出:
{
"buyer_state": "READY",
"send_decision": "PASS",
"transport_status": "simulated",
"live_sent": false,
"cold_eligible_after_reply": false,
"deal_stage": "engaged"
}
架构
flowchart TD
A[Operator: CLI or ChatGPT/MCP] --> B{Intent}
B -->|Start| C[Task / Skill Router]
B -->|Check| D[Mailbox Reconciliation]
B -->|Send| E[Hard Gate Engine]
C --> F[Buyer Research]
F --> G[Buyer Selection]
G --> H[(Persistent State + Event Ledger)]
D --> I[Reply / Delivery Classifier]
I --> H
I -->|Verified human reply| J[Deal Mode]
J --> H
E --> K[Evidence + Contact Route]
K --> L[Mailbox Verification]
L --> M[Dedupe]
M --> N[Factual Preflight]
N --> O[Commercial Review]
O --> P[Deliverability / Rate / Cap]
P --> Q[Authorization + Approval Hash]
Q -->|PASS| R[Transport]
R -->|default| S[Dry Run]
R -->|explicit live opt-in| T[Zoho Adapter]
模型可以建议要开展的工作,但无法覆盖其底层的机械门槛引擎。
买家筛选
公开引擎会评估四个有证据支持的维度:
- 战略契合度——该组织有可信的理由关注此事吗?
- 商业能力证据——是否有可追溯的证据表明开展外联在商业上有合理性?
- 决策渠道——是否有可信的途径联系到合适的决策者或官方渠道?
- 触发因素/时机证据——是否有理由说明此时开展外联恰逢其时?
证据会明确分类为 VERIFIED、INFERRED 或 UNKNOWN。
UNKNOWN 绝不会仅仅因为系统需要增加数量就变成正面评分。
结果为 READY、HOLD 或 SKIP,并附有可供检查的原因。
硬性门槛
默认发送链采用失败关闭策略:
| 门槛 | 失败时的行为 |
|---|---|
| 买家筛选 | HOLD / BLOCK |
| 证据质量 | BLOCK |
| 联系渠道 | BLOCK |
| 邮箱验证 | BLOCK |
| 组织/联系人去重 | BLOCK |
| 基于事实的个性化 | BLOCK |
| 发送前检查 | BLOCK |
| 商务审核 | BLOCK |
| 邮件送达健康状况 | BLOCK |
| 速率/数量上限 | BLOCK |
| 明确授权 | HOLD |
| 精确审批哈希 | BLOCK |
严格的邮箱验证仅在结果为 valid 时通过。默认情况下,invalid、catch_all、unknown 和 error 均会被拦截。
审批后更改收件人、主题、纯文本正文或 HTML,都会使审批哈希失效。
持久化状态——不是聊天记忆
运营状态保存在对话之外:
- 仅追加的 JSONL 生命周期日志;
- 通过原子写入生成的 JSON 派生状态投影;
- 组织级和联系人级去重;
- 人工回复后持久保存的 Deal Mode 状态。
默认情况下,运行时状态保存在 state/ 下,该目录已从 Git 中排除。你可以通过 OUTBOUND_OS_DATA_DIR 覆盖此设置。
新的 ChatGPT/MCP 会话可以重新加载相同状态,无需根据对话记忆重建交易。
Deal Mode
收到经过验证的人类回复后,该组织将不再符合冷启动联系条件,并会创建或更新交易记录,其中包含以下字段:
- 最新的人类回复;
- 阶段;
- 已验证事实;
- 推断出的背景信息;
- 未知事项;
- 异议;
- 定价背景;
- 承诺;
- 有依据的下一步行动。
仅凭时间流逝不会推进交易阶段。
Skills
此仓库将任务规范拆分管理,而不是依赖一个包罗万象的提示词:
buyer-research— 可追溯的证据,不虚构权限/预算/意向;cold-outreach— 已验证事实加上所有外发门槛;delivery-recovery— 永久性与临时性投递问题的处理;engaged-deal— 人类回复工作流和交易背景。
这些技能用于指导行为,不会绕过代码中的机制规则。
Zoho Mail 适配器
Outbound OS 包含一个基于 Zoho 已公开文档 API 构建的公开安全型 Zoho Mail 适配器。
它支持:
- OAuth 刷新令牌交换;
- 邮箱读取;遇到明确的暂时性读取故障时,可进行有限重试;
- 对已知联系人的人类回复、常见自动回复、永久投递失败和临时延迟进行保守的标准化处理;
- 发送经过精确审批的邮件;
- 发送变更结果不明确时,不进行盲目重试;
- 通过返回的消息 ID 在发送后进行对账。
未匹配的收件箱邮件会被忽略,而不会被提升为交易。
只有在所有必需的服务提供商配置均已就绪,并且:
OUTBOUND_OS_LIVE_SEND=1
参见 .env.example 和 docs/provider-adapters.md。
ChatGPT / MCP
可选的 chatgpt/ 软件包将相同的三种意图作为 MCP 工具公开:
startchecksend
MCP 服务默认绑定到 127.0.0.1。这是有意为之:读取邮箱会暴露私密数据,而发送邮件会创建不可撤销的外部操作。
cd chatgpt
npm install
npm start
开发时,请使用 MCP Inspector 或受支持的私有/Secure MCP Tunnel 工作流。公开部署远程 MCP 前,必须设置适当的身份验证/授权边界,才能公开这些工具。
chatgpt/plugin-template/ 包含一个可移植的 Agent Plugins 打包示例,其中的 .example MCP URL 被有意设置为不可用。
ChatGPT 的功能因套餐、工作区、地区、管理员设置和操作类型而异。不要认为仅凭 ChatGPT Plus 就能保证使用自定义的实时写入/发送操作。 本地 CLI 始终是通用备用方案。
CLI
node src/cli.js start --json
node src/cli.js check --json
node src/cli.js send --json
node src/cli.js send --json --input path/to/prepared-send-context.json
--input 可接受适用于任意意图的预先准备好的 JSON 上下文。send 并不意味着“无条件发送”:如果没有预先准备并获批的上下文,操作会默认拒绝;无论调用方是 CLI 还是 MCP,都会执行相同的硬性检查。合成演示是查看完整通过流程的最简单方式。
免费软件与外部成本
Outbound OS 本身采用 MIT 许可证,本项目不收取 SaaS 订阅费、潜在客户点数费或序列费用。
这并不意味着完整的运行环境无需成本。根据你的设置,你可能仍需支付以下费用:
- ChatGPT 或其他兼容的操作环境;
- Zoho Mail 或其他邮箱服务提供商;
- 邮箱验证服务;
- 你所连接的托管、OAuth 或其他 API 服务。
我们不保证 ChatGPT 使用量无限,也不保证回复或收入有所提升。
发布安全
发布前,项目会扫描以下内容:
- 私有项目的文件名/目录;
- 非合成电子邮件地址;
- 凭据/令牌/私钥模式;
- 包含密钥的环境文件;
- 私有/内部 URL;
- 较长的服务提供商/消息标识符;
- 本地绝对用户路径;
- 通过本地拒绝名单提供的私有营销活动名称;
- 意外纳入发布前的 Git 历史记录。
使用以下命令运行贡献者扫描:
npm run scan:release
参见 SECURITY.md。
当前范围
这是一个参考实现,不是托管式多租户 SaaS,也不是群发邮件产品。
v0.2.1 有意不提供:
- 自主后台/定时发送;
- 面向公开多用户 MCP 访问的托管 OAuth 服务;
- 内置的第三方邮箱验证服务商账户;
- 对所有可能的 DSN/自动回复格式都能正确分类的保证;
- 对回复、销售管道、收入或送达率结果的保证。
请将硬性检查视为防护措施,而非适用法律、服务提供商条款或负责任外联实践的替代品。
开发
npm test
npm run demo
npm run scan:release
npm run manifest:release
参见 CONTRIBUTING.md。
许可证
MIT。参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
