Terminus (Olares) router call translate 实战指南:单句、检测、语言对清单与整段对话翻译
云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载本文围绕 OlaresTerminus 开源个人云操作系统中olares-cli router call translate这一翻译调用命令展开它覆盖translate、--detect、--languages、--transcript四条数据面路由的完整用法与参数语义并结合 翻译命令源码、transcript 路由实现 与对应测试用例讲清“按段翻译”和“整段对话翻译”的本质差异、64 轮上限、id 对齐契约和失败回合的在位返回机制。读完后你可以直接从命令行完成单句翻译、语言识别、语言对核查以及把 diarizer 或会议工具产出的整份对话记录翻译成分回合、可追溯的结果。前提调用契约与版本要求translate是router call家族的一员所有调用动词共享同一份调用契约凭证、--model的取值规则、如何判读拒绝信息完整说明见 olares-router-calling.md。对翻译来说有三点与契约文档直接相关不需要 API key。Router 的/v1数据面按顺序读取三种身份sk-*Bearer 凭证、调用应用的x-caller-appid、个人的X-BFL-USER。后两种由 Olares 边缘写入因此不带任何凭证的调用会以“当前 profile”的身份到达 Router而不是匿名。脚本中希望把密钥移出进程列表时可以传--api-key sk-...或环境变量OLARES_ROUTER_API_KEY。translate是全部call动词中唯一没有--model旗标的。从 call.go 源码注释 看翻译路由本身不携带model字段Router 会按调用解析翻译默认模型default-translate这一默认类别存在于 Router 的注册表中但没有任何调用者可以指定它所以 CLI 干脆不提供--model——“请求里根本放不下的值做成旗标只会静默地什么都不做”见 call_translate.go 头部注释。适用前提router全部动词要求 Olares 1.12.7Router 以 Market 列表中的router应用形式提供且为管理员可见应用技能入口 olares-router/SKILL.md 明确给出该版本下限。想知道当前部署里翻译默认类别由谁承接用olares-cli router route list --kind default四个入口翻译、识别、语言对清单、整段对话技能文档 olares-router-call-translate.md 给出的四条基础命令是olares-cli router call translate hello --to zh olares-cli router call translate --detect ¿dónde está? olares-cli router call translate --languages olares-cli router call translate --transcript meeting.json --to en它们分别对应四个上游路由见 endpoints.go 中的定义命令形态路由请求方法语义translate text/v1/translatePOST单条文本翻译文本为位置参数或 stdintranslate --per-line/v1/translate/batchPOST逐行批量翻译按输入顺序一行一个结果translate --languages/v1/languagesGET列出当前模型服务的语言与语言对不翻译任何东西translate --detect/v1/detectPOST仅报告文本语言附置信度不翻译translate --transcript file/v1/translate/transcriptPOST整段对话翻译逐回合按 id 返回结果参数上的核心规则只有一条--to在翻译时必填--from可省——省略时由模型自行检测源语言。源码 call_translate.go 中请求结构体把这一点写得很直白From是omitempty并附注释说明“短文本上检测最不可靠值得显式命名源语言”。若未提供--to命令会在本地直接报错并提示先跑--languages查看该模型能服务哪些语言对。--languages先于一切翻译动作的检查--languages是面对陌生部署时应当第一个跑的命令。一个模型能服务的语言对是该模型的属性不是“翻译”这件事的属性模型没被构建来处理的语言对会被拒绝而不是绕道英语近似见 call_translate.go 头部注释。响应结构为languages语言列表加pairsfrom/to对renderLanguages 渲染时会按源语言分组、以FROM/INTO两列表格输出——因为“某个语言能翻成哪些语言”才是使用者真正要问的问题。--detect带置信度的语言识别--detect读取一条文本并报告其语言不翻译。响应结构 detectResponse 携带language和可选的confidenceCLI 默认输出形如es 93% sure的一行-o json则原样输出上游响应。注意--languages与--detect互斥同时传入会被本地拒绝call_translate.go#L125-L126。单条与逐行翻译--per-line 与批量上限不带--per-line时位置参数或以空格拼接后的参数整体作为一条文本走/v1/translate没有参数时读 stdin但 stdin 是交互终端时会被直接拒绝——“终端里没有文本是一个错误而不是悬停邀请”见 readPromptArgs 的注释。--per-line走/v1/translate/batch一次请求翻译整个字符串文件且“哪一行是哪一行”不丢失。translateLines 中有两个值得注意的本地约束批量上限 64 行。常量translateBatchLimit 64是上游自己的上限在本地先检查是为了让管道进长文件的调用者收到“用split -l 64之类方式拆分输入”的提示而不是整批被拒、一行都没翻出来。空行丢弃、保持顺序。readLines 按行读取并去掉空行扫描缓冲区上限放大到 4 MiB“这里的一行可能是整份文档”。输出逐行打印顺序与输入一致因此结果可以直接粘贴回输入文件对应的位置。--html旗标声明文本是 HTML保留标记、只翻译标记之间的内容请求结构体中的HTML字段会原样带给上游。典型的管道用法来自命令自身的帮助文本cat strings.txt | olares-cli router call translate --to de --per-line olares-cli router call translate --to en --from ja notes.txt--transcript把对话当“一段”而不是“一行一行”来翻译--transcript file是第四条路线也是唯一不是逐条文本处理的路由它把整段对话作为一个 stretch 翻译模型在翻译每一行之前会先读该行前后的回合然后按发送时携带的 id、每回合一条结果作答——响应从不比请求更短因此不会有任何一条译文错位到错误的回合上call_translate_transcript.go 头部注释。凡是 diarizer 或会议工具产出的东西都该走这条路。对比 [--per-line](https://link.gitcode.com/i/c6335e7c46cfe3f929abbfa17de7e9b1#L15-L18 的文档表述)同一份文件用--per-line翻译时每个回合在“周围没有任何东西”的状态下被独立翻译——这正是两词回复被译成 yes 而本意是 right 的原因。两条路线的差异就是这条路由存在的理由所以只有当各行确实互不相关时才用--per-line事实上 CLI 也强制二者互斥同时传入--transcript和--per-line会在本地报错。输入文件两种形态都接受readTranscript 接受两种 JSON 形态判断依据是文件首个非空白字符是否为[裸segments数组——diarizer/会议工具直接产出的机器文件[ {id: 1, speaker: A, text: 对}, {id: 2, speaker: B, text: 我们下周二上线} ]携带segments的对象可另附context、background、glossary{ from: zh, to: en, segments: [ {id: 1, speaker: B, text: ready?}, {id: 2, speaker: A, text: 对} ], context: {before: [{speaker: B, text: ready?}]}, background: sprint review, glossary: [{source: 沉浸式, target: immersive}] }要求调用者先编辑机器产出的文件才能翻译被实现者明确视为反模式——两种形态都读测试 TestATranscriptIsReadWhicheverShapeItArrivedIn 锁定该行为。几个字段语义上的细节值得注意segments里每回合的id是调用者自己的命名原样返回因此必须在一次请求内唯一speaker可选只用于渲染输出。context.before是模型只读不译的行——transcriptLine 刻意没有id“不能被命名的行就不应被期望返回”这正是上下文不会混进答案的机制。路径传-时从 stdin 读取。64 轮上限与拆分策略transcriptSegmentLimit 64与批量翻译的上限一致checkTranscript 在发送前本地校验。超限时命令会拒绝请求并直接给出拆分方法把转录拆开、把每一部分的尾部带进下一部分的context。这是文档中“64 turns is the ceiling, and splitting means carrying the tail of each part into the next onescontext”的源码出处——TestATranscriptLongerThanOneRequestSaysHowToSplitIt 断言拒绝信息必须包含拆分指引。本地校验另外拒绝两类请求空segments“没有任何可翻译的回合”和缺失/重复的id。重复 id 在上游是一次针对整个请求的 400在本地则能精确说出“第 1 回合和第 3 回合共用了 ida”TestTwoTurnsCannotShareAnId。--background 与 --term命令行注入上下文--background和可重复的--term sourcetarget从命令行向请求注入background与glossary两个字段call_translate.go#L176-L179olares-cli router call translate --to en --transcript meeting.json \ --background sprint review \ --term 沉浸式immersive --term 灰度canaryparseGlossary 用切割每个词对两侧去空白后都必须非空否则报--term takes sourcetarget, and … is not that。这两个旗标只属于--transcript不带--transcript使用会被本地拒绝“--background和--term描述的是对话而只有--transcript翻译对话”因为单条翻译路由的请求结构里根本没有这些字段。输出对齐才是重点非 JSON 模式下renderTranscript 打印TURN/SPEAKER/TRANSLATION三列表格把答案印在它回答的回合旁边——“这条路由的要点就是对齐裸的译文列表表现不出任何对齐”。某回合翻译失败时该结果携带error字段并在原位打印为(failed: reason)随后在表格末尾汇总2 of 60 turns failed and are marked above. The rest are translated and in place; re-send only the failed ids.即失败的回合带着失败原因留在原位整页其余部分仍然可用修复方式是只重发失败的那些 id而不是整份重译。测试 TestAFailedTurnIsPrintedInPlaceRatherThanDropped 锁定“原位打印而非丢弃”的行为。-o json则直接输出上游的{segments:[...]}响应适合需要程序化处理对齐结果的场景。超时与长请求transcript 路由经由 prepareLongRequest 准备客户端整段对话可能包含几十回合这条调用使用“无客户端超时”的 HTTP 配置longRequest档位与短请求档位的默认超时区分开避免长转录在网关侧被客户端先掐断。判读失败与调用契约的交集翻译路由的失败大多落在 调用契约 的通用判读表里对翻译最相关的是两类no_default_model翻译默认类别default-translate背后没有任何模型。这是新安装环境的典型失败——Router 拒绝一个没有模型承接的类别而不是近似处理。用olares-cli router route list --kind default确认该类别现状因为translate没有--model旗标你无法通过换模型绕过它只能让部署侧让某个模型承接翻译默认类别。5xx 且响应体为空Router 背后没有任何应答者翻译模型应用已停止或仍在加载权重此时应转入 诊断层 判断是哪一层的问题。每次被接受的调用都会落成一条 usage 记录包括上游失败的所以失败后olares-cli router usage list --limit 5能立刻看到 Router 记下了什么没有 usage 行则说明调用在 Router 路由之前就被拒了。小结选哪条路线场景命令单句/文档级翻译源语言未知olares-cli router call translate --to zh … --from ja短文本建议显式给--from翻译一整份字符串文件cat strings.txt \| olares-cli router call translate --to en --per-line≤64 行空行丢弃顺序保真不确定该用什么语言对olares-cli router call translate --languages只要识别语言olares-cli router call translate --detect ¿dónde está?diarizer/会议工具产出的整份对话olares-cli router call translate --transcript meeting.json --to en --background … --term srctgt≤64 回合超限拆分并带尾进context实现层面的关键保证都可以从仓库验证端点常量见 endpoints.go本地校验、glossary 解析与原位失败渲染见 call_translate_transcript.go行为契约由 call_translate_transcript_test.go 逐条锁定而translate作为“唯一没有--model的调用动词”这一特殊地位也由 TestEveryCallVerbFallsBackToACategory 显式声明为刻意的例外。赞分享云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载相关推荐Olares Router 调用实战Terminus 中 router call 的文本、嵌入、重排与网络能力全解Olares Router 调用实战Terminus 中 router call 的文本、嵌入、重排与网络能力全解 在 TerminusOpen Sourc云原生后端运维Terminus Olares Publish 技能实战Market Manifest 本地化、四个文案字段与多语言规范Terminus Olares Publish 技能实战Market Manifest 本地化、四个文案字段与多语言规范 本篇围绕 Terminus 仓库中云原生后端运维Bifrost三星固件下载与解密的一站式跨平台解决方案 Bifrost三星固件下载与解密的一站式跨平台解决方案 还在为三星设备刷机而烦恼吗面对复杂的固件下载、繁琐的解密流程你是否感到无从下手Bifros桌面应用上一篇OpenSeeD核心架构解析Transformer在开放词汇分割中的应用下一篇EssentialsX注册表工具枚举类型与字符串映射创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

