1. 从 trueforge 的 Ollama 端点说起:本地能跑,不等于一直该本地跑
在 trueforge 的模型目录里把 Ollama 端点写成http://127.0.0.1:11434/v1之后,聊天能通,但 agent 一遇到长上下文或工具调用就容易卡住。这时可以用 TaoToken 做云端兜底,先到 TaoToken 官网 获取 Key,再把https://taotoken.net/api配成云端模型出口。
这个判断不是拍脑袋。trueforge 的定位是“把 LLM 变成可用智能体的运行时层”,它接管的是 agent loop:模型调用、MCP 工具、技能、沙箱、审批、上下文管理、会话状态。你只要把模型端点配进去,流式输出、会话持久化、工具认证、代码隔离、人工检查点这些脏活它都替你跑。也正因为它接管得深,模型出口一旦配错,影响的不只是聊天体验,而是整个执行链路的合规边界。
对隐私合规工程师来说,Ollama 进 trueforge 的第一价值很明确:默认端点指向127.0.0.1,数据不出网。原始工单、内部代码片段、数据库 schema、客户标识信息,都可以留在本地推理进程里。第二个价值是成本可控,本地模型不按 token 计费。但问题也在这里:本地模型不是万能。7B、14B 级别的模型在长文档归纳、复杂工具参数生成、多轮函数调用上,经常出现格式跑偏、参数瞎编、上下文截断。你让它查内部文档,它可能返回一个看起来像 SQL 但表名不存在的字符串;你让它根据报错栈定位问题,它可能把异常链读反。
所以真实落地时,合理的架构不是“所有请求都本地”或“所有请求都云端”,而是本地优先、云端兜底。本地 Ollama 负责敏感数据和确定性任务,TaoToken 负责需要外发时 agent 的模型调用。注意这个“需要外发时”很关键:Token 消耗方是 agent 真正外发的模型调用,不是 trueforge 自己的运行日志,也不是本地 Ollama 的 token 统计。你要在评审文档里写清楚:哪些字段允许出网、出网前经过哪些脱敏、云端返回结果是否落盘、日志保留多久。
获取 Key 的路径不要绕。直接访问 TaoToken 官网,按控制台指引拿到YOUR_API_KEY。然后在 trueforge 的模型配置里新增一个 OpenAI 兼容 provider,Base URL 填https://taotoken.net/api。注意,Base URL 是工具配置项,不加 UTM 参数;官网链接才带 UTM,用于区分入口来源。这个细节看起来小,但在企业审计里很重要:配置文件和日志里不应该混入营销参数,否则排障时容易把 base URL 复制错。
还要先回答标题里的问题:TaoToken 负责云端兜底吗?负责,但它只负责“模型调用出口”这一段。它不会替你判断数据等级,不会自动脱敏,也不会阻止你把生产库连接串塞进 prompt。云端兜底是否合规,取决于你在 trueforge 路由层写了什么规则。把 Ollama 和 TaoToken 都注册进去只是第一步,第二步是明确路由条件:默认走本地,公开数据可走云端,敏感数据禁止外发,工具调用失败时才允许把脱敏后的上下文发到云端重试。
2. Ollama 本地端点与 TaoToken 云端端点对照:字段、流向、合规点
在 trueforge 里配置模型,本质上就是告诉运行时:调哪个 base URL、带什么认证、用哪个模型标识。Ollama 和 TaoToken 都兼容 OpenAI 风格接口,所以可以放在同一套 provider 体系里,但它们的合规属性完全不同。下面这张对照表建议直接放进你的设计文档。
| 维度 | Ollama 本地端点 | TaoToken 云端端点 |
|---|---|---|
| Base URL | http://127.0.0.1:11434/v1 | https://taotoken.net/api |
| 认证方式 | 通常无需 Key,或本地自定义 | Authorization: Bearer YOUR_API_KEY |
| 模型标识 | ollama list中的名称,如qwen2.5:14b | 从模型对话页复制的模型 ID |
| 数据流向 | 进程内 / 本机回环,不出网 | 经 HTTPS 发往云端推理服务 |
| 计费方 | 本地算力,无 token 账单 | 按实际外发 token 计费 |
| 适用任务 | 敏感数据、内部代码、确定性短任务 | 长上下文、复杂工具调用、高质量兜底 |
| 合规风险 | 端口暴露、模型误加载、日志落盘 | 外发字段、留存策略、供应商审计 |
| 故障表现 | 首 token 慢、上下文截断、函数调用弱 | 401、模型名错误、网络策略拦截 |
配置时最容易混淆的是路径。Ollama 有两套接口:原生接口和 OpenAI 兼容接口。trueforge 如果按 OpenAI 兼容方式接入,Base URL 应该写http://127.0.0.1:11434/v1,而不是http://127.0.0.1:11434/api/chat。后者是 Ollama 原生聊天接口,路径和请求体格式不同,直接填进去可能出现 404 或解析失败。
TaoToken 侧统一用https://taotoken.net/api作为出口。你可以先用 curl 验证 Key 和模型 ID 是否可用:
curl -X POST https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "YOUR_MODEL_ID", "messages": [ {"role": "user", "content": "只回复 pong"} ], "stream": false }'本地 Ollama 也可以做同样验证:
curl -X POST http://127.0.0.1:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen2.5:14b", "messages": [ {"role": "user", "content": "只回复 pong"} ], "stream": false }'两个都通之后,再把它们写进 trueforge 的模型配置。下面给出一份通用 YAML 示例。不同版本的 trueforge 字段名可能略有差异,但核心结构不变:两个 provider、一个默认路由、一个 fallback、若干条数据分级规则。
providers: - id: local-ollama type: openai-compatible base_url: http://127.0.0.1:11434/v1 api_key: ollama default_model: qwen2.5:14b tags: - local - private - id: taotoken-cloud type: openai-compatible base_url: https://taotoken.net/api api_key: ${TAOTOKEN_API_KEY} default_model: YOUR_MODEL_ID tags: - cloud - fallback routing: default: local-ollama fallback: taotoken-cloud rules: - match: data_class: public use: taotoken-cloud - match: data_class: internal use: local-ollama - match: tool_call_failed: true use: taotoken-cloud这里的环境变量TAOTOKEN_API_KEY就是你在控制台创建的YOUR_API_KEY。不要把 Key 硬编码进 YAML 再提交到 Git。企业环境里建议用 secret manager 注入,或者至少用.env加.gitignore。另外,base_url: https://taotoken.net/api不要加 UTM,UTM 只用于官网访问统计,不用于 API 调用。如果你在 API 配置里看到?utm_source=...,那大概率是复制错了链接。
3. trueforge 路由配置:本地优先、云端兜底的落地写法
路由配置的目标不是“让云端更快”,而是“让外发可控”。很多团队一上来就把默认模型设成云端,结果本地 Ollama 成了摆设,所有 prompt 都出网,合规评审直接卡死。更稳的做法是把本地设为默认,云端只在明确条件下触发。
第一种落法是显式切换。trueforge 的聊天 UI 或 HTTP API 在发请求时指定 provider。默认用local-ollama,当用户或任务标记为“公开资料分析”“复杂代码重构建议”“长文档摘要”时,再切到taotoken-cloud。这种方式最直观,适合人工操作场景,但依赖调用方自觉。
第二种落法是规则路由。在 trueforge 的 routing 规则里按data_class、tool_name、context_length、tool_call_failed等字段判断。例如:内部知识问答默认走 Ollama;只有data_class=public的公开文档才走 TaoToken;当本地模型返回的函数调用参数校验失败时,允许把“脱敏后的工具 schema + 用户问题”发到云端重试,但禁止把原始工具返回值发出去。
第三种落法是代理层兜底。如果 trueforge 当前版本不支持复杂路由,可以在它前面放一个自建网关。网关只做两件事:根据请求头或元数据判断数据等级;把允许外发的请求转发到https://taotoken.net/api。这里要强调:网关必须是自建、可审计、无状态的,不能是灰色中转。它的日志要记录请求 ID、模型 ID、外发字段白名单、token 数量,但不记录完整 prompt 原文,除非数据等级为公开。
下面是一段更贴近 trueforge 配置思路的 JSON 示例,可以按你的版本映射:
{ "models": { "default": "local-ollama", "providers": { "local-ollama": { "type": "openai-compatible", "baseUrl": "http://127.0.0.1:11434/v1", "apiKey": "ollama", "model": "qwen2.5:14b", "timeoutMs": 120000 }, "taotoken-cloud": { "type": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKeyEnv": "TAOTOKEN_API_KEY", "model": "YOUR_MODEL_ID", "timeoutMs": 60000 } }, "fallback": { "enabled": true, "from": "local-ollama", "to": "taotoken-cloud", "conditions": [ "tool_call_invalid", "context_too_long", "local_timeout" ] } } }注意,fallback 不是无条件的。tool_call_invalid触发时,只把“模型生成失败的函数名和参数结构”发到云端,不要带原始业务数据。context_too_long触发时,先本地压缩,再发压缩后的摘要。local_timeout触发时,如果数据等级是敏感,宁可返回失败,也不要自动切云端。这一点必须在配置里写死,不能交给模型判断。
你还需要在 trueforge 的审批点里加一条:当 agent 准备调用云端 provider 时,如果数据等级为 internal 及以上,必须人工确认。trueforge 的人工检查点能力正好可以用在这里。审批界面里展示:外发模型、外发字段列表、脱敏结果预览、预计 token 数。审批通过后再调用 TaoToken。这样既保留了云端兜底的能力,又不会让敏感数据在无人值守时出网。
4. 数据不出网边界:隐私合规工程师要写进评审文档的四级清单
“数据不出网”不是一句口号,而是一组可验证的边界。建议按四级分类写进评审文档,并映射到 trueforge 的路由规则。
| 数据等级 | 典型内容 | 本地 Ollama | TaoToken 云端 | 日志要求 |
|---|---|---|---|---|
| 公开 | 官网文档、公开博客、开源代码 | 可选 | 允许 | 记录 token 和模型 |
| 内部 | 内部规范、非敏感代码、工单标题 | 默认 | 脱敏后允许 | 记录 prompt hash |
| 敏感 | 客户标识、合同、源码核心逻辑 | 必须 | 禁止 | 仅本地审计 |
| 受监管 | 个人金融、医疗、身份信息 | 必须 | 禁止 | 本地加密留存 |
边界一:Ollama 监听地址。本地模式建议只绑定127.0.0.1。如果你把OLLAMA_HOST设成0.0.0.0:11434,同一局域网内其他机器就能访问你的模型端点,数据不出网的前提就被打破了。企业内网共享推理另说,但那时要有反向代理、认证和审计,不能裸奔。
边界二:trueforge 本地模式不要直接暴露公网。本地模式通常是单进程加 SQLite,默认没有登录,数据存在本地文件。适合个人试用和本机开发,不适合直接给团队共享。如果要多人使用,走托管模式,配 Postgres + Redis 和 OIDC 登录,再把模型出口固定在受控网关后面。
边界三:禁止 MCP/Agent 直连 Oracle 或生产库。让 agent 通过 MCP 工具直接查生产库,风险不在模型本身,而在权限过大和审计缺失。更安全的做法是:SQL 由读者在本地终端或跳板机执行,把脱敏后的查询计划、表结构说明、报错信息交给模型分析。模型可以给优化建议,但不直接触达生产数据。trueforge 的沙箱能力可以用在代码执行上,但数据库连接串不要进沙箱,也不要写进 prompt。
边界四:脱敏必须发生在 trueforge 调用云端之前。下面这个 Python 函数只是一个示例,演示在路由到 TaoToken 之前如何做字段白名单和外发前检查:
import hashlib import re SENSITIVE_PATTERNS = [ r"\b\d{17}[\dXx]\b", # 身份证 r"\b1[3-9]\d{9}\b", # 手机号 r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b", # 邮箱 r"(?i)(password|secret|token|api[_-]?key)\s*[:=]\s*\S+", ] def redact(text: str) -> str: for pattern in SENSITIVE_PATTERNS: text = re.sub(pattern, "[REDACTED]", text) return text def build_cloud_payload(user_question: str, context: str, data_class: str): if data_class in ("sensitive", "regulated"): raise PermissionError("该数据等级禁止外发到云端模型") safe_context = redact(context) payload = { "model": "YOUR_MODEL_ID", "messages": [ {"role": "system", "content": "你是内部知识助手,只基于给定上下文回答。"}, {"role": "user", "content": f"问题:{user_question}\n上下文:{safe_context}"}, ], "stream": False, } payload["audit_hash"] = hashlib.sha256(safe_context.encode()).hexdigest() return payload这段代码的重点不是正则多全,而是流程:先判断数据等级,再脱敏,再计算审计哈希,最后才允许调用 TaoToken。Token 消耗发生在最后一步,也就是 agent 真正外发的模型调用。本地 Ollama 的调用不计入 TaoToken token,但本地日志也要记录,方便对账和排障。
5. 排障:trueforge 配了 Ollama 却走云端,或云端 401 的常见原因
第一个高频问题:Ollama 端点写错。http://127.0.0.1:11434/api/chat是原生接口,http://127.0.0.1:11434/v1才是 OpenAI 兼容接口。trueforge 按 OpenAI 兼容 provider 接入时,必须用后者。写错后常见报错是 404、invalid JSON、missing model。
第二个问题:模型名不匹配。Ollama 的模型名必须和ollama list输出一致,包括 tag。qwen2.5和qwen2.5:14b可能被当成两个模型。trueforge 配置里写qwen2.5:14b,但本地只拉了qwen2.5:7b,请求就会失败。云端模型 ID 也一样,必须从 TaoToken 的模型对话页复制,不能凭记忆写。
第三个问题:本地超时太短。Ollama 首次加载模型时可能几十秒才返回首 token,如果 trueforge 的超时设置是 10 秒,就会触发 fallback,看起来像“本地不可用”,实际是超时。把本地 provider 的timeoutMs调到 120000 或更长,并开启流式输出,能缓解大部分误判。
第四个问题:函数调用不兼容。小模型对 tool call 的 JSON schema 遵循能力弱,可能返回自然语言而不是结构化参数。trueforge 会认为工具调用失败。这时可以走云端兜底,但只把工具定义和失败原因发出去,不要把工具执行结果带出去。云端重试成功后,返回的参数仍由本地 trueforge 执行,数据边界不破。
第五个问题:云端 401。先检查YOUR_API_KEY是否复制完整,再检查请求头是否是Authorization: Bearer YOUR_API_KEY。如果 Key 正确但仍 401,检查 Base URL 是否误写成带 UTM 的官网链接。API 出口应该是https://taotoken.net/api,不是https://taotoken.net/?utm_source=...。官网链接用于获取 Key,API 调用用纯净 Base URL,两者不要混。
第六个问题:日志里看到云端调用,但以为只有聊天会触发。trueforge 的 agent loop 里,上下文压缩、工具参数修复、子智能体都有可能触发模型调用。如果这些环节走了云端,token 消耗方就不只是用户提问。你需要在路由规则里给不同调用类型打标签,例如chat、tool_repair、context_summarize,再分别设置是否允许外发。最稳妥的策略是:tool_repair和context_summarize默认走本地,只有公开数据才允许走云端。
6. 云端出口验证:Claude Code、Codex 与 CC Switch 的正确配置姿势
trueforge 跑通后,你可能还要用 Claude Code 或 Codex 验证 TaoToken 这个云端出口是否稳定。注意,Claude Code 和 Codex 的配置方式不同,不能把ANTHROPIC_*套到 Codex 上。
Claude Code 使用settings.json,走 Anthropic 兼容环境变量:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_MODEL_ID" } }Codex 使用config.toml,走 OpenAI 兼容 provider 写法:
model = "YOUR_MODEL_ID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat"设置好环境变量:
export TAOTOKEN_API_KEY="YOUR_API_KEY"如果你用 CC Switch 管理多个供应商,记住三件套:供应商名称填TaoToken,Base URL 填https://taotoken.net/api,API Key 填YOUR_API_KEY。不要填官网带 UTM 的链接,也不要填模型对话页面地址。CC Switch 只负责切换配置,不负责数据脱敏,所以敏感项目仍然要走本地 Ollama 或 trueforge 的本地路由。
验证时建议按顺序做三步。第一步,用 curl 直接打https://taotoken.net/api/chat/completions,确认 Key 和模型 ID 可用。第二步,在 Claude Code 或 Codex 里发一条简单消息,确认流式输出正常。第三步,回到 trueforge,把云端 provider 的 fallback 条件打开,用一条公开数据测试自动兜底。三步都通过后,再接入内部知识库和工具链。
这里再强调一次边界:Claude Code 的ANTHROPIC_*只适用于 Claude Code;Codex 用config.toml,不要混用环境变量。trueforge 的模型配置则独立于这两者,它的 Base URL 同样是https://taotoken.net/api,认证用YOUR_API_KEY。三套配置可以共用同一个 Key,但数据分级和路由规则要分别写清楚。
7. 把云端兜底用成“可控出口”而不是“默认外发”
回到最初的问题:Ollama 本地模型进 trueforge,TaoToken 负责云端兜底吗?答案是负责,但前提是你把路由、脱敏和审批配好。trueforge 负责把 agent 跑稳,Ollama 负责让敏感数据不出网,TaoToken 负责在需要外发时提供稳定的云端模型出口。三者各管一段,合起来才是一个可审计的 agent 运行时。
隐私合规工程师最该盯住的不是“有没有用云端”,而是“什么条件下用了云端、外发了哪些字段、token 花在哪个调用上”。建议在评审文档里固定四个指标:本地调用占比、云端调用触发原因分布、外发字段白名单命中率、每次外发的审计哈希。只要这四个指标可控,云端兜底就不是风险,而是弹性。
如果你还没开始配,建议按这个顺序走:
- 先到 模型对话 确认可用模型和调用方式,把模型 ID 记下来。
- 需要长期跑 coding agent 或高频调用,看 Coding Plan,选适合的用量档位。
- 到 API Keys 创建
YOUR_API_KEY,不要硬编码进仓库。 - Claude Code 用户再看 Claude Code 文档,确认
ANTHROPIC_BASE_URL和认证字段的写法。 - 回到 trueforge,把本地 provider 设为默认,把
https://taotoken.net/api设为 fallback,再按数据等级加路由规则。
最后提醒一句:不要让 agent 通过 MCP 或任何工具直连 Oracle、MySQL、Postgres 生产库。SQL 和命令由读者在本地终端执行,模型只分析脱敏后的结构和报错。trueforge 的沙箱、审批、上下文管理可以帮你把 agent 跑稳,但数据边界必须由你在配置层写死。云端兜底是能力,不是默认路径。把这句话写进评审文档,后面会省掉很多解释成本。