关于 POSTFACT — Resolve Ambiguous Side Effects Before Retry
POSTFACT 用于判断结果不明确的副作用操作是否已完成,帮助自主软件在重试前决定后续步骤。它根据现有证据返回 DONE、NOT_DONE 或 UNKNOWN,不会执行底层操作。
主要功能
- 01将结果分类为 DONE、NOT_DONE 或 UNKNOWN
- 02提供重试安全性、置信度和证据
- 03接收失败背景与肯定性证据
- 04给出后续步骤建议
适用场景
- 01超时后检查 API 操作是否完成
- 02判断是否可安全重试失败的工具调用
- 03证据仍不充分时暂停并等待核实
MCP 相关
通过远程 MCP 端点提供 `resolve_outcome` 工具。工具说明建议 Agent 在副作用操作失败且结果不明后、重试前调用 POSTFACT。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://postfact-api-production.up.railway.app/mcpclaude mcp add --transport http gsterlingpress-postfact https://postfact-api-production.up.railway.app/mcp{"mcpServers":{"gsterlingpress-postfact":{"type":"http","url":"https://postfact-api-production.up.railway.app/mcp"}}}在 Cursor 中打开{"servers":{"gsterlingpress-postfact":{"type":"http","url":"https://postfact-api-production.up.railway.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"gsterlingpress-postfact":{"type":"http","url":"https://postfact-api-production.up.railway.app/mcp"}}}{"mcpServers":{"gsterlingpress-postfact":{"serverUrl":"https://postfact-api-production.up.railway.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
1| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| method | string | 否 | |
| status | integer | 否 | |
| failure | string | 否 | |
| evidence | object | 否 | |
| evidence.providerStatus | string | 否 | |
| evidence.resourceExists | boolean | 否 | |
| evidence.receiptVerified | boolean | 否 | |
| evidence.transactionStatus | string | 否 | |
| evidence.preExecutionRejection | boolean | 否 | |
| requestId | string | 否 | |
| sideEffect | boolean | 否 | |
| resourceRef | string | 否 | |
| idempotencyKey | string | 否 | |
| transactionRef | string | 否 |
详细介绍
POSTFACT
这次调用真的发生了吗?
POSTFACT 是一款轻量的模糊结果判定工具,适用于自主软件。在有副作用的 API/工具操作出现模糊失败后、重试前使用它。
生产环境:https://postfact-api-production.up.railway.app
它刻意采用严格判定:
- 只有肯定性证据能够证明操作已完成时,才判定为
DONE。 - 只有肯定性证据能够证明操作未执行时,才判定为
NOT_DONE。 - 证据不足时一律判定为
UNKNOWN。UNKNOWN是安全的默认值。
POSTFACT 不会执行底层操作、转移资金,也不会假装超时就代表失败。
REST
生产环境端点:POST https://postfact-api-production.up.railway.app/v1/resolve
输入接受方法/状态/失败信息、副作用和幂等性上下文、持久化引用,以及可选的肯定性证据。输出包括 state、retry_safe、confidence、evidence 和 next。
MCP
远程端点:POST https://postfact-api-production.up.railway.app/mcp
工具:resolve_outcome
该工具描述明确告知 Agent,应在有副作用的操作模糊失败后、重试前调用 POSTFACT。
中间件形式的契约
const outcome = await postfact.resolve(failureContext)
if (outcome.state === 'DONE') return completed
if (outcome.state === 'NOT_DONE' && outcome.retry_safe) return retry()
return verifyOrHold()
未来的 SDK 可以封装重试中间件,而无需更改线路契约。
POSTFACT + RECOVER
POSTFACT 回答我们能确定发生了什么? RECOVER 回答接下来最安全的操作是什么? 未来的重试栈可以先调用 POSTFACT,再在结果仍不确定时调用 RECOVER。
安全发现与演示
- 健康状态:
GET https://postfact-api-production.up.railway.app/health - 演示:
GET https://postfact-api-production.up.railway.app/demo - 活动:
GET https://postfact-api-production.up.railway.app/activity - 机器可读的活动数据:
GET https://postfact-api-production.up.railway.app/activity.json
GET /demo 会刻意排除在真实使用情况分析之外。
真实使用情况排行榜
GET /activity 显示永久的 FIRST 10 TRUE STRANGERS 排行榜。GET /activity.json 提供机器可读的摘要。演示/内部流量不计入其中。生产环境的持久化存储挂载在 /data。
运行
npm test
npm start
默认端口:8080。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。