WAYFAERER
WAYFAERER 是内置的购车MCP服务器吗 灵药.
它对你有帮助 搜索车辆列表, 解码VIN,以及 起草谈判电子邮件,同时正确处理并发性、重试、速率限制、幂等性和审计日志记录。
WAYFAERER是 客户不可知任何MCP客户端都可以与之通信。
这个名字来源于 *wayfaerer* (古语): 穿越不确定地形的旅行者。
这就是买车。
______________________________________________________________________
这是什么(不是什么)
这是:
- MCP服务器
- OTP优先
- 工作导向
- 有韧性的
- 固执己见的
- 实用价值
这不是:
- Phoenix CRUD演示
- 一个免费的刮刀
- 阻塞工具服务器
- 垃圾邮件引擎
______________________________________________________________________
执行模型
WAYFAERER使用 作业优先执行模型.
任何执行外部I/O、可能阻塞、可能失败或将从重试中受益的MCP工具调用都作为作业执行。
纯、快速、确定性的工作可能会运行 内联.
内联执行(允许)
仅当工作满足以下条件时,才允许内联执行:
- 仅CPU
- 确定性的
- 快
- 无副作用
- 没有重试次数或速率限制
示例:
- 论证验证
- 输入数据的标准化
- 哈希/幂等性密钥计算
- 根据提供的输入起草电子邮件文本
- 从ETS读取作业状态
作业执行(必填)
以下职位是必需的:
- 网络呼叫
- 爬取
- API请求
- 电子邮件发送
- 任何可重试的
- 任何价格限制
- 任何可能在外部挂起或失败的东西
经验法则:
如果你想要重试、回退或审计日志,这是一项工作。
______________________________________________________________________
运输
WAYFAERER与交通无关。
标准输入输出
- 最适合当地使用
- 最简单的集成
- 由大多数MCP客户端支持
v2:可流式传输HTTP
- 稍后添加
- 作业逻辑无需更改
______________________________________________________________________
建筑
监督树
Wayfaerer。应用 ├─ Wayfaerer。McpServer ├─ Wayfaerer。作业队列 ├─ Wayfaerer。工人主管(动态主管) ├─ Wayfaerer。限流器 Wayfaerer。商店(ETS)
作业生命周期
- MCP工具已调用
- 验证和规范化参数
- 计算幂等性密钥
- 作业已排队(或重复使用)
- 工人出生
- worker执行以下操作:
- 超时 - 重试 - 速率限制
- 存储的结果
- 客户投票
jobs.get
______________________________________________________________________
作业系统
工作状态
- 排队
- 跑步
- 完成
- 失败
- 已取消
重试
- 最多3次尝试
- 指数退避
- 抖动
- 每个作业超时(默认30秒)
幂等性
- key=哈希(工具+规范化参数+用户)
- 5分钟窗口
- 重复请求重用相同的作业或缓存结果
- 基础工作永远不会重新运行
审计日志
存储在ETS中:
- 工具名称
- args哈希
- 时间戳
- 状态转换
- 错误(如有)
- 结果散列
______________________________________________________________________
MCP工具(v1)
汽车搜索列表
搜索可用车辆。
执行: 工作
输入
{
"query": "2021 Subaru Outback",
"zip": "84057",
"radius_miles": 150,
"price_max": 22000,
"mileage_max": 90000,
"awd_required": true
}笔记:
- 使用ListingsProvider行为
- v1附带模拟提供者
- 稍后可以添加真正的API或抓取
- 结果被归一化为稳定的内部形状
______________________________________________________________________
cars.decode_vin
将VIN解码为结构化的车辆数据。
执行: 工作
输入
{ "vin": "4S4BT..." }实施:
- 使用NHTSA vPIC API
- 使品牌、型号、年份、装饰、发动机、传动系统等标准化。
______________________________________________________________________
电子邮件.draft_haggle
起草一封谈判或后续电子邮件。
执行: 内联
输入
{
"listing": { "...": "..." },
"buyer_profile": {
"name": "Adriel",
"financing": "preapproved",
"tone": "short"
}
}输出
{
"subject": "Question about the Outback listing",
"body": "Hi ..."
}笔记:
- 仅限草稿
- v1中不发送电子邮件
- 确定性和无副作用
______________________________________________________________________
jobs.get
获取作业状态和结果。
执行: 内联
______________________________________________________________________
jobs取消
尽最大努力取消排队或正在运行的作业。
执行: 内联
______________________________________________________________________
模块布局
lib/ wayfaerer/ application.ex mcp_server.ex 工具/ cars.ex email.ex jobs.ex 工作/ job_queue.ex worker.ex 工人_主管rex retry.ex rate_limiter.ex 幂等性 供应商/ 列表_供应商.ex nhtsa_vin-provider.ex 商店/ store.ex ets_store.ex
______________________________________________________________________
配置
环境变量
列表_提供者=模拟\ VIN_PROVIDER=nhtsa
可选(仅当稍后添加email.send时): SMTP_HOST\ SMTP_PORT\ SMTP_用户名\ SMTP_PASSWORD\ SMTP_FROM
默认值
- 最多工作人数:8
- 作业超时:30秒
- 重试次数:3
- 幂等性窗口:5分钟
______________________________________________________________________
安全原则
WAYFAERER故意保守。
如果稍后添加电子邮件发送:
- 域满配主义者
- 每个收件人的费率限制
- 全球硬上限
- 仅草稿模式始终可用
- 通过env-var立即禁用
没有无声的自动化。 没有垃圾邮件。
______________________________________________________________________
路线图
第1版
- stdio MCP服务器
- ETS支持的职位库
- VIN解码(实)
- 列表搜索(模拟)
- 讨价还价电子邮件起草
- jobs.set/jobs.cancel
第2版
- 真实房源提供商
- 使用TTL进行缓存
- 更强的正常化
- 受保护的电子邮件发送
第3版
- Postgres坚持
- 交叉重启重复数据删除
- 流式HTTP传输
______________________________________________________________________
哲学
WAYFAERER建立在一个简单的信念之上:
LLM工具应该耐用、可审计,并且在引擎盖下很无聊。
魔法属于边缘。 核心应该能够在崩溃、重试和错误输入中幸存下来,而不会出现戏剧性。
______________________________________________________________________
状态
早。Opinionated。正在积极发展中。
