跳转至

Pro 版本更新

当前处于 Pro 文档环境,仅展示生产版本的更新记录。

环境说明

切换到 Test 文档后,这里会自动显示测试版本更新。

当前版本

v0.3.0 · 2026-08-14 · Pro · 最新
  • 提交:v0.2.0..6fb4696,共 6 个非合并提交(忽略 Burp 抓包导出、posts 回复/点赞、friendships 关注/取关、proto 目录前缀、sdk-roadmap 文档、E2E 无返回值写方法夹具修复)。
  • 变更:proto 目录前缀(GitHub issue #2):全部 proto/*.proto 移至 proto/threads/FileDescriptorProto.name 由裸文件名改为 threads/<name>.proto,在 protobuf 进程级 descriptor pool 中全局唯一,threads_sdk 可与其他同样使用裸 common.proto/posts.proto 的 SDK(如 twitter_sdk)在同一 Python 进程共存,不再触发 duplicate file name;生成脚本改喂 proto/threads/*.proto-Iproto),Python stub 规范化识别 from threads import 并改为包内相对 import,_generated/ 仍扁平。posts:新增回复 ReplyToPost、点赞 LikeMedia、取消点赞 UnlikeMedia RPC,并对齐真机发帖请求指纹。friendships:新增关注 FollowUser、取关 UnfollowUser RPC,按真机补齐关系状态模型。文档:新增 docs/sdk-roadmap.md 双列完成度主文档与能力盘点取证规则。
  • 兼容性:向后兼容,无 wire 破坏性变更。 proto 目录前缀只改变 AddSerializedFile 的文件名字符串;package、gRPC 方法全名(仍 threads.<mod>.v1.<Service>)、Python import 路径(from threads_sdk import ThreadsClient)、线上已持久化的 AccountState 序列化数据均不变。新增 RPC 为 additive,旧调用方不受影响。Go server 与 Python SDK 建议同版本 0.3.0 配套。
  • 验证:release_tag.py create 执行离线门禁——uv sync --lockedgofmtgo mod verifygo vet ./...go test -race ./... 全部通过;Python 离线测试(distribution / api_inventory / facade / account_state_go_blackbox / rpc_recording)通过;wheel、sdist 与可复制包干净安装验证;scripts/llms_docs.py check 通过。跨 SDK 共存复现:先向 Default pool 注册裸 common.proto+posts.proto(模拟 twitter_sdk),再 import threads_sdk 成功。
  • E2E:passed(真实执行,部分覆盖,如实记录)。2026-08-14 从公开 threads_sdk 门面经真实 gRPC 调真实 i.instagram.com(账号 davidson10532,经授权设置 THREADS_TEST_ENABLE_WRITES=1,脱敏完整往返记录留存):真机通过 13 项——发帖 create/delete、回复点赞/取消点赞(首次真机验收,判据为重新读回该帖 has_liked 正反翻转)、资料读取与 edit_profile noop、feed/search、whoami、完整状态注入契约与参数边界。关注/取关(follow/unfollow)跳过:真实推荐流未返回可用目标账号,写操作本次未执行;图片上传/单图帖未跑(未提供图片夹具);真实登录 attested 未跑(未提供账密、未授权登录)。
  • 部署:计划发布 0.3.0 / latest Go server 镜像、0.3.0 Python SDK 正式 Release 附件,以及 /pro/0.3.0//pro/latest/ 和根级 /latest/ 文档。部署前确认非 loopback 监听已配置 TLS 证书与私钥(或已由外层 sidecar 终止 TLS 并显式放行),否则 server 拒绝启动。keybox.xml 仍以只读方式打包进 Go server 镜像。
  • Python SDK:发布 threads_sdk-0.3.0-py3-none-any.whlthreads_sdk-0.3.0.tar.gzthreads_sdk-0.3.0-copy.zip;三类产物内置同版本 protobuf/gRPC stub。descriptor pool 文件名改为 threads/*.proto,可与使用裸文件名的其他 SDK 同进程共存。必须与 0.3.0 Go server 配套,不得与 0.2.x 混用。
  • 已知限制:关注/取关(FollowUser/UnfollowUser)、图片上传/单图帖(UploadImage/CreateImagePost)与真实登录 attested 本次均未经真机 E2E 验收——代码已实现但尚未经真实服务器确认,生产使用前建议先在测试线补齐。CAA/Bloks 登录默认要求服务端硬件 signer,长期稳定性仍未验证。
  • 升级与回滚:从 0.2.0 升级需将 Go server 与 Python SDK 同时升到 0.3.0;无 wire 破坏性变更,AccountState 持久化数据无需迁移。回滚将两者一并退回 0.2.0 镜像/包即可;proto 文件名前缀变更不影响已持久化数据,回滚安全。

历史生产版本

v0.2.0 · 2026-07-29
  • 提交:v0.1.6..32b0da8,共 17 个非合并提交。对应测试线 test-v0.1.7test-v0.3.0 的累计内容。
  • 变更:本次生产发布合并两批测试线成果。 账号契约与传输安全(测试线 test-v0.2.0):公开 AccountStateLoginDeviceLoginSession 改为只读安全值对象,文本表示不再输出 Session、设备标识和代理凭据;LoginRequest.proxy 从 field 4 迁至 field 7;load_account_state() 会把 v0.1.5 及更早持久化的 proxy_url 恢复成强类型 Proxy, 解析失败即抛错而非静默直连;非 loopback gRPC 监听不再允许明文启动,除非显式设置 THREADS_GRPC_ALLOW_INSECURE=1(供外层已终止 TLS 的 mTLS sidecar 使用);上游失败不再统一回 INTERNALinternal/server.upstreamError 按失效类型分类并把上游原始正文限制在服务端日志内, gRPC details() 只回结构化摘要;上游失败时刷新后的 AccountState 经 trailing metadata x-threads-account-state-bin 回传,SDK 自动采纳,不再沿用过期 RUR、claim 和 MID;图片上传显式声明 16 MiB gRPC 消息上限(THREADS_GRPC_MAX_RECV_BYTES 可调)与 8 MiB 业务上限。 Bloks 解析改造(测试线 test-v0.3.0,GitHub issue #1):登录链路的 Bloks 响应解析从「在序列化 DSL 文本上打正则」改为「解码 → 解析语法树 → AST 查询」,新增 internal/bloks 包(S-表达式 tokenizer/parser、Fields() 按字段位取值、KVMap() 键值表、Collect() 遍历全部字符串叶子、 按 bk.action.caa.HandleLoginResponse 契约从 CAA payload 的 headers 表提取会话四件套)。修复三类 静默取错值:① 弹窗正文正则的 \\. 分支吃掉字符串终止符 \",把整段 DSL 当正文(线上实测 16 字符 膨胀到 131 字符);② 屏响应预置的未触发 UI 模板弹窗被首个正则匹配取走,在任何一步「没推进」时把自身 解析失败谎报成上游错误,现只认与 error_info 同树的弹窗;③ two_step_verification_context 原按 「全文最长 base64」定位(实测余量仅 2232 vs 890 字符),现按名取。新增失败类型 two_factor_verification_failed2fa/totp 生成前检查 TOTP 剩余有效期,不足 5 秒等到下一窗口; 会话提取改为结构化主路径 + 正则兜底并标注 parse=;上游未归类失败再按 HTTP 状态细分 gRPC code; 传输层记录请求体改用 req.GetBody() 可重放副本;SDK 采纳失败 trailer 的 AccountState 前先校验。
  • 兼容性:破坏性发布,Go server 与 Python SDK 必须同时升级到 0.2.0,禁止混用。 四处不兼容: ① LoginRequest.proxy 由 field 4 移至 field 7,0.1.x wheel 调用 0.2.0 server 时代理会成为 unknown field 被静默丢弃,server 未加 unknown field 检测,因此不得存在版本错配窗口; ② 公开 AccountState 不再是 protobuf 消息,CopyFromHasField、字段赋值和 MessageToDict 均失效,SerializeToString() 仅作只读兼容保留并等价于 dump_account_state(); ③ 非 loopback 明文部署将启动失败,须配置 TLS 证书与私钥或显式设置 THREADS_GRPC_ALLOW_INSECURE=1; ④ 上游失败的 gRPC 状态码由 INTERNAL 改为分类状态码(UNAUTHENTICATEDPERMISSION_DENIEDFAILED_PRECONDITIONRESOURCE_EXHAUSTEDDEADLINE_EXCEEDEDABORTEDUNIMPLEMENTEDUNAVAILABLE;400/404 仍为 INTERNAL),按 INTERNAL 判断上游失败的调用方必须改按 code() 分流, details() 不再包含上游原始正文。此外 LoginStep.failure_kind 新增枚举值 two_factor_verification_failed,穷举该字段的调用方需补分支。Proto 消息编号本次未再变动。
  • 验证:gofmt -l internal/ cmd/go vet ./...go test -race -count=1 ./... 全部通过; Python 离线测试 124 项 + 42 项 subtests 通过;scripts/llms_docs.py check 通过。金样本回归 (Burp 抓包含真实凭据,不进 git,需 THREADS_GOLDEN_BURP_DIR):49 个真实 Bloks 响应解析出 902 棵 语法树、零语法错误;2FA 每一跳解析出的屏号与绑定与迁移前完全一致;3 份抓包的会话提取 100% 走结构化 路径且 token 与旧正则逐字节一致。创建 Tag 时发布脚本重新执行了全部离线质量门禁,包括 wheel、sdist 和可复制包的干净安装验证。
  • E2E:skipped。用户在本次生产发布中明确选择跳过重复执行。同一提交 32b0da8 已在测试线 test-v0.3.0 完成真实全量 E2E 并记为 passed:2026-07-29 从公开 threads_sdk 门面经真实 gRPC 调 真实 i.instagram.com,2FA 登录全链路逐步通过(extract_context 按名取到 context、2fa/totp 守卫 报告窗口剩余 5 秒、verify_code 换到 IGT:2 且 rur/www-claim 齐全 parse=structuredfetch_onetap 与即时 whoami 身份一致、token 170 字节未截断),真实只读用例 91 项通过,经明确授权设置 THREADS_TEST_ENABLE_WRITES=1 后资料保存回写与发帖/删帖 2 项写入用例通过并完成清理。生产 Tag 指向 同一提交,故未重复执行;本条不得被描述为「生产环境已独立验收」。
  • 部署:计划发布 0.2.0 / latest Go server 镜像、0.2.0 Python SDK 正式 Release 附件, 以及 /pro/0.2.0//pro/latest/ 和根级 /latest/ 文档。部署前确认非 loopback 监听已配置 TLS 证书与私钥(或已由外层 sidecar 终止 TLS 并显式放行),否则 server 会拒绝启动。
  • Python SDK:发布 threads_sdk-0.2.0-py3-none-any.whlthreads_sdk-0.2.0.tar.gzthreads_sdk-0.2.0-copy.zip;三类产物内置同版本 protobuf/gRPC stub,使用者也可直接复制完整 threads_sdk/,但必须与 0.2.0 Go server 配套,不得与 0.1.x server 混用。
  • 已知限制:本次生产 Tag 未独立执行真实 E2E(依据同提交的测试线验收)。Bloks DSL 的结构号与字段位 (弹窗 fom 13799 的 40/35、屏导航的 35/45)绑定 Threads Android 421.0.0.50.67,换版本必须重新 逆向核对,代码内已标 TODO。另一条 2FA 流程 com.bloks.www.ap.two_step_verification.* (上下文参数名 context_data)本仓库不实现。generic dialog 是否等价于「TOTP 码被拒」仍无抓包证据, 故新失败类型只陈述「verify_code 未换到 IGT:2」而不断言原因;Meta 是否对 TOTP 给 ±1 窗口容差同样 未验证,窗口守卫按「无容差」实现。reIGTToken / reNonce / reRur / reWwwClaim 仍作会话解析兜底 保留,待 parse=regex_fallback 比例归零后再删。失败 trailer 超过 4 KiB 时不回传刷新状态。 图片帖真实 E2E 因缺图片夹具未执行。登录与 keybox attestation 的长期稳定性仍未验证。
  • 升级与回滚:Go server 与 Python SDK 必须一起升级到 0.2.0,并按上面四条兼容性清单迁移 AccountState 调用、代理传递、错误码分流和 TLS 配置。如登录成功率、状态迁移、错误处理、镜像、SDK 或文档异常,回滚到不可变的 0.1.6 镜像与 0.1.6 SDK,并同时回退两侧,不得混用版本;已持久化的 0.2.0 AccountState 回退后需按 0.1.6 契约重新登录生成。
v0.1.6 · 2026-07-27
  • 提交:v0.1.5..03f7b23,共 2 个非合并提交。
  • 变更:Python SDK 统一以完整 AccountState 作为账号边界;根 ThreadsClient 只保存服务地址、TLS 和 API key,client.account(state) 返回进程内持有最新账号状态的模块客户端。所有登录后 RPC 都由 SDK 自动注入并刷新完整状态,公开方法只返回业务对象;代理统一为强类型 Proxy,同账号请求在单进程内 串行、不同账号可并发。同步更新 Proto、Go handler、生成 stub、Python 门面、真实 E2E、文档和 AI 契约。
  • 兼容性:这是破坏性契约调整,Go server 与 Python SDK 必须同时升级到 0.1.6。旧的 token、设备 和 UUID 分散参数以及 proxy_url 状态字段不再接受;调用方应迁移并持久化完整 AccountState,从 AccountClient.state 读取每次任务结束后的最新副本。
  • 验证:go test -race ./...go vet ./...、66 项 Python SDK 测试及 28 个 subtests、3 项 本地真实 gRPC 边界测试、wheel/sdist/可复制 ZIP 干净安装和 scripts/llms_docs.py check 已通过; 另由公开 Python SDK 完成 8 组登录后真实业务测试并记录 19 条脱敏 gRPC 交换。创建 Tag 时发布脚本 将重新执行全部离线质量门禁。
  • E2E:skipped;用户明确要求复用现有 Session 并跳过登录 RPC。当前用户、资料读取与原值回写、关系、 文本帖创建/删除、图片上传/创建/删除、Feed、回复和搜索均通过,测试帖子已清理;但因为没有执行真实登录 与 keybox attestation,本次不构成完整生产 E2E,不得描述为 passed。
  • 部署:计划发布 0.1.6 / latest Go server 镜像、0.1.6 Python SDK 正式 Release 附件, 以及 /pro/0.1.6//pro/latest//latest/ 文档和公开 SDK 下载页;远程部署取决于 production Environment 配置。
  • Python SDK:发布 threads_sdk-0.1.6-py3-none-any.whlthreads_sdk-0.1.6.tar.gzthreads_sdk-0.1.6-copy.zip;三类产物内置同版本 protobuf/gRPC stub,使用者也可直接复制完整 threads_sdk/,但必须与 0.1.6 Go server 配套。
  • 已知限制:登录与 keybox attestation 未在本次真实测试中执行;SDK 只保证同一进程内的账号状态串行, ARQ 多进程之间仍需使用者通过数据库锁、版本号或 CAS 协调同一账号;旧状态必须先迁移或重新登录。
  • 升级与回滚:生产环境的 Go server 与 Python SDK 必须一起升级到固定版本 0.1.6。如状态迁移、 代理、镜像、SDK 或文档异常,两者一起回滚到 0.1.5;不得混用版本、移动已推送 Tag,或用浮动 latest 代替固定版本完成审计与回滚。
v0.1.5 · 2026-07-26
  • 提交:v0.1.4..ed6e198,共 9 个非合并提交。
  • 变更:新增 Python Proxy / Go ProxyConfig 强类型代理,完整支持带认证、IP 白名单、HTTP(S)、 SOCKS5/SOCKS5H;补齐 Go server 与 Python SDK 的 gRPC TLS、API key、优雅停机、健康检查和账号隔离 HTTP client 池。列表响应升级为结构化 ListPage,删除没有真实实现依据的 Insights/Mentions 公共 RPC 和旧 threads_client 兼容层;所有 Python E2E 统一从公开 threads_sdk 门面进入。公开文档站 新增环境隔离的“版本更新”分类,生产页面只展示 v* 记录。
  • 兼容性:存在公共契约调整,Go server 与 Python SDK 必须同时升级到 0.1.5。原 RawList.raw_json 消费方需改为读取 ListPage.items/paging/metadatathreads_client 导入路径不再提供; Insights/Mentions 不再作为公共 RPC 暴露。旧 proxy_url 字符串入口继续兼容一个版本周期,推荐迁移到 强类型 Proxy;跨机器连接必须启用 TLS 和至少 32 字符的 API key。
  • 验证:50 项公开 SDK 参数映射、可选字段、状态序列化、分发和 E2E 入口门禁测试通过;此前 test-v0.1.8test-v0.1.9 发布已通过 Go race、52 项 Python SDK 离线测试、61 项发布/文档 测试、AI 文档检查、SDK wheel/sdist/可复制包干净安装及生产 Docker 构建。创建本 Tag 时发布脚本将对 当前提交重新执行全部离线质量门禁。
  • E2E:skipped;本次实际启动了公开 threads_sdk → gRPC → Go server → Threads 的真实全量验收, 结果为 58 项通过、9 项失败并记录 37 条脱敏 gRPC 交换。主测试账号被上游明确判定为 accounts/suspended,备用 Session 返回 login_required/logout_reason=2;没有成功上传图片或创建 帖子。用户确认账号封禁属于外部测试账号状态,可以跳过本次真实 E2E 并继续正常生产发布;不得将该结果 描述为 passed。
  • 部署:计划发布 0.1.5 / latest Go server 镜像、0.1.5 Python SDK 正式 Release 附件, 以及 /pro/0.1.5//pro/latest//latest/ 文档和公开 SDK 下载页;远程部署取决于 production Environment 配置。
  • Python SDK:发布 threads_sdk-0.1.5-py3-none-any.whlthreads_sdk-0.1.5.tar.gzthreads_sdk-0.1.5-copy.zip;三类产物内置 protobuf/gRPC stub,并与同版本 Go server 配套使用。
  • 已知限制:当前没有可用于真实全量验收的活跃测试账号,本版本的真实上游业务能力未通过发布时 E2E; 服务端尚无运行时版本兼容协商;连接池容量 512 与 idle TTL 15 分钟当前不可配置;固定 keybox.xml 继续作为 Go server 镜像构建输入,Python SDK 不携带 keybox。
  • 升级与回滚:生产环境必须同时升级到固定镜像和 SDK 0.1.5,不得混用不同 X.Y.Z。若代理、TLS、 列表响应、SDK 分发或文档异常,server 与 SDK 一起回滚到 0.1.4;不得移动已推送 Tag,也不得以浮动 latest 作为审计或回滚依据。
v0.1.4 · 2026-07-26
  • 提交:v0.1.3..71f39ce1ff9ca0b2c127e372781678f36d2afbe7,共 9 个非合并提交。
  • 变更:正式发布 Python SDK 客户端交付链路;登录只接收账号、密码、可选 2FA seed 和可选代理,成功后 返回可持久化的完整账号、设备与 Session 状态,后续独立任务可恢复状态直接发帖;同步发布 wheel、sdist、 可复制 threads_sdk/ ZIP、公开下载页和 AI 直接接入页。修正真实 E2E 在未配置代理时错误发送显式空 proxy_url 的测试构造,确保可选字段保持 absent。
  • 兼容性:Proto、Go server、生成 stub 和 Python SDK 统一升级到 0.1.4;需要完整状态往返能力的调用方 必须同步升级 server 与 SDK。未使用代理时不传 proxy_url;显式空字符串仍是非法输入。SDK 只负责 gRPC 客户端调用,不承担 ARQ 调度、账号锁、重试或状态持久化。
  • 验证:真实全量 E2E 修正后 42 项测试全部通过并记录 52 条脱敏 gRPC 交换;22 项代理、状态序列化和公开 SDK → Go server 黑盒回归通过。创建 Tag 时由发布脚本重新执行 Go race、28 项 Python 离线测试、59 项 发布脚本测试、AI 文档检查、SDK 三类发行物干净安装及生产 Docker 构建。
  • E2E:passed;用户明确授权真实登录和写操作。通过服务端固定 keybox 完成 attested 登录与即时 whoami, 完成资料原值保存、文本发帖、图片上传与单图发帖;文本帖和图片帖均删除成功,文本帖删除后重新读取主页确认 目标 media id 已消失。证据保存在受保护的本地目录 /tmp/go-threads-api-v0.1.4-e2e-fixed.lzHV2D/,日志已脱敏且未提交。
  • 部署:计划由 Tag 流水线发布 0.1.4 / latest Go server 镜像、0.1.4 Python SDK 正式 Release 附件,以及 /pro/0.1.4//pro/latest//latest/ 文档和公开 SDK 下载页;远程部署 取决于 production Environment 配置。
  • Python SDK:发布 threads_sdk-0.1.4-py3-none-any.whlthreads_sdk-0.1.4.tar.gzthreads_sdk-0.1.4-copy.zip;三类产物内置 protobuf/gRPC stub,并与同版本 Go server 配套使用。
  • 已知限制:真实登录响应仍标记为不保证长期自动化稳定;远程 gRPC 尚未提供 TLS、服务端认证和运行时版本 握手,不得直接暴露到不受信公网;遗留真实全接口测试仍有直接 gRPC stub 覆盖,不能替代公开 SDK 门面的 持续迁移。
  • 升级与回滚:生产环境同时升级到固定镜像 0.1.4 和 SDK 0.1.4,不得混用不同 X.Y.Z。出现兼容、 下载或部署问题时 server 与 SDK 一起回滚到 0.1.3,不得以浮动 latest 作为审计或回滚依据。
v0.1.3 · 2026-07-25
  • 提交:v0.1.2..be93f4cdeb87c15131a4241cae1115271a41eaee,共 2 个非合并提交。
  • 变更:gRPC Server 支持通过 THREADS_KEYBOX_FILE 加载 keybox attestation signer;生产镜像将仓库 根目录版本化 keybox.xml0400 权限固化到 /run/secrets/threads-keybox.xml,生产 Compose 不再依赖宿主机 bind mount;同步增加 Go、Python gRPC 与 Docker 配置测试、部署文档和 AI 能力文档; Tag 发布 Skill 收窄为版本规划、Tag 创建、推送及远端核对。
  • 兼容性:不修改 Proto、既有 RPC 字段或 Python 公共方法。生产镜像新增内置 keybox,轮换必须提交新 keybox.xml 并发布新版本镜像;原有仅依赖运行时挂载的部署流程不再是默认路径。
  • 验证:go test ./...、26 项发布与 Docker 配置脚本测试、AI 文档一致性和生产 Compose 配置检查通过; 实际生产 Docker 镜像构建成功,容器内 keybox 权限为 threads:threads 0400,gRPC Server 成功加载 signer;创建 Tag 时由发布脚本重新执行 Go race、Python 离线测试、发布工具测试和 Docker 构建门禁。
  • E2E:skipped;用户选择跳过本次真实 Python gRPC 全量验收,因为真实登录及资料保存、发帖、删帖可能 触发 Threads 账号风控,并接受 keybox signer 与生产镜像真实上游路径未重新验收的风险。
  • 部署:计划由 Tag 流水线发布 0.1.3 / latest 镜像及 /pro/0.1.3//pro/latest//latest/ 文档;是否远程部署取决于 production Environment 配置。
  • 已知限制:本次未验证真实 attested 登录、会话长期稳定性及完整写操作;keybox 已进入 Git 历史和镜像层, 泄露或撤销时必须以新提交和新版本镜像轮换;远程生产服务的实际换版与业务状态需在部署后单独验证。
  • 升级与回滚:生产环境应使用固定镜像 0.1.3;升级后核对 gRPC Server keybox 加载日志与登录业务状态, 如出现兼容或启动问题则回滚到固定镜像 0.1.2,并注意回滚版本不包含本次内置 signer 链路。
v0.1.2 · 2026-07-25
  • 提交:v0.1.1..0cb192327639c907c45544e02c0f2d3af32f9f62,共 7 个非合并提交。
  • 变更:公开文档站收口为纯 API 内容;新增按项目接入、业务模块、用户任务和调用步骤组织的使用指南; 逐接口补充用途、前置条件、全部直接请求参数来源、响应取值、后续接口和所属工作流;Python/gRPC AI 文档与 capabilities.json 同步生成模块、工作流和步骤间字段映射;同时增加 Test / Pro 独立 CHANGELOG 发布门禁,并明确视频发布当前不可用。
  • 兼容性:不修改 Proto、Go SDK、gRPC handler 或 Python 公共方法。capabilities.json schema_version1.0 升级为 2.0,机器消费者应兼容新增 modulesworkflows 和接口使用语义; 新增 /docs/api/guide/,原 llms、Python、gRPC 和 Proto 地址继续保留。
  • 验证:文档生成器 47 项脚本测试、AI 文档一致性、Python 示例语法、发布目录链接、站点源构建和 MkDocs YAML 解析已通过;创建 Tag 时由发布脚本重新执行 Go、Python 离线测试和生产 Docker 构建。
  • E2E:skipped;用户确认本次仅包含 API 文档与发布规则调整,无运行时接口实现变更,且同一提交已通过 test-v0.1.4 本地质量门禁与测试发布验证,因此接受不重新执行真实 Threads 全量 E2E 的风险。
  • 部署:计划由 Tag 流水线发布 0.1.2 / latest 镜像及 /pro/0.1.2//pro/latest//latest/ 文档;是否远程部署取决于 production Environment 配置。
  • 已知限制:视频上传和视频创建仍无可用 RPC;真实上游行为沿用既有验收基线,本次未重新执行; 远程生产服务的实际换版与业务状态需要在部署启用后单独验证。
  • 升级与回滚:AI 消费者应兼容 capabilities.json 2.0 工作流结构;生产环境必须使用固定镜像 0.1.2,如文档或消费端不兼容则回滚到固定镜像 0.1.1,不得以 latest 作为审计或回滚依据。
v0.1.1 · 2026-07-25
  • 提交:bf16b8a6fef32179715a2aa3481db7682330a6f0
  • 变更:补齐图片上传与单图发布、头像和 banner 更新、资料字段扩展、结构化帖子采集、 per-request 代理隔离,以及 CAA/Bloks 登录 gRPC/Python 能力。
  • 兼容性:新增 RPC、请求字段和 Python 门面方法;既有 Proto 字段号保持不变。需要使用新增能力的 调用方必须升级生成 stub 与 Python 客户端。
  • 验证:go mod verifygo vet ./...go test -race ./...、8 项 Python 离线测试、37 项发布工具测试、AI 文档检查和生产 Docker 构建通过。
  • E2E:skipped;本次为 patch 发布,全量真实登录及写操作的账号风险高于发布收益,接受未执行 真实上游全量回归的风险。
  • 部署:已发布 ghcr.io/robin528919/go-threads-api:0.1.1 和生产文档;镜像摘要为 sha256:e3408eb680864206cc3ef45aaa98da0ad1f1e00142b3fbdecedd5857ba3891b7。 远程生产部署未启用,服务器未自动换版。
  • 已知限制:真实上游登录持久性、账号风控和新增写接口未在本版本执行全量 E2E;GHCR 包为私有可见性。
  • 升级与回滚:生产部署必须使用固定镜像 0.1.1;需要回滚时使用固定镜像 0.1.0, 不得以 latest 作为审计或回滚依据。
v0.1.0 · 2026-07-25
  • 提交:d1aeb99b4f332e56bcde98482505ed938c1e8990
  • 变更:建立首个生产发布基线,包含严格 SemVer annotated Tag、结构化质量证据、生产镜像、 Test / Pro 分组文档站与生产发布授权流程。
  • 兼容性:首个生产版本,无前序生产版本兼容承诺。
  • 验证:Go、Python 离线测试、发布工具测试、AI 文档检查和生产 Docker 构建通过。
  • E2E:skipped;用户明确选择跳过该次生产发布的真实全量 E2E。
  • 部署:生产镜像与文档发布状态以对应流水线记录为准;远程生产服务部署状态未在原发布记录中留存。
  • 已知限制:真实 Threads API 业务验收未执行,不能把离线门禁结果视为真实上游已验证。
  • 升级与回滚:首个生产版本;生产运行必须使用固定镜像 0.1.0,出现问题时停止部署并保留证据。