tessera

接入 agent

让 AI agent 或脚本上传文件,再交回一条链接

agent 做出一个文件之后,常常得交给某个人:一份报告、一个 build、一份导出。Tessera 让它用一个请求就能上传,返回的就是链接。这页说明要告诉 agent 什么,以及它会拿到什么。

agent 需要的东西

  • 机器的地址,例如 https://files.example.com。
  • 一个令牌:这台机器不开放匿名上传,或你想让分享算在自己账号下时才需要。在账号页生成,只给它创建分享的权限。agent 不需要更多,令牌泄露时也删不了任何东西。
  • curl;要发整个文件夹、要加密,或大文件得扛过断线时,改用 tess。

令牌放在环境变量里,不要写进 prompt。prompt 里的东西可能会留在日志或对话记录里。

用 curl 上传

curl --fail-with-body -T report.pdf https://files.example.com/
echo "build 1423 通过" | curl --fail-with-body -T - https://files.example.com/

网址结尾一定要有 /。curl 会把文件名接上去,那就是分享里的文件名。-T - 读标准输入,做出来的是笔记而不是文件。

响应就是一行链接,可以直接 link=$(curl …)。分享的取件码也在 X-Share-Code 响应头里。带 Accept: application/json 的话,响应改成分享的 JSON,和 POST /api/v1/shares 返回的一样。

选项放在请求头里:

请求头示例作用
X-Share-Expires30m、12h、1d、2w分享能活多久
X-Share-Max-Downloads1能取件几次。1 就是阅后即焚
X-Share-Password收件人需要的密码
AuthorizationBearer tsk_…以令牌的账号上传
curl --fail-with-body -T report.pdf \
  -H "Authorization: Bearer $TESSERA_TOKEN" \
  -H "X-Share-Expires: 1d" \
  -H "X-Share-Max-Downloads: 3" \
  https://files.example.com/

限制和其他上传一样:文件大小、存储空间、配额,还有令牌的权限。每次 curl -T 做出一份只有一个文件的分享。要多个文件放同一份、发文件夹,或端对端加密,请用 tess。

匿名上传只能用管理令牌删掉

没带令牌时,响应还会附上 X-Share-Management-Token。那是分享过期前删掉它的唯一方法,而且不会再出现。用 curl -D - 看响应头,或带 Accept: application/json,它就是 management_token 字段。

失败的时候

响应是一行 error: <消息>,加上 HTTP 状态码。--fail-with-body 会让 curl 以错误退出,同时还是把那一行打印出来。只用 -f 会把它藏起来;两个都不加的话,curl 以 0 退出,agent 可能把错误消息当成链接交出去。

状态码意思怎么办
401这台机器要账号才能上传(消息是 only accepts uploads from signed-in accounts),或令牌无效带上有效的令牌
403令牌的账号不能上传换一个账号
413文件比这台机器允许的大不要重试
507机器或账号的配额没有空间了不要重试
429请求太多等 Retry-After 的秒数
400请求头的值不对,例如 X-Share-Expires: 3y修正请求

用 tess

tess 的标准输出只有链接。进度和颜色只在终端里出现,所以 agent 读到的就只有链接。失败时以非零退出,标准错误上会有 error: <消息>。

export TESSERA_SERVER=https://files.example.com
export TESSERA_TOKEN=tsk_…
tess send dist/ --expires 24

agent 用到 --password,或要下载有密码的分享时,一定要设 TESSERA_PASSWORD。不然 tess 会在终端上问,而 agent 没办法回答。其他用法见命令行。

读取分享

像 https://files.example.com/s/0ZPQ4M7K 这样的链接是给人看的页面。要拿内容:

curl -fLOJ https://files.example.com/s/0ZPQ4M7K/download
curl -fL https://files.example.com/s/0ZPQ4M7K/raw

/download 给文件,分享有多个文件时给一个 zip。/raw 给笔记的文字。有密码的分享加上 -H "X-Share-Password: …"。

每次下载都会用掉一次取件次数。agent 只是为了确认而下载一份一次性的分享,它就被用掉了。GET /api/v1/shares/<code> 可以看分享的信息,不会用掉次数。

服务器还在扫毒时会返回 423,等 Retry-After 的秒数再试。410 表示分享过期了,或已经取完允许的次数。

取件码后面带 #… 的链接是端对端加密的。# 后面是密钥,它不会发到服务器,所以 curl 只拿得到封好的字节。用 tess get 加上整条链接才打得开。

让 agent 读 /llms.txt

每台机器都会在 /llms.txt 描述自己,是写给语言模型看的纯 Markdown。

curl https://files.example.com/llms.txt

内容包括这台机器的地址、上传要不要账号、最大文件、分享默认和最多能活多久,以及有没有开端对端加密。接着说明怎么用 curl 和 tess 上传和下载,以及错误状态码的意思。它透露的东西,不会比 /api/v1/capabilities 给陌生人看的更多。

跟 agent 说一句「上传之前,先读 https://files.example.com/llms.txt」,通常就够了。

给 agent 的说明

不想让 agent 先去查东西的话,在它的 system prompt 或 AGENTS.md 里放类似这样的一段:

To give someone a file, upload it to Tessera and send them the link:

    curl --fail-with-body -T <file> \
      -H "Authorization: Bearer $TESSERA_TOKEN" "$TESSERA_SERVER/"

The response body is the link. Add -H "X-Share-Expires: 1d" or
-H "X-Share-Max-Downloads: 1" when asked. If the command fails,
report the error line instead of a link.

接下来

本页内容