跳转到正文
ThinkWatch
开始输入以搜索文档。
Core 0.64.0 已发布→

适用于桌面与服务器的
AI API 网关引擎

采用 MIT 许可证的 Rust crate 与 twcore 二进制。twcore 是 ThinkWatch Lite 内置的网关,也可以作为 systemd 服务独立运行在 Linux 服务器上,由 ThinkWatch Lite 通过加密的控制通道远程管理。ThinkWatch 企业版使用其中的格式转换、防护、熔断与 Bedrock crate。

twcore · 网关二进制 示例
  1. $ twcore init
  2. # 生成初始的 config.yaml 及其密钥
  3. $ twcore check
  4. # 仅校验配置,不启动
  5. $ twcore serve
  6. # 启动网关与控制面
  7. ready gateway 127.0.0.1:8788 · control socket
  8. POST /v1/messages claude-code → anthropic 200 1.2 s
  9. POST /v1/responses codex → chatgpt 429 → relay 200

功能

一个二进制,就是完整的网关。

按规则路由

规则按模型、网关密钥、输入规模、是否携带工具或图片等请求属性匹配,将请求发往某个上游或策略组、改写其参数,或拒绝请求。客户端与上游的接口格式不同时,请求在 Anthropic Messages、OpenAI Chat Completions、OpenAI Responses 与 Gemini 之间转换。

首字节前的故障转移

首字节到达客户端之前,出错的上游由下一个上游替换,客户端无从察觉;此后发生的故障如实报告。出错的上游按原因暂停:余额不足、额度用完(到重置时间为止)与限流(按上游要求的等待时间)各有时长。

$0.0124

费用核算

每个请求按公开价目表(twcore 每天刷新一次)或配置中的价目表计价,并记录价格来源。估算的金额另行标注,无法计价的用量标记为未知。

出站脱敏

中转站能看到请求的全部内容。请求发出之前,其中的凭据可以替换为占位符,中转站拿不到原值;回答中重复出现时再恢复原值。

切断恶意工具调用

中转站可以改写回答,塞入让客户端执行的工具调用;下载即执行、外发凭据之类的危险调用可在流式传输中途切断。内容过滤还可删除夹带指令的隐藏字符,三项防护出厂均只记录。

加密的控制面

桌面应用与 twcore 命令通过本地 socket(Windows 上为回环端口)连接 core,也可以开启远程端口。每条控制连接都先以控制密钥完成 Noise 握手,不使用证书。

安装与部署

服务器部署

在 x86_64 或 aarch64 的 Linux 上(glibc 2.35 或更新,使用 systemd),一条命令即可安装 twcore、专用的服务用户与 systemd 服务单元。此后 macOS、Windows 或 Linux 上的 ThinkWatch Lite 通过远程控制端口连接它,网络中各处的客户端把请求发往它的网关。

在桌面上,twcore 随 ThinkWatch Lite 提供,无需单独安装。

在 Linux 服务器上安装

$ curl -fsSL https://raw.githubusercontent.com/ThinkWatchProject/ThinkWatch-Core/main/scripts/install.sh | sudo sh

服务器上运行的 core 须为 ThinkWatch Lite 要求的版本;两者不一致时,应用会显示所需的版本。安装该版本:

$ curl -fsSL https://raw.githubusercontent.com/ThinkWatchProject/ThinkWatch-Core/main/scripts/install.sh | sudo sh -s -- --version <版本号>

随后

  • twcore remote enable --allow 192.168.1.0/24 # 向指定网段开放远程控制端口
  • sudo systemctl enable --now twcore # 启动服务
  • twcore control-key # 输出 ThinkWatch Lite 连接所用的密钥
  • sudo twcore upgrade --version <版本号> --restart # 日后切换到 ThinkWatch Lite 要求的版本,升级或降级均可

读取配置的命令须以服务用户身份运行,各步骤详见部署指南。

sudo -u thinkwatch THINKWATCH_HOME=/var/lib/thinkwatch twcore …

预编译二进制

每个发布版本都提供以下五个平台的 twcore,各附 SHA-256 校验文件;Linux 压缩包另含 systemd 服务单元。twcore upgrade 用于升级单独安装的 twcore,ThinkWatch Lite 内置的那一份随应用更新。

版本 0.64.0 · 全部发布版本

从源码构建

需要 Rust 稳定版工具链(1.94.1 或更新)。生成的二进制位于 target/release/twcore。

  • $ git clone https://github.com/ThinkWatchProject/ThinkWatch-Core.git
  • $ cd ThinkWatch-Core
  • $ cargo build --release -p twcore

crate 分层

  1. 格式转换、防护、熔断与 Bedrock tw-dialect · tw-guard · tw-breaker · tw-bedrock ThinkWatch 企业版同样使用
  2. 领域逻辑 tw-types · tw-engine · tw-pricing · tw-yaml · tw-secret · tw-watch
  3. 控制面契约 tw-api · tw-link
  4. 装配 tw-config · tw-store · tw-observe 单机实现
  5. 数据面与控制面 tw-gateway · tw-control 单机实现

ThinkWatch 企业版只依赖第一组。这四个 crate 只依赖彼此,由一项测试保证;每次改动它们,CI 都会用 ThinkWatch 企业版编译一遍。任何 crate 都不依赖排在其所在组下方的组。最后两组是单机实现(SQLite、本地控制通道与可选的远程端口),有意不共享:单机 SQLite 与多租户 Postgres 差异过大,统一的抽象难以同时满足两者。

crate 分层详解

开发

测试

smoke 脚本从初始状态出发,在真实二进制上覆盖每条路径,并通过 twcore call 访问控制面。HOME 与 THINKWATCH_HOME 均指向临时目录,执行结束后自动删除。

  • cargo test --workspace # 单元与集成测试
  • scripts/smoke.sh # 在真实二进制上覆盖每条路径

MIT 许可证

允许在其基础上构建、嵌入并再分发。

在 GitHub 上查看