关于 meld
meld 是可自托管的临时上下文桥接服务,让参与者通过私密链接交换说明和回复。链接持有者均可读取在线内容;内容仅保存在内存中且不经 AI 处理,因此不适合存放秘密。
主要功能
- 01创建附带交流说明的桥接
- 02通过链接读取说明和回复
- 03在同一桥接中追加回复
- 04闲置后自动过期
- 05仅在内存中保存在线状态
适用场景
- 01为设计评审分享工作上下文
- 02无需反复粘贴上下文即可交换回复
- 03在自托管服务上开展短期讨论
MCP 相关
README 表明 MCP 支持尚未实现,未描述 MCP 接口。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://meld.mergeinc.workers.dev/mcpclaude mcp add --transport http lemonaide152-meld https://meld.mergeinc.workers.dev/mcp{"mcpServers":{"lemonaide152-meld":{"type":"http","url":"https://meld.mergeinc.workers.dev/mcp"}}}在 Cursor 中打开{"servers":{"lemonaide152-meld":{"type":"http","url":"https://meld.mergeinc.workers.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"lemonaide152-meld":{"type":"http","url":"https://meld.mergeinc.workers.dev/mcp"}}}{"mcpServers":{"lemonaide152-meld":{"serverUrl":"https://meld.mergeinc.workers.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://meld.mergeinc.workers.dev/mcphttps://meld.mergeinc.workers.dev工具
3| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| for | string | 否 | 可选,供较旧的客户端使用。默认值为 context。 |
| pin | string | 否 | 可选 PIN,另一方必须提供该 PIN 才能回复。 |
| learn | boolean | 否 | JSON 布尔值 true 表示选择加入试点回复。字符串和整数 1 均无效。 |
| context | string | 是 | 供另一方阅读的工作上下文。请勿包含机密信息、凭据或受监管数据。 |
| not_for | string | 否 | 可选,供较旧的客户端使用。默认值为 context。 |
详细介绍
meld — 临时上下文桥接
别见面。Meld。
将工作上下文放到一个能力 URL 上。双方都不必粘贴内容块。A 方创建链接。一条备注说明这次交流的目的和非目的。A 方私下将该 URL 发给 B 方。对话就在该链接上进行。
交流进行期间,桥接保持开放。在收到首条回复之前,链接自创建起保持开放 36 小时。收到首条回复后,计时器设为 24 小时。之后的每条回复都会保留,并将这 24 小时重新计时。开始收到回复后,存续时间没有上限。读取不会启动计时器,也不会重置计时器。
时间窗口结束后,主机将解散 meld。解散会删除桥接。下次请求该代码时会返回 404。从未存在过的代码会返回 404。已过期的代码会返回 404。响应完全相同。
存续期间主机可读取。任何拥有链接的人都能读取。**请勿用于机密信息。**无需账户。不保存明文存档。
**过程中没有 AI。**桥接存续期间,主机会保存你放入其中的内容。主机不会总结交流内容,不会改写内容,不会编造回复,也不会对其运行模型。
自托管是推荐方式。此仓库包含服务端、Caddy 和 Docker 配置。
开始使用
git clone https://github.com/lemonaide152/meld.git && cd meld && docker build -t meld . && docker run --rm -p 8080:8080 -e MELD_PUBLIC_URL=http://127.0.0.1:8080 meld
然后:
curl -s -X POST http://127.0.0.1:8080/api/melds \
-H "Content-Type: application/json" \
-d '{"note":"For a design review. Not for passwords or customer data."}'
A 方私下将 url 发给 B 方。B 方通过 POST /api/melds/{code}/resolve 回复。在同一个链接上继续交流。
Compose(本地)
cp .env.example .env
docker compose up -d --build
同一 API 可通过 http://127.0.0.1:8080 访问。
Compose + Caddy(公共 TLS)
在 .env 中设置 MELD_SITE 和 MELD_PUBLIC_URL,将 DNS 指向该机器,并开放 80/443 端口:
docker compose --profile tls up -d --build
Python(不使用 Docker)
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
python server.py
发布镜像
docker build -t ghcr.io/lemonaide152/meld:latest .
docker login ghcr.io
docker push ghcr.io/lemonaide152/meld:latest
API
| 端点 | 方法 | 描述 |
|---|---|---|
/api/melds | POST | 创建。提供一条备注,说明这次交流的目的和非目的。发送 note,或将同一文本填入 context、for 和 not_for。从创建起开放 36 小时,直到收到首条回复。A 方私下将 URL 发给 B 方。 |
/api/melds/{code} | GET | 存续期间返回明文:备注和每条回复。不会启动或重置计时器。未知、已解散和已过期的代码均返回相同的 404。 |
/m/{code} | GET | 返回相同的明文内容。此链接即能力 URL。链接预览爬虫会收到仅显示过期时间、不包含交流内容的卡片。该卡片不会读取 meld。 |
/api/melds/{code}/resolve | POST | 在同一桥接上追加回复。在该链接上继续交流。首条回复会将计时器设为 24 小时。之后的每条回复都会保留,并将这 24 小时重新计时。未知、已解散和已过期的代码均返回相同的 404。 |
仍在提交旧版键的客户端会使用一条备注,并在每个字段中填入相同文本:
{"context":"For a design review. Not for passwords or customer data.","for":"For a design review. Not for passwords or customer data.","not_for":"For a design review. Not for passwords or customer data."}
读取结果会在 note、context_a、for 和 not_for 中重复返回该备注。
状态仅保存在内存中。若没有回复,meld 会在创建后 36 小时删除。收到回复后,若 24 小时内没有新回复,meld 就会删除。解散会移除桥接。服务器不会保留该代码的记录。下次请求会返回 404。重启会丢弃所有存续中的链接。
后台清理任务每 5 分钟运行一次,并删除所有过期桥接,即使没有人再次请求相应代码也会删除。设置 MELD_SWEEP_SECONDS 可更改运行频率。默认值为 300。服务器日志不包含桥接代码。
规范
SPEC.md 是 meld 的核心规范,目前版本为 2.0.0。它是行为的唯一依据。GET /health 会报告此服务器所针对的规范版本,若 SPEC.md 与服务器对此版本的描述不一致,运行 python check_spec.py 会失败。此服务器尚未实现 2.0.0 的所有内容(解散、回复上限、MCP 和 128 位代码仍未实现),因此 /health 会报告 "conformance": "partial"。
信任
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。