SuperAPI AI 工具集

Linear Attachments

办公与效率

查看项目

更新于 10-16 05:29

技能介绍

Linear Attachments 是一个用于在 Linear 中处理附件的技能,主要覆盖上传文件、添加链接附件以及带认证下载附件三类操作。

用途与两种附件类型

该技能区分两种附件形式。第一种是文件附件,存储于 Linear S3(预签名方式),适合截图、日志、设计文件等。第二种是链接附件,仅保存外部 URL,适合关联 GitHub PR、Figma、Notion、Loom 等内容。

文件上传流程

文件上传采用三步流程:

第一步,预留上传 URL,调用 client.fileUpload,传入 contentType、filename 和 size,返回 uploadUrl、headers 以及 assetUrl。

第二步,PUT 字节,使用 fetch 向 uploadUrl 发送 PUT 请求,body 为文件内容,headers 由返回的 headers 数组转换而来。

第三步,将附件关联到 issue,调用 client.attachmentCreate,传入 issueId、url(即 assetUrl)、title 和 contentType。

资料中还提供了一个位于 lib/attachment-upload.ts 的辅助函数 uploadFileToLinear,接收 client、issueId、filePath 和可选 title,返回附件 ID。

大文件与分片上传

对于大于 50MB 的文件,Linear 的预签名 URL 支持 S3 分片上传:拆分为 5MB 的分片,每片通过带 partNumber 查询参数的 PUT 上传,最后用 POST ?uploads 完成。资料指出大多数使用场景都在 50MB 以下,只有日志和视频会用到分片上传。

链接附件

链接附件通过 client.attachmentLinkCreate(issueId, url, title) 添加。Linear 会根据 URL 模式推断预览,支持的范围包括 GitHub PR / issue / commit、Figma、Notion、Loom、Vimeo、Slack thread 以及通用的 OG 富页面。

带认证下载

资产 URL 需要在 Authorization: Bearer <token> 中携带相同的 Linear 令牌。资料强调不要公开分享这些 URL:它们会在 7 天后过期,但在该时间窗口内暴露即构成泄露。示例代码使用 fetch 携带 LINEAR_API_KEY 获取内容并转为 Buffer。若需与最终用户分享,可通过自己的服务签发短期有效的签名 URL。

集成与桥接

资料提到 Harness Code 中,文件附件通过评论中的资产 URL 链接(而非复制)到关联 PR;由于 URL 需要认证,审阅者必须是 Linear 成员。在启用了 Linear Diffs 的 GitHub 中,PR 上下文可原生渲染,附件仍以资产 URL 方式链接。

安全注意事项

资料给出以下安全建议:声明 content-type 前先验证(不要信任用户输入);在上层限制上传大小(通常为 100MB);在客户端可行时剥离图片 EXIF;不要将用户文件字节经过自己的后端,而应将其重定向到 Linear 的预签名 URL。

限制与未提供信息

该技能的具体可用平台、安装方式、收费或价格信息,资料中暂未提供。