关于 openttt-pot
openttt-pot 是用于记录和恢复带密码学时间戳的工作流事件的 MCP 服务,面向需要在上下文压缩后保留历史的 Claude Code 工作流。它将事件连接成可验证的因果链。
主要功能
- 01Ed25519 签名时间证明
- 02按事件精确查询
- 03遍历因果事件图
- 04压缩工作流检查点
- 05验证 PoT 记录
适用场景
- 01上下文压缩后恢复步骤
- 02追踪多个 Agent 的决策
- 03验证带时间戳的事件记录
MCP 相关
它向 MCP 客户端提供 `pot_generate`、`pot_query`、`pot_graph` 和验证工具,用于记录、检索、遍历和验证 Proof-of-Time 工作流记录。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
8收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ctxId | string | 否 | draft-08 §3.3 上下文标识符(Commitment 的域分隔符)。省略时默认为固定的服务器值;MAY 为公开值。 |
| txHash | string | 否 | 交易哈希(DeFi,带 0x 前缀的十六进制值) |
| chainId | number | 否 | EVM 链 ID(DeFi,例如,Base 的 ID 为 8453) |
| eventId | string | 否 | 工作流步骤标识符(Claude Code)。例如:'refactor_auth_step1' |
| poolAddress | string | 否 | DEX 池合约地址(DeFi) |
| prevEventId | string | 否 | 上一步的 eventId——将步骤关联成因果链 |
| contentDigest | string | 否 | 此记录所证明内容的 SHA-256 摘要(小写十六进制,64 个字符)。由调用方计算,服务器永远不会看到内容本身。提供此值后,如果本地时间合成满足 draft-08 自身的要求(>=3 个独立来源、可表示的误差界限),响应除通常的 potHash 字段外,还会包含符合规范的 potRecordV08 二进制记录(十六进制编码);否则 potRecordV08Error 会说明无法生成的原因。 |
详细介绍
@helm-protocol/ttt-mcp
draft-helmprotocol-tttps 的参考实现(IETF Experimental)
时间证明(Proof-of-Time)证明——Ed25519 签名时间戳,结合多源佐证和明确的误差界。IETF draft-helmprotocol-tttps
欧盟《人工智能法案》第 50 条——AI 生成内容透明度
TTTPS 可在 AI 生成内容创建时为其提供加密时间来源证明。pot_generate 调用会将防篡改时间戳锚定到内容记录的加密哈希,不受任何嵌入式元数据影响。
与 C2PA 互补:在重新采集、转码和格式转换过程中,C2PA 元数据会被剥离。TTTPS 作为外部锚点独立保留,无需元数据链连续性即可验证;即使嵌入式标记缺失,也能重建内容来源的取证记录。
从设计上兼容 GDPR:PoT 记录不包含内容或个人标识符。每条记录都将加密哈希(SHA-256 + HMAC-SHA256)与多源时间证明绑定。任何明文内容都不会经由 Helm 服务传输或存储。
IETF 规范:draft-helmprotocol-tttps(ISE track)。联系邮箱:[email protected]。
问题:工作流失忆
每个 Claude Code 长周期工作流都会遇到同一个障碍:上下文压缩会抹除操作历史。
Agent B 不知道 Agent A 做出了什么决定。Agent A 在压缩后恢复时,也没有自身此前步骤的记录。导致重复工作、决策丢失和状态损坏。
ttt-mcp 是能在上下文压缩后继续保留的外部因果链。
每个工作流步骤都会锚定到外部服务上的加密时间戳中,该服务与 Claude 的上下文窗口在物理上彼此独立。发生压缩后,Agent 可调用 pot_query(eventId),以 O(1) 时间精确回忆步骤,并在完整因果上下文中恢复工作。
Claude workflow → [context compressed] → agents call pot_query(eventId)
→ external server returns full timeline
→ workflow resumes, zero lost state
数学保证
| 层级 | 机制 | 保证 |
|---|---|---|
| 身份 | SHA-3 eventId(256 位) | 碰撞概率为 2⁻²⁵⁶,实际可视为零 |
| 查找 | O(1) 精确检索 | 重建历史不会消耗上下文 |
| 排序 | TTTPS 因果时间戳 | 事件具有全序——可防篡改的序列证明 |
| 因果链 | prevEventId DAG | O(depth) 遍历——对于 1B-token 工作流,深度约为 100 |
| 不可否认性 | Ed25519 签名 | 对谁在何时执行操作的加密证明 |
| 韧性 | 纠删码加密分片 | BER=0.05 时恢复率 ≥97%,BER=0.02 时为 99.88%(理论值) |
| 持久性 | Redis AOF + 90 天 TTL | 服务在上下文压缩和重启后仍可运行 |
快速开始
Claude Code
claude mcp add ttt -- npx -y @helm-protocol/[email protected]
使用 API 密钥(可将免费额度提升至套餐的月度限额):
claude mcp add ttt -e TTT_API_KEY=your-key -- npx -y @helm-protocol/[email protected]
Claude Desktop
添加到 claude_desktop_config.json:
{
"mcpServers": {
"ttt": {
"command": "npx",
"args": ["-y", "@helm-protocol/[email protected]"],
"env": { "TTT_API_KEY": "your-key" }
}
}
}
Cursor
一键安装,或将上方相同的 mcpServers 块添加到 .cursor/mcp.json。
免费层级:每个 IP 每天 100 次调用,无需注册。
5 分钟测试
连接后,在 Claude 中按以下顺序操作:
步骤 1 — 为工作流步骤添加时间戳:
只需自然地告诉 Claude:
“将此步骤标记为 my-first-step” “将我刚才执行的操作记录为 refactor-auth-step1”
Claude 会自动调用 pot_generate。也可以直接调用:
pot_generate(eventId: "my-first-step")
步骤 2 — 模拟上下文压缩: 开始一个新的 Claude 会话
步骤 3 — 在新会话中恢复:
告诉 Claude:
“我在 my-first-step 中做了什么?” “恢复我最近的工作流状态”
也可以直接调用:
pot_query(eventId: "my-first-step")
→ 返回精确记录。遗忘问题就此解决。
步骤 4 — 构建因果链:
pot_generate(eventId: "step-2", prevEventId: "my-first-step")
pot_graph(eventId: "step-2", depth: 5)
→ 完整的反向链。按密码学顺序排列。
10 个工具
| 工具 | 用途 |
|---|---|
pot_generate | 使用密码学时间戳标记工作流步骤 |
pot_verify | 验证 PoT 签名 |
pot_generate_v2 | 生成 draft-11 180-octet PoT Record v2 核心(规范线缆配置文件) |
pot_verify_v2 | 验证 v2 记录;可选的 TLS 1.3 导出器绑定证明(无 TLS 时会安全失败) |
pot_verify_v08 | 验证 draft-08 §3 Payload Digest 记录 |
pot_query | 根据 eventId 进行 O(1) 精确查找——遗忘恢复核心功能 |
pot_graph | 遍历因果 DAG(反向 + 正向链) |
pot_checkpoint | 将事件汇总为压缩摘要——每约 100 个事件或长任务开始前使用 |
pot_stats | 服务统计信息和模式状态 |
pot_health | 健康检查 |
工具参数
pot_generate
使用密码学时间戳标记工作流步骤。对于 Claude Code:使用 eventId + prevEventId。对于 DeFi:使用 txHash + chainId + poolAddress。若要将证明绑定到特定内容(draft-08 §3 Payload Digest),还需提供 contentDigest。eventId、txHash 或 contentDigest 中必须提供一个。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| eventId | string | 二选一 | 工作流步骤标识符。例如:"refactor_auth_step1" |
| prevEventId | string | 否 | 上一步的 eventId——将步骤关联成因果链 |
| txHash | string | 二选一 | 交易哈希(DeFi,带 0x 前缀的十六进制值) |
| chainId | number | 否 | EVM 链 ID(DeFi) |
| poolAddress | string | 否 | DEX 池合约地址(DeFi) |
| contentDigest | string | 二选一 | 本记录所证明内容的 SHA-256 摘要(小写十六进制,64 个字符)。由调用方计算——服务不会看到内容。当本地时间合成满足 draft-08 自身要求(≥3 个独立来源、可表示的误差界限)时,响应会包含符合规范的 potRecordV08 二进制记录(十六进制);否则,potRecordV08Error 会说明原因。 |
| ctxId | string | 否 | draft-08 §3.3 上下文标识符(Commitment 域分隔符,最多 255 个 octet)。默认为固定的服务端值;可以公开。 |
pot_verify_v08
验证由 pot_generate 的 potRecordV08 字段生成的 draft-08 §3 记录:重新计算 Commitment、检查 Ed25519 签名;如果提供了 content,则检查其是否与记录的 Payload Digest 匹配。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| potRecordV08 | string | 是 | 十六进制编码的 184 或 216 字节记录 |
| ctxId | string | 否 | 必须与 pot_generate 使用的值匹配,否则验证失败 |
| issuerPubKey | string | 否 | 十六进制编码的 32 字节原始 Ed25519 公钥。默认为此服务自己的密钥。 |
| content | string | 否 | 要与记录的 Payload Digest 字段进行匹配的载荷 |
| clientId | string | 当 TTTPS_REQUIRE_REPLAY_LEDGER=1 时必填 | 用于重放键的稳定调用方身份 |
| sessionId | string | 当 TTTPS_REQUIRE_REPLAY_LEDGER=1 时必填 | 用于重放键的活动传输/会话标识符 |
当 TTTPS_REQUIRE_V08_FRESHNESS=1 时,必须将 TTTPS_V08_MAX_SKEW_NS 设为非负整数。验证器会拒绝超出 maxSkewNs + errorBoundUs 范围的记录。当 TTTPS_REQUIRE_REPLAY_LEDGER=1 时,成功验证会在 Redis 中以 90 天 TTL 原子地认领 clientId/sessionId/nonce;Redis 故障或重复认领都会被拒绝。这些标志是故障时拒绝访问的控制项。
当前的 MCP 规范线格式配置文件为 draft-11 PoT Record v2(180 字节)。pot_generate_v2 和 pot_verify_v2 实现固定核心记录,包括对字节 0-79 的 SHA-256 完整性校验,以及对字节 0-115 的 Ed25519 签发方身份验证。draft-08 仍可通过 pot_verify_v08 使用,但仅用于旧版互操作。TLS 绑定证明是单独的 64/32 字节值;TTTPS_V2_REQUIRE_BINDING=1 会在服务未通过直接 TLS 1.3 运行时故障时拒绝访问;stdio 和纯 HTTP 没有 TLS 导出器。为 HTTPS 模式配置 MCP_TLS_CERT_FILE 和 MCP_TLS_KEY_FILE。重放认领使用 (ctx_id, nonce),并采用 TTTPS_REPLAY_TTL_SECONDS(默认值为 86400)。
pot_query
查询 Proof of Time 记录。上下文压缩后,使用 eventId 进行 O(1) 精确查找。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| eventId | string | 否 | 精确步骤查找 — 碰撞概率为 2⁻²⁵⁶ |
| startTime | number | 否 | 开始时间(unix ms)。默认值:24 小时前 |
| endTime | number | 否 | 结束时间(unix ms)。默认值:现在 |
| limit | number | 否 | 返回的最大条目数。默认值:100,最大值:1000 |
pot_graph
从任意步骤遍历因果链。返回向后链(祖先)和向前链(后代)。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| eventId | string | 是 | 要从其开始遍历的步骤 |
| depth | number | 否 | 最大向后深度。默认值:10,最大值:100 |
返回值:
backwardChain— 按时间顺序排列的祖先(大型链会进行深度压缩)forwardChain— 给定eventId之后的步骤chainBroken— 检测到间隙时为true(祖先已从环形缓冲区中逐出,或链根引用了未知条目)brokenAt— 如果间隙是由服务器重启导致的内存状态清除所致,则为"server_restart";否则为发生中断处的 eventId;如果链完整,则为nullreachableDepth— 到间隙(或链根)之前成功遍历的祖先数量
因果链间隙的原因:
server_restart:服务器重启,内存中的 DAG 被清除。如果 Redis 可用且设置了REDIS_URL,启动时会从 Redis 重建 DAG,从而减少重启造成的间隙。- 环形缓冲区逐出:环形缓冲区在内存中保存最近的 10,000 个事件。超过此窗口的祖先会显示为
chainBroken: true,且brokenAt设为最早的可达 eventId。
从间隙中恢复:长任务开始前调用 pot_checkpoint,在令牌预算范围内压缩并保留链;或者使用 Redis 持久化,以便在重启后保留链。
pot_verify
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| potHash | string | 是 | 要验证的 PoT 哈希(带 0x 前缀的十六进制) |
| grgShards | string[] | 是 | 十六进制编码的加密完整性分片数组 |
| chainId | number | 是 | EVM 链 ID |
| poolAddress | string | 是 | Uniswap V4 池地址 |
pot_stats
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| period | "day" | "week" | "month" | 是 | 统计时间段 |
pot_health
无参数。
pot_checkpoint
创建工作流历史的压缩汇总检查点。
适用场景: 即将达到上下文限制、长任务开始前,或每约 100 个事件时。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| fromEventId | string | 否 | 范围起点——因果链中要包含的第一个 eventId |
| toEventId | string | 否 | 范围终点——因果链中要包含的最后一个 eventId |
| startTime | number | 否 | Unix 毫秒时间戳。默认:1 小时前 |
| endTime | number | 否 | Unix 毫秒时间戳。默认:现在 |
| maxTokens | number | 否 | 汇总输出的大致最大 token 数。默认:2000 |
返回:
checkpointId— 唯一的检查点标识符rollup— 压缩后的事件历史(自适应深度:完整/精简/最简/汇总)summary— 检查点的单行易读摘要chainIntact— 因果链是否完整无断裂nextCheckpointHint— 下一个检查点前建议处理的事件数
自适应深度压缩:
| 深度 | 格式 | ~Token 数 |
|---|---|---|
| 1–5 | 完整条目 | ~200/事件 |
| 6–20 | 精简(id+hash+ts) | ~80/事件 |
| 21–50 | 最简(id+ts) | ~30/事件 |
| 51+ | 汇总字符串 | ~10/事件 |
使用场景
1. Claude Code 工作流 — 防止遗忘
问题:一个由 20 个 Agent 组成的动态工作流,花数小时重构一个有 50 万行代码的代码库。每次上下文压缩后,Agent 都不记得已经处理过哪些内容。重复工作,状态损坏。
解决方案:每个 Agent 都使用 pot_generate(eventId, prevEventId) 为自己的步骤加上时间戳。压缩后,它会调用 pot_query(eventId),从外部服务恢复准确的操作历史——运行了什么、何时运行、按什么顺序运行。该服务位于 Claude 的上下文窗口之外;压缩不会影响它。
// Agent starts a workflow step
const pot = await client.callTool({
name: "pot_generate",
arguments: {
eventId: "refactor_auth_module_step3",
prevEventId: "refactor_auth_module_step2"
}
});
// pot.potHash — cryptographic proof this step happened at this time
// After context compression, agent recovers its history:
const history = await client.callTool({
name: "pot_query",
arguments: { eventId: "refactor_auth_module_step3" }
});
// history.local[0] — exact record: timestamp, prevEventId, potHash
// history.found: true — O(1) lookup, collision probability 2⁻²⁵⁶
// Traverse full causal chain:
const chain = await client.callTool({
name: "pot_graph",
arguments: { eventId: "refactor_auth_module_step3", depth: 20 }
});
// chain.backwardChain — all ancestor steps in chronological order
// chain.forwardChain — steps that follow this one
// chain.chainBroken — true if a gap was detected in the ancestor chain
// chain.brokenAt — "server_restart" if the server restarted and cleared
// the in-memory DAG; otherwise the eventId of the oldest
// reachable ancestor before the gap; null if chain intact
// chain.reachableDepth — how many ancestors were recovered before the gap
// Handle a server-restart gap:
if (chain.chainBroken && chain.brokenAt === "server_restart") {
// Server cleared in-memory state; ancestors before the gap are gone unless
// Redis was configured (REDIS_URL) — in that case the DAG was rebuilt on
// restart and chainBroken will be false.
// Recover by querying the most recent checkpoint or restarting from a known step.
}
长任务开始前或每约 100 个事件时——创建检查点:
// Compress workflow history before context fills up — by causal range:
const checkpoint = await client.callTool({
name: "pot_checkpoint",
arguments: {
fromEventId: "refactor_auth_module_step1",
toEventId: "refactor_auth_module_step3"
}
});
// checkpoint.checkpointId — store this; resume from it after compression
// checkpoint.rollup — depth-adaptive compressed history (10–200 tokens/event)
// checkpoint.chainIntact: true — causal chain verified unbroken
// checkpoint.nextCheckpointHint: 87 — suggested events before next checkpoint
// Or compress by time window with a token budget:
const checkpoint = await client.callTool({
name: "pot_checkpoint",
arguments: {
startTime: Date.now() - 3_600_000, // last 1 hour
maxTokens: 1500
}
});
// After context compression, restore from checkpoint instead of re-querying all events:
const history = await client.callTool({
name: "pot_query",
arguments: { eventId: checkpoint.checkpointId }
});
// Full causal context restored in a single call
结果:彻底避免重复工作。即使上下文完全重置,也能恢复完整的工作流时间线。
2. MEV Bot — 交易排序证明
问题:你的交易遭到抢先交易。你无法证明这一点——内存池时间戳因节点而异、未经签名,也不具权威性。
解决方案:每次提交前调用 pot_generate。PoT 回执使用三个独立时间源(NIST、Google、Cloudflare)进行加密签名。链上哈希可以通过单独的 Base Sepolia TTT ERC-1155 合约进行锚定。如果发生抢先交易,你就拥有一条时间戳早于攻击者区块纳入时间的记录。
const pot = await client.callTool({
name: "pot_generate",
arguments: { txHash: pendingTxHash, chainId: 8453, poolAddress: "0x..." }
});
// pot.potHash — your evidence, timestamped by NIST+Google+Cloudflare
注意: DeFi 路径(
txHash+chainId+poolAddress)需要启用了完整性分片管线的服务端构建版本。它在公开的opentttnpm 包中不可用;调用时会抛出异常。Claude Code 路径(eventId)开箱即用。
3. DEX 协议 — 抑制三明治攻击
解决方案:集成 TTTHookSimple(Uniswap V4 hook,Base Sepolia:0x8C633b05b833a476925F7d9818da6E215760F2c7)。诚信构建者可获得 turbo 模式。遭篡改的序列则会进入 full 模式(惩罚性延迟)。依靠经济机制,而非治理。
注意: 基于分片的验证(使用
grgShards调用pot_verify)需要启用了完整性分片管线的服务端构建版本;公开的opentttnpm 包中不提供此功能。
4. 对冲基金 / 自营交易台 — MiFIR 第 22c 条合规
问题:MiFIR 第 22c 条 / RTS 25 要求时间戳与 UTC 同步,精度达到微秒级。硬件 PTP 设备的成本为 $50K–$500K。
解决方案:pot_generate 生成带有不确定性界限和多源证明的 Ed25519 签名时间戳。在结构上兼容 RTS 25 审计记录格式。每笔交易只需调用一次 API。
const audit = await client.callTool({
name: "pot_generate",
arguments: { txHash: tradeHash, chainId: 8453 }
});
// audit.timestamp: high-resolution timestamp
// audit.uncertainty: ± bound (RTS 25 uncertainty field)
// audit.confidence: fraction of sources that agreed
**精度说明:**默认网络时间源(Roughtime / NTP)提供的误差界限为几毫秒。只有添加 GEO 时间源(KTSat)后,才能满足 MiFIR 第 22c 条 / RTS 25 的 ±1ms(及更严格)要求;这是路线图中的配置,并非默认部署。
结果:审计轨迹在结构上兼容。IETF 规范:draft-helmprotocol-tttps。
5. 多 Agent 协作 — 因果顺序证明
问题:当多个 AI Agent 在工作流中交互时,因果顺序对于调试和审计至关重要。Agent 日志无法验证。
解决方案:每个 Agent 都使用 pot_generate 为其操作添加时间戳。potHash 链可独立验证。pot_graph 可重建谁在何时执行了什么操作。
有何不同 — 职责不同,而非“更好”
| 工具 | 集成方式 | 可回忆的内容 | 完整性 | 热路径成本 |
|---|---|---|---|---|
| Letta (MemGPT) | 管理 Agent 循环 | 可自行编辑的语义记忆 | 无 | 每次记忆操作都需要嵌入 + 向量搜索 |
| LangGraph / LangMem | 仅限 LangGraph | 图状态 / 语义信息 | 无 | 检查点 I/O(+ 嵌入) |
| RAG / vector DB | 插件式集成 | 模糊相似性 | 无 | 每个条目都需要嵌入 + 向量搜索 |
| ttt-mcp | 2 分钟完成 MCP 改造 | 精确因果步骤(按 eventId) | Ed25519 + TTTPS 时间戳 | 签名 + 哈希 + 写入——0 次嵌入调用 |
成本差异源于结构,而非偶然。
Letta 和 Mem0 将 Agent 记忆视为语义搜索问题——每次回忆都需要调用大模型嵌入并进行向量搜索。ttt-mcp 完全绕过大模型 / 嵌入层:状态恢复通过加密哈希进行 O(1) 查找。边际成本只是通用 CPU + 存储,而非 API 令牌。
范围:Agent 为值得设检查点的步骤添加时间戳——不是每个令牌,也不是每次查询。数据量取决于决策,而非聊天总流量。
如果你需要对过去的对话进行模糊语义搜索,请使用 Letta 或 vector DB。如果你需要一个零嵌入、确定性的状态恢复层,用于能够在上下文压缩后继续运行的长周期工作流,请使用 ttt-mcp。
定价
| 套餐 | 价格 | 每月调用次数 |
|---|---|---|
| 免费 | $0 | 每个 IP 每天 100 次——无需注册 |
| Dev | $29/月 | 100K |
| Pro | $99/月 | 1M |
| Team | $299/月 | 10M + 超额部分每 1K 次 $0.01 |
| Enterprise | $999+/月 | 每月 100M 次调用 · 超额部分每 1K 次 $0.001 · SLA 99.9% |
| Platform License | 协商($2M+/年) | 协商用量上限 · 原生集成 |
订阅:
Dev $29/月 · Pro $99/月 · Team $299/月——订阅请发送邮件至 [email protected]。
Enterprise 和 Platform License:[email protected]
联系邮箱:[email protected]
配额机制——stdio 与 HTTP:
- HTTP 模式(Glama / Smithery 容器,已设置
PORT):每个 IP 的免费套餐限额(每天 100 次调用)由服务进程在本地执行。 - stdio 模式(Claude Code
npx、Claude Desktop):不设每个 IP 的计数器。工具调用通过X-TTT-API-Key转发至api.kenosian.com;配额根据你套餐的月度额度在服务端执行。未设置TTT_API_KEY时,本地回退模式运行且没有每日上限,但无法使用套餐功能(服务端 DAG 持久化、多会话因果链)。
要求
- Node.js >= 18
- 合成时间需要网络访问(通过 HTTPS 访问 time.nist.gov、time.google.com、time.cloudflare.com)
时间源层级(自动回退):
| 层级 | 来源 | 层级值 | 备注 |
|---|---|---|---|
| 1(优先) | PTP / 硬件时钟 | 0–1 | 需要本地 PTP 守护进程 |
| 2 | Roughtime / NTP(NIST、Google、Cloudflare) | 2–4 | 大多数部署的默认选项 |
| 3(离线回退) | 本地系统时钟 | 16 | RFC 5905 中表示未同步的层级值;当所有网络来源均不可达时使用 |
服务会自动回退到层级值 16;无需手动配置。每个 pot_generate 响应中的 stratum 字段会指明使用了哪个层级。
Redis 持久化(可选):
Redis 并非必需。运行时以内存 DAG 为权威数据。如果设置了 REDIS_URL,事件会写入 Redis,并设置 90 天 TTL;服务重启时会从 Redis 重建 DAG,从而减少 server_restart 链路中断。若未使用 Redis,重启时内存 DAG 会被清除。
生产环境提示
冷启动预热 — 首次启动时,BatchSigner 需要一个请求来完成初始化。请在负载均衡器的健康检查上线前,调用 pot_health 或发送一个虚拟 pot_generate 请求。否则,第一个请求的 p99 延迟可能达到约 500ms;后续请求则会稳定在 <10ms。
# Kubernetes / Docker: add to your startup script
curl -s http://your-server/pot/health > /dev/null
了解更多
- OpenTTT SDK — 底层 SDK
- IETF 草案:draft-helmprotocol-tttps — TTTPS 协议规范
- Helm Protocol — GitHub
许可证
BSL-1.1 — 可免费用于非商业用途。
商业用途(生产环境机器人、对冲基金、自营交易公司)需要许可证。
变更日期:2029-05-28 → Apache 2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。