按规则路由
规则按模型、网关密钥、输入规模、是否携带工具或图片等请求属性匹配,将请求发往某个上游或策略组、改写其参数,或拒绝请求。客户端与上游的接口格式不同时,请求在 Anthropic Messages、OpenAI Chat Completions、OpenAI Responses 与 Gemini 之间转换。
采用 MIT 许可证的 Rust crate 与 twcore 二进制。twcore 是 ThinkWatch Lite 内置的网关,也可以作为 systemd 服务独立运行在 Linux 服务器上,由 ThinkWatch Lite 通过加密的控制通道远程管理。ThinkWatch 企业版使用其中的格式转换、防护、熔断与 Bedrock crate。
twcore inittwcore checktwcore serve功能
规则按模型、网关密钥、输入规模、是否携带工具或图片等请求属性匹配,将请求发往某个上游或策略组、改写其参数,或拒绝请求。客户端与上游的接口格式不同时,请求在 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。
tw-dialect · tw-guard · tw-breaker · tw-bedrock ThinkWatch 企业版同样使用 tw-types · tw-engine · tw-pricing · tw-yaml · tw-secret · tw-watch tw-api · tw-link tw-config · tw-store · tw-observe 单机实现 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 # 在真实二进制上覆盖每条路径 允许在其基础上构建、嵌入并再分发。