go-systemd:在 Docker Engine 中以 Go 语言深度对接 systemd 的实战指南

go-systemd:在 Docker Engine 中以 Go 语言深度对接 systemd 的实战指南

容器运行时云原生 【免费下载链接】docker-ce :warning: This repository is deprecated and will be archived (Docker CE itself is NOT deprecated) see the https://github.com/docker/docker-ce/blob/master/README.md :warning: 项目地址: https://gitcode.co…

2026/10/13 1:52:15 阅读更多 →
第 13 章 选哪个材质:Standard vs PBR vs OpenPBR

第 13 章 选哪个材质:Standard vs PBR vs OpenPBR

本章实测环境:Babylon.js 9.30.0、Vite 8.3.4、TypeScript 5.9.3、Windows 11 Chrome(WebGL2 后端)。 本章代码:src/chapters/ch13-material-comparison.ts,运行后打开 http://localhost:18000/?ch13。 图中所有&quo…

2026/10/13 1:52:15 阅读更多 →
sherpa-onnx 完整解析:5 分钟跑通本地离线语音识别与语音合成

sherpa-onnx 完整解析:5 分钟跑通本地离线语音识别与语音合成

sherpa-onnx 完整解析:5 分钟跑通本地离线语音识别与语音合成 【免费下载链接】sherpa-onnx Speech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet conn…

