兔换喜鹊
Tabbit 作为 喜鹊
(和OpenCode)。它使用Tabbit浏览器帐户登录
电脑,列出账户的真实型号目录,并一一解答
兔兔自己的聊天API——这样一个代理背后的喜鹊就可以挑选了 tabbit/Default,
tabbit/DeepSeek-V4.1-Flash, tabbit/GLM-5.3-Flash 其余的都一样
其他供应商,与帐户的津贴,后备和使用卡。
安装
magpie plugin add @magpie-community/opencode-tabbit-auth # from the community list
# from this source tree instead: magpie plugin add .
magpie plugin login tabbit # pick “Read Tabbit Browser sign-in (macOS)”
magpie provider test tabbit # ✓ chat · Default
然后选择 tabbit/<model> 在任何代理的模型行在喜鹊的代理页面-
或者从组路由到它:
magpie group add tabbit-pool models=tabbit/Default,tabbit/DeepSeek-V4.1-Flash routing=cheap
每日自动签到:装好并登录后,喜鹊→设置→“窗口重置时预热/每日自动签到”→ 标签条最右的 插件 →“Tabbit·”()。 (1)、(1)、(1)、(2)、(2)、(3)、(3)
OpenCode:opencode.json 里加 { "plugin": ["@magpie-community/opencode-tabbit-auth"] },
再 opencode auth login。
提供者id: tabbit
这不是Tabbit的官方API。它使用Tabbit自己的web应用程序的端点 呼叫,使用应用程序保留的登录,一个人在自己的机器上。
登录
塔比特的签到是a token cookie: RS256 JWT,由
web.tab-browser.com 与一个 7天 的生活。两种方式:
| 方法 | 它是做什么的 |
|---|---|
| 阅读Tabbit浏览器登录 (macOS) | 查找Tabbit浏览器保存的cookie存储(~/Library/Application Support/Tabbit Browser/Default/Cookies),表示 token ,并使用下的登录密钥链中的密码对其进行解密 Tabbit Browser Safe Storage. 没有什么是手工复制的;浏览器不需要关闭——数据库在读取之前会被复制。 |
| 粘贴制表符 | 对于第一种方法无法到达的任何东西(Windows或Linux,保存在其他地方的浏览器配置文件)。在Tabbit浏览器中打开 web.tabbit.com 然后阅读 token Cookie来自开发者工具;整个粘贴。 |
粘贴的值可以是裸JWT,也可以是整个JWT name=value; name=value 饼干
字符串。帐户id是从令牌本身读取的,因此不需要读取其他内容
被粘贴。
没有刷新端点。当代币用完(7天),喜鹊就会出现 该帐户需要再次登录,并且第一种方法需要再登录一次 点击。
macOS。 读取桌面的cookie是为macOS实现的。在 在Windows上,存储是dpapi加密的,而在Linux上,它使用不同的存储 关键的;这两件事在这里都没有做到。在这些平台上,方法拒绝和命名 平台,和粘贴方法是一种使用。
模型
目录来自这个帐户:
GET /proxy/v1/model_config/models?a=0&scene=chat -同样叫兔兔
应用程序。一个模型的 Id是目录的 display_name,逐字
(DeepSeek-V4.1-Flash, GLM-5.3-Flash),因为这就是turn的名字
被问及。
| 目录字段 | 变成了 |
|---|---|
display_name | 模型id和名称 |
supports_images | 行上的图像输入 |
support_thinking | 推理标志(思维)到达 reasoning_content) |
model_access_type | free_unlimited / free_metered / premium_only |
hidden | 被忽略了,因为应用程序把它忽略了 |
客户端工具已关闭 (toolcall: false). 目录的 supports_tools
意味着Tabbit 自己的 服务器端工具——浏览器和搜索——不是工具和
代理声明:请求调用客户端声明的工具的回合回答它已经有了
没有这样的工具。使用工具的代理应该通过喜鹊的网关工具
代替。
限制不公布 Tabbit。已知的是硬编码的
(DeepSeek-V4.1-Flash 和 DeepSeek-V4-Pro: 1M上下文);一切
接受默认值(TABBIT_CONTEXT, TABBIT_OUTPUT(128k / 32k)。短暂的过去
真正的极限是兔比特自己的错误。
溢价模型 回答 403 使用代码 492 免费账户。这个
仅限免费模型 切换到提供商的选项,将它们排除在
列出清单,而不是让他们失败。
每日签到(ebi)
Tabbit的签到是桌面宠物的活动,它会继续运行
/api/commerce/activity/v1/sign-in -相同的两个调用浏览器:
GET /api/commerce/activity/v1/sign-in/status?scene_codes=desktop_pet
POST /api/commerce/activity/v1/sign-in {request_no, scene_codes:["desktop_pet"]}
这个插件实现了喜鹊的 auth.checkin 钩,所以它出现在哪里
WorkBuddy的: 设置→使用→插件→按键,之后默认开启
你翻转它,然后喜鹊每天运行一次每个账户,然后抽取
账户卡上的结果。
它首先读取状态(free),然后表示活动是否打开(open) 只有在没有签名的日子才会提出索赔。这是兔兔的回答 成为:
| Tabbit说 | 卡片显示 |
|---|---|
signed_today: true | 完成 (根本没有发出索赔) |
sign_in_result: "signed" | 声称,以及它所授予的用法和日计数 |
sign_in_result: "already_signed" | 完成 (一场比赛,而不是失败) |
activity_open: false | 不活跃的 |
| 现场没有结果 | 没有资格 |
| 还有别的词吗? | 失败的,用塔比特自己的话来形容 |
desktop_pet 服务接受的唯一场景是——每出现一个其他的名字
回来 SIGN_IN_SCENE_UNSUPPORTED. 宠物本身需要 required_days (3)
在它被采用之前,所以一个签名日也报告了条纹
(1/3 days).
一个 sign_in_result 这个插件还没有被报告为失败
一个错误的“声称”比你能做到的失败更糟糕
阅读。
用法
GET /api/commerce/quota/v1/usage 给出周期的零用钱,其中
使用卡显示为 循环使用 -一个百分比,表示周期何时重启
(兔兔的周期是每周一次,以北京时间命名)。
一个回合是如何发送的
loader() 双手喜鹊 fetch ,重写 chat/completions 到
Tabbit的应用程序进行了三个调用:
POST /api/v3/chat/rooms → a room (the conversation)
POST /api/v3/chat/rooms/<room>/runs → the turn: { content, selected_model }
POST /api/v3/chat/rooms/<room>/join → text/event-stream
流被写回OpenAI块: assistant_message_delta →
choices[].delta.content, event_message_chunk(thinking) →
reasoning_content, run_completed → finish_reason: "stop". 一个转折
结束了没有 run_completed 或 run_failed -水流切断,转弯时机
Out—作为错误事件返回,而不是作为简短的回答返回:代理会返回
否则以半句或空句作答。转弯也会超时
发送 chat/stop,因此它停止使用该帐户的零用钱。
对话历史 住在房间里。每次喜鹊会议都有一个
房间(chat.headers 携带会话id),因此是会话内的后续操作
只发送新消息,并将其挂在前一个答案的id -房间上
不会重放到提示符中。请求的文字记录不能继续
房间(一个新的会话,一个编辑的历史,一个房间的兔子重置)得到一个新的
房间里的整个笔录被平摊成一个提示;测量,模型
以前面的回合为背景回答最后一个问题。
maxConcurrency 是 1兔兔一次回答一个问题。
正在处理这个包
从这个源代码树的签出,或者从发布的包中:
magpie plugin add . # this checkout; the community list has the package
magpie plugin login tabbit # or: pick the provider in the app
magpie provider test tabbit
magpie models tabbit
在OpenCode中,添加 @magpie-community/opencode-tabbit-auth 下 plugin 和
登录 opencode auth login。
发展
node --test tests/*.test.mjs # Bun: `bun test`. Every hook, a synthetic
# cookie store, a replayed SSE turn
node scripts/check.mjs # loads the hooks the way magpie and OpenCode do
测试从不触及网络。 tests/plugin.test.mjs 塔比特四岁了
端点; tests/sse.test.mjs 重放已录制的回合,包括重新加入
快照和一个转弯缩短; tests/cookie.test.mjs 密封和拆封a
合成铬 v10 blob。
值得了解的限制
- 一个回合是一个网络应用的回合:第一个文本需要几秒钟,而一个回合则以一秒的速度运行 时间。
- Tabbit保留了房间自己的历史,所以一个扁平的提示是备用的 路径,不是正常的路径。超过模型极限的非常长的转录本 兔兔的呼唤,它用自己的错误回应。
- 目录调用在没有有效令牌的情况下应答;一个令牌,真的
“过期”在第一回合出现(
401 请先登录),标记该帐户。