dsh-tako
从 Tako 公开模型目录把聊天模型接入官方 llm-pi-ai,实时刷新并按尺寸标签写入上下文窗口,支持浏览器一键登录,把 cr_ 密钥存入 DSH 凭据。
安装
dsh plugin --profile web add dsh-tako
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-tako
[中文](#中文) | [English](#english)
中文
让官方 DeepSeek Harness CLI(@deepseek-ai/dsh)直接使用 Tako 的模型,并带上正确的上下文窗口和图片输入能力。装一个插件即可,不需要手写 provider 配置。
Issue 由机器人处理。 它用维护者账号回复,评论带 bot 标记。收到后会说「收到,会改。」,能修的会改并发版。不要贴 API key。桌面应用的问题请开到 dsh-tako-desktop。开一个 issue。
它做了什么
- 启动时读取 Tako 公开的模型目录
GET https://tako.shiroha.tech/api/pricing(不需要 API key),之后按间隔刷新(默认 30 分钟)。 - 只保留可以走 OpenAI 兼容接口聊天的模型:去掉生图、语音、搜索等非聊天模型、
jev-*,以及 Tako 限定只能在 Claude Code 里用的模型。 - 上下文窗口取自目录的结构化字段;没有时取
272K、1M、1.05M这类精确的容量标签(31B这种参数量标签会被忽略);都没有就用defaultContextWindow。带Vision标签的模型声明支持图片输入。 - 把结果写成一个 OpenAI 兼容 provider:官方
llm-pi-ai插件配置里的providers.tako。之后请求、流式输出、重试、凭据都走 dsh 官方代码路径,插件本身不实现任何模型适配器。 - 在 Web 界面侧边栏加一个带触手小章鱼的「Tako 控制台」,以及底部额度条(有套餐显示 5h / 周剩余进度条 + 钱包余额)。详见 [Tako 控制台](#tako-控制台)。
- 注册 Tako 图像生成/编辑工具;省略
model时使用公开目录中的gpt-image-2.5-sunburst,显式传入其他模型时保留调用者选择。
安装
需要 Node.js 22+。
npm i -g @deepseek-ai/dsh # 装进 web profile(浏览器界面) dsh plugin --profile web add dsh-tako
dsh plugin 会调用 pnpm,需要 pnpm 在 PATH 上。
上面的 dsh plugin --profile web add dsh-tako 从 npm 安装;要锁定版本写成 dsh-tako@0.2.0。每个版本的 GitHub Release 也附带打包好的 .tgz,可以直接按 URL 安装(端到端测试验证过 http URL 安装方式):
dsh plugin --profile web add https://github.com/tako-dev/dsh-tako/releases/download/v0.2.0/dsh-tako-0.2.0.tgz
从源码安装:
git clone https://github.com/tako-dev/dsh-tako && cd dsh-tako npm ci && npm run build && npm pack dsh plugin --profile web add ./dsh-tako-0.2.0.tgz
不要用 dsh plugin add github:tako-dev/dsh-tako:git 安装拿到的是源码,没有构建好的 lib/。
安装时 pnpm 可能提示 missing peer @deepseek-ai/schemastery,这是预期的:运行时这个 peer 由 dsh 安装本身提供。
然后配置 Tako API key,三种方式任选:
- 一键登录(推荐):Web 界面「设置 → 模型」的 Tako 卡片上点「通过浏览器登录 Tako」,或在终端运行
npx dsh-tako login,详见下面的[一键登录](#一键登录); - 在「设置 → 模型」编辑 Tako,手动粘贴 API 密钥并保存(保存在
$DSH_HOME/.credentials.yaml,引用名TAKO_API_KEY); - 或者在启动前设置环境变量
TAKO_API_KEY。
启动:
dsh web
在输入框的模型选择器里会出现 Tako 分组。没有配置 key 时选择器里看不到 Tako 的模型(「设置 → 模型」里仍会列出 Tako,显示密钥缺失)。
dsh plugin --profile <名字> add dsh-tako 对任何 profile 都能装;但只装了 dsh-base 的自建 profile 没有界面,要用浏览器界面请装进 web。headless 等其他内置 profile 用同样的命令安装(未逐一验证)。
更新
插件装进 profile 后由 pnpm 管理。启用 profile 配置/清单 HMR 时,新增组合包可以热加载;这只说明插件已挂载,不代表模型目录同步完成。更新已加载插件的代码不保证重新 import,更新完成后重启 dsh 才加载新版本;未启用 HMR 时,新增插件也需重启。
- 控制台(推荐):打开「Tako 控制台」的「更新」卡,落后时点「立即更新」。插件会把最新版装进当前 profile,装完提示重启 dsh。
- 命令行:
npx dsh-tako update [--profile web],同样会安装并打印重启提示。 - 退路:仍可复制并手动执行
dsh plugin --profile web add dsh-tako(锁版本写dsh-tako@0.4.0;用 GitHub Release 的 tgz URL 安装的,换成新版本的 URL 即可)。
检查固定走 registry.npmjs.org(发布走官方源,不读本机 npm 配置,避免镜像同步延迟造成误报),结果在插件内存里缓存 1 小时;检查失败只显示灰字提示,不影响其他卡片。启动时不会静默自升。
一键登录
在浏览器里登录 Tako 并确认授权,插件拿到一个新的 cr_ key,通过 dsh 官方的凭据服务(ctx.credentials.set,和「设置 → 模型」保存密钥是同一条路径)写进 $DSH_HOME/.credentials.yaml,凭据名就是插件配置的 apiKeyEnv(默认 TAKO_API_KEY)。正在运行的 dsh 下一次请求就会用上,不用重启。key 不会出现在终端或页面上,只显示 cr_**** 加末 4 位。
Web 界面:「设置 → 模型」→ Tako 卡片 →「通过浏览器登录 Tako」。会打开 Tako 授权页,确认后自动跳回,卡片显示「已登录,API key 已保存」,Tako 的状态点变绿。已有 key 时按钮变成「重新登录 Tako」。
命令行(不需要先启动 dsh,也适合 acp / headless 等没有界面的 profile):
npx dsh-tako login # 打开浏览器登录,key 存进 dsh 凭据 npx dsh-tako login --profile acp # 读取 acp profile 里 dsh-tako 的 baseURL / apiKeyEnv(默认 web) npx dsh-tako login --no-open # 不自动开浏览器,只打印授权链接 npx dsh-tako whoami # 查看当前 key 对应的 Tako 账号和套餐 npx dsh-tako logout # 在 Tako 吊销这个 key,并从 dsh 凭据里删除 npx dsh-tako update # 把最新 dsh-tako 装进 profile,装完需重启 dsh
login 的其他参数:--port <端口> 固定回调端口(1024–65535,默认随机)、--device-name <名字> 授权页和 Tako 令牌列表里显示的设备名(默认 dsh-tako@<主机名>:取 hostname 的第一段,去掉 .local 等域后缀,其他字符换成 -,整体不超过 32 个字符;取不到主机名时用 dsh-tako@<平台>)、--base-url、--api-key-env、--dsh <路径>(dsh 安装位置,默认找 PATH 上的 dsh,再找 npm 全局目录;也可用环境变量 DSH_TAKO_DSH)。CLI 用的是你本机 dsh 安装里的官方凭据模块(@deepseek-ai/dsh-credentials-local),所以必须能找到 dsh;DSH_HOME 照常生效。
流程细节:CLI 或 dsh 进程在 127.0.0.1 上开一个一次性回调端口(只监听本机回环地址),用 PKCE(S256)和随机 state 发起授权,等待 5 分钟(与 Tako 授权码有效期一致),收到 state 不匹配的回调会忽略并继续等待。拒绝授权、超时、换 key 失败时不写任何凭据。
注意:
- Tako 以「
tako-connect@<设备名>」命名签发的令牌,同名的旧令牌会被替换(吊销)。默认设备名带主机名,所以不同机器互不影响;同一台机器重新登录(CLI 或 Web 按钮都一样)会替换这台机器之前的 key,这是预期行为。主机名相同(或截断到 32 字符后相同)的两台机器仍会互相替换,这时给其中一台加--device-name(例如--device-name dsh-tako@work-mac)。Web 按钮固定使用默认设备名。 - 登录写入的是凭据文件,优先级高于同名环境变量;要改回用环境变量,运行
dsh-tako logout或在「设置 → 模型」里清空。 dsh-tako logout只处理凭据文件里的 key;key 来自环境变量或.env时它不会去吊销。
Tako 控制台
web profile 左侧栏是带触手的小章鱼(「Tako 控制台」),底部 footer 显示额度。点开控制台:
- 登录状态:是否已保存 key、掩码后的 key(
cr_****+ 末 4 位,明文永不下发到页面)、Tako 账号与套餐。未登录时按钮是「通过浏览器登录 Tako」;已登录时是「重新登录」和「退出」——「退出」先在 Tako 吊销这个 key(失败不阻断),再从 dsh 凭据里删除,语义与dsh-tako logout相同;key 来自环境变量时不吊销也不删除。 - 更新:对比本机版本和 npm 官方源的最新版本;落后时点「立即更新」真正安装(装完需重启 dsh),下面仍保留升级命令可复制作退路;已是最新时显示当前版本号,检查失败时只显示灰字提示。检查结果缓存 1 小时,见上面的[更新](#更新)一节。
- 套餐 / 钱包:有套餐时显示 5h 窗口和周额度的剩余百分比进度条(
user-quota,和官网套餐页同一套,已经是美元)。钱包剩余是单独一列(/api/desktop/me点数 / 500000 = $1)。两套数不要混。没套餐才只显示钱包。侧栏 footer 同一套数据,点击打开控制台。 - 模型目录:插件当前成功写入
providers.tako的模型(include/exclude/pinned/overrides过滤后的结果),列出模型名、上下文窗口、是否支持图片输入。同步阶段、尝试次数与安全错误原因显示在卡片中;失败不清空已成功写入的模型。旧运行时的 HMR 嵌套事务拒绝会明确标记为runtime-transaction,持续失败时需重启 dsh;插件无法自行修复宿主的事务实现。/api/tako.catalog返回status、attempts、refreshIntervalMs和lastError(错误码、安全消息、时间),nextSyncAt表示下次重试或常规刷新。初次未完成时面板最多每 2 秒读取一次状态,共 30 次;之后仍保留服务器给出的未来刷新计划,过期计划的检查至少间隔 1 分钟。同步成功后在下次计划刷新附近读取,也可点击“刷新目录状态”。关闭面板取消后续读取。
账号与额度状态缓存在 Host 内按完整凭据的 SHA-256 指纹区分,脱敏文本只用于显示;两把密钥末四位相同也不会共用账号缓存。明文密钥和指纹均不下发到页面,不写入缓存文件。
面板数据来自插件注册的四个路由:GET /api/tako.status、POST /api/tako.logout、GET /api/tako.catalog、GET /api/tako.update(POST
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:24,最后更新 2026-11-05