2026/10/13 1:51:15 阅读更多 →

最新新闻

SpringBoot+Vue学生成绩分析与可视化平台全解析

SpringBoot+Vue学生成绩分析与可视化平台全解析

每年毕业季我都能在技术社区里看到大量和“成绩管理系统”相关的提问,这个题目属于那种“看起来老套、实则非常能打”的典型选题。特别是把Java、Vue、SpringBoot这三个词绑在一起的时候,它考查的已经不只是“会写增删改查”,而是完整的前后端…

2026/10/13 2:33:32 阅读更多 →
自制PS5辅助工具箱:游戏库管理、存储分析与网络监测实战

自制PS5辅助工具箱:游戏库管理、存储分析与网络监测实战

前一阵子,我遇到一个几乎所有主机玩家都会碰到的场景:周末想装一款新游戏,系统弹出提示说内置存储空间不足。那一刻我站在电视前反复权衡:哪款游戏已经通关了?哪款还有继续玩的价值?它究竟占了多少空间&…

2026/10/13 2:33:32 阅读更多 →
Java常用类核心解析:String、包装类与时间日期API的实践要点

Java常用类核心解析:String、包装类与时间日期API的实践要点

写这份笔记之前,我先说个背景。我的JavaSE学习笔记已经更到第四篇,前几篇分别梳理过环境搭建和基础语法、面向对象的核心思想、继承多态和接口这些抽象概念。到这期聊"常用类",性质突然就变了——不再是学概念,而是在学…

2026/10/13 2:33:32 阅读更多 →
Grafana配置文件grafana.ini全解:核心参数、修改与避坑指南

Grafana配置文件grafana.ini全解:核心参数、修改与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:33:32 阅读更多 →
gdal111编译版部署指南:环境变量配置与避坑实践

gdal111编译版部署指南:环境变量配置与避坑实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:33:32 阅读更多 →
Bootstrap 4多级下拉菜单实现:解决复杂导航层级难题

Bootstrap 4多级下拉菜单实现:解决复杂导航层级难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 2:32:31 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →