Tokeny 高级参数配置说明

综合讨论
用户13522026-07-2014100

面向高级用户 / 运维:Tokeny 把一批当前无 UI的隐藏调优参数(超时、限流、缓存、阈值等) 统一收敛到一个可编辑的 JSON 文件,让你无需改代码、无需重新打包即可调整运行时行为。

大多数日常设置(模型、外观、快捷键等)仍在应用内「设置」面板里;本文件只承载 那些尚未做成界面的底层参数。二者不重叠——已有界面的项以界面为准。


1. 文件位置

~/.tokeny/config.json
  • ~ 指当前用户主目录(Windows 为 C:\Users\<你>,macOS/Linux 为 /home/<你> 或 /Users/<你>)。
  • 可用环境变量 TOKENY_HOME 覆盖父目录:设 TOKENY_HOME=D:\tokeny-data, 则配置文件变为 D:\tokeny-data\config.json。常用于隔离开发版与打包版的数据。

打开方式

  • 推荐:应用内「设置 → 数据管理 → 高级参数配置文件 → 打开配置文件」。 首次点击若文件不存在,会自动写入一份含全部默认值的模板再打开。
  • 或手动用任意文本编辑器打开上面的路径。

2. 生效方式(重要)

  • 修改后必须重启 Tokeny 才生效。 绝大多数参数在程序启动、模块加载时读取一次并缓存, 运行期热改无效。
  • 删除本文件 = 恢复全部默认(下次启动会重新生成模板)。
  • 不写此文件、或文件为空 → 全部走内置默认值,行为与未引入该机制时完全一致。

3. 容错护栏(写错了也不会崩)

加载器对每个字段做严格校验,任何错误都只回退默认 + 记一条 warning,绝不让程序启动失败:

你写的内容 实际结果
坏 JSON(括号/逗号错) 整个文件忽略,全部回退默认
某字段类型错(如给数字写了字符串 / NaN) 该字段回退默认,其余正常
某字段低于允许下限 clamp(夹取)到 min
某字段高于允许上限 clamp 到 max
未知的域名 / 字段名 静默忽略(方便你写注释占位)
只写了部分字段 只覆盖你写的,同域其余字段保持默认(深合并)

校验产生的 warning 会写入应用日志(组件名 RuntimeConfig),可在「设置 → 数据管理 → 日志」查看。

单位约定

  • 时间:除特别注明外一律毫秒 (ms)。例外:scheduler.minIntervalMinutes 是分钟, webserver.cookieMaxAgeSec 是秒。
  • 大小:字节 (byte)。例:256 * 1024 = 256 KB 请写成 262144(JSON 不支持表达式,必须写最终整数)。
  • 百分比:整数(如 75 表示 75%)。
  • 次数 / 条数 / 层数:整数。

4. 全部参数(按领域)

每个字段列出:默认值(含可读换算)· 允许范围 [min, max] · 作用。JSON 里请填最终整数。

agent — 智能体生命周期

字段 默认 范围 作用
idleTimeoutMs 1800000(30 分钟) 60000 ~ 14400000(1min~4h) Agent 实例空闲多久后自动释放内存

stream — 流式响应看门狗

字段 默认 范围 作用
inactivityTimeoutMs 600000(10 分钟) 60000 ~ 7200000 流无任何输出多久判定卡死。太短会误杀长工具执行
toolInactivityGraceMs 30000(30 秒) 5000 ~ 600000 工具执行期额外宽限时间

subtask — 子任务委派

字段 默认 范围 作用
idleTimeoutMs 1800000(30 分钟) 60000 ~ 7200000 子任务灾难兜底超时(仅防真死锁)
maxConcurrentHardLimit 8 1 ~ 32 同时运行子任务数的硬上限(信号量初值)

securityAudit — 命令安全审核

字段 默认 范围 作用
llmTimeoutMs 20000(20 秒) 5000 ~ 120000 bash 命令审核 LLM 调用超时。太短会让审核提前放行/降级
cacheTtlMs 300000(5 分钟) 60000 ~ 3600000 审核结果 LRU 缓存有效期
cacheMaxSize 100 20 ~ 5000 审核缓存最大条目数

bash — 终端工具

字段 默认 范围 作用
defaultTimeoutMs 60000(1 分钟) 5000 ~ 3600000 普通命令默认超时
installTimeoutMs 300000(5 分钟) 30000 ~ 3600000 安装类命令(依赖下载等)超时
maxOutputChars 51200(50 KB) 8192 ~ 2097152 stdout/stderr 合并输出截断上限。verbose 构建日志被截时调大
installOutputChars 15360(15 KB) 4096 ~ 524288 安装类命令输出上限

mcp — MCP 工具

字段 默认 范围 作用
toolCallTimeoutMs 60000(1 分钟) 5000 ~ 3600000 单次 MCP 工具调用超时
maxBgRetries 3 0 ~ 20 后台 MCP 连接失败最大重试次数
playwrightRecoveryTimeoutMs 300000(5 分钟) 60000 ~ 1800000 Playwright MCP 自动装浏览器恢复超时

scheduler — 定时任务

字段 默认 范围 作用
taskTimeoutMs 1800000(30 分钟) 60000 ~ 21600000(~6h) 单个定时任务执行超时
minIntervalMinutes 5(分钟) 1 ~ 1440 允许的最小调度间隔
executionRecordsLimit 50 10 ~ 10000 每任务保留的执行记录条数

headless — 无头/CLI 模式

字段 默认 范围 作用
timeoutMs 300000(5 分钟) 60000 ~ 21600000 无头模式单次运行总超时

database — SQLite 数据库

字段 默认 范围 作用
busyTimeoutMs 5000 1000 ~ 60000 数据库锁等待超时(busy_timeout)
backupMaxCount 5 1 ~ 50 自动备份保留份数
backupMinIntervalMs 86400000(1 天) 3600000 ~ 2592000000(1h~30d) 两次自动备份最小间隔
initMaxRetries 3 1 ~ 20 数据库初始化失败重试次数
initRetryDelayMs 1000 100 ~ 30000 初始化重试间隔

webFetch — 网页抓取工具

字段 默认 范围 作用
maxContentSize 262144(256 KB) 16384 ~ 8388608(16KB~8MB) 抓取内容最大字节数
fetchTimeoutMs 30000 3000 ~ 300000 单次抓取超时
maxResponseBodySize 2097152(2 MB) 262144 ~ 52428800 HTTP 响应体最大读取量(防超大文件吃满内存)
maxImages 8 1 ~ 50 图片提取默认最大返回数

mediaGen — 图像/视频生成

字段 默认 范围 作用
httpTimeoutMs 30000 5000 ~ 300000 单次 HTTP 请求超时
imageTotalTimeoutMs 180000(3 分钟) 30000 ~ 3600000 图像生成总超时(含轮询)
videoTotalTimeoutMs 1200000(20 分钟) 60000 ~ 7200000 视频生成总超时
videoPollIntervalMs 5000 1000 ~ 30000 视频任务状态轮询间隔
imagePollIntervalMs 3000 1000 ~ 30000 图像任务状态轮询间隔
ossUploadMinBytes 10485760(10 MB) 1048576 ~ 104857600 媒体输入改走 OSS 上传的体积阈值

model — 模型调用

字段 默认 范围 作用
testTimeoutMs 10000 2000 ~ 120000 「测试连接」超时
listTimeoutMs 15000 2000 ~ 120000 拉取模型列表超时
balanceTimeoutMs 10000 2000 ~ 120000 查询余额超时
defaultRequestTimeoutMs 60000 10000 ~ 3600000 模型请求兜底超时(未显式指定时)。慢模型/中转站可调大

recovery — 流式错误恢复

字段 默认 范围 作用
maxTotalRecoveries 13 1 ~ 200 单回合总恢复次数上限
maxApiRetries 100 1 ~ 1000 API 临时错误重试次数安全网(实际由时间窗主导)
apiRetryWindowMs 600000(10 分钟) 60000 ~ 3600000 API 重试时间窗:窗口内持续按退避重试
maxContinuationAttempts 3 0 ~ 50 截断续写最大尝试次数
maxEmptyResponseRetries 100 1 ~ 1000 空 turn 重试次数安全网(GLM/中转站间歇空响应)
emptyResponseRetryWindowMs 600000(10 分钟) 60000 ~ 3600000 空响应重试时间窗(与 API 重试窗独立)
maxContextCompressionRetries 2 0 ~ 20 上下文溢出触发压缩后的重试上限(长会话会撞)
maxIncompleteTurnRecoveries 2 0 ~ 50 不完整 turn 恢复上限

retry — API 重试退避

字段 默认 范围 作用
apiRetryBaseDelayMs 1000 200 ~ 5000 指数退避基础延迟(窗口由 recovery.apiRetryWindowMs 控制,这里控制退避形状)
apiRetryMaxDelayMs 16000 4000 ~ 120000 指数退避封顶延迟
maxServerSuggestedDelayMs 30000 5000 ~ 300000 服务端 retry-after 建议值的夹取上限(防恶意超长值卡死)

doomLoop — 重复循环检测

agentic 长任务对误报敏感:阈值太小会误杀正常多步操作,太大会放任空转。 | 字段 | 默认 | 范围 | 作用 | |------|------|------|------| | exactRepeatThreshold | 10 | 3 ~ 200 | 精确重复工具调用触发阈值 | | fuzzyRepeatThreshold | 20 | 5 ~ 400 | 模糊重复(同名不同参)触发阈值 | | alternatingWindow | 10 | 4 ~ 100 | 交替循环检测窗口 | | textRepeatThreshold | 3 | 2 ~ 50 | 纯文本重复输出触发阈值 | | emptyTurnThreshold | 3 | 2 ~ 50 | 连续空轮次(thinking 空转)触发阈值 | | maxTrackers | 500 | 50 ~ 10000 | 会话跟踪器 LRU 上限 |

recursion — 递归深度

字段 默认 范围 作用
interactiveLimit 1000 50 ~ 10000 交互式 Agent 单回合工具调用递归上限

compression — 上下文压缩

字段 默认 范围 作用
layerOneTriggerPercent 75 40 ~ 95 上下文占比达此值触发一级压缩
resetTriggerPercent 85 50 ~ 99 达此值触发重置级压缩
summaryInvokeTimeoutMs 300000(5 分钟) 30000 ~ 1200000 摘要模型调用超时

files — 文件工具

字段 默认 范围 作用
readLimit 102400(100 KB) 8192 ~ 10485760(8KB~10MB) 单文件读取字节上限
grepLimit 5242880(5 MB) 65536 ~ 104857600(64KB~100MB) grep 扫描字节上限
attachmentLimit 20971520(20 MB) 1048576 ~ 209715200(1MB~200MB) 附件大小上限
maxWalkDepth 10 1 ~ 64 目录遍历最大深度
maxEntries 2000 100 ~ 100000 目录列举最大条目数
readMaxChars 30000 2000 ~ 500000 读取返回最大字符数

memory — 记忆系统

字段 默认 范围 作用
countMaxGlobal 200 20 ~ 100000 全局记忆最大条数
countMaxWorkspace 100 10 ~ 100000 工作空间记忆最大条数

记忆单条正文字数上限(全局/工作空间)由「设置 → 个性化 → 记忆管理」统一管理, 不在此配置文件中,避免两处配置歧义。

email / ocr / stt — 外部服务

字段 默认 范围 作用
email.operationTimeoutMs 30000 5000 ~ 300000 邮件收发单次操作超时
ocr.serverReadyTimeoutMs 300000(5 分钟) 30000 ~ 1800000 等待 OCR 服务就绪超时
ocr.requestTimeoutMs 600000(10 分钟) 30000 ~ 3600000 单次 OCR 请求超时(多页 PDF 较慢)
ocr.installTimeoutMs 1800000(30 分钟) 300000 ~ 5400000 pip 安装 OCR 依赖超时(体积大、慢网易撞顶)
ocr.warmupTimeoutMs 1200000(20 分钟) 180000 ~ 3600000 首次下载权重+预热超时
ocr.venvTimeoutMs 120000(2 分钟) 30000 ~ 600000 创建 Python venv 超时
stt.timeoutMs 30000 5000 ~ 300000 语音转文字请求超时

runtime / browser / skill — 依赖安装与浏览器

字段 默认 范围 作用
runtime.extractTimeoutMs 600000(10 分钟) 60000 ~ 1800000 解压内置 Node/Python 运行时超时
runtime.installTimeoutMs 180000(3 分钟) 30000 ~ 1800000 npm/pip 安装类命令超时
browser.cdpReadyTimeoutMs 30000 5000 ~ 120000 等 Chrome CDP 端点就绪超时(弱机启动慢时调大)
browser.cdpPollIntervalMs 300 100 ~ 2000 CDP 就绪轮询间隔
skill.gitCloneTimeoutMs 60000(1 分钟) 10000 ~ 600000 git clone 安装外部技能超时

webserver — 内嵌 Web 服务器

字段 默认 范围 作用
port 3210 1024 ~ 65535 监听端口(DB 无 webServerConfig 时的回退)
maxRequestBody 26214400(25 MB) 1048576 ~ 524288000(1MB~500MB) 请求体大小上限(防内存耗尽)
rateLimitMaxAttempts 10 3 ~ 1000 认证失败限流:窗口内最大尝试次数
cookieMaxAgeSec 604800(7 天,秒) 3600 ~ 7776000(1h~90d) 登录 Cookie 有效期

frontend — 前端界面

字段 默认 范围 作用
messageRenderLimit 50 10 ~ 1000 首屏渲染消息数
messageLoadChunk 50 10 ~ 1000 上滑加载每批消息数
sendInactivityTimeoutMs 1800000(30 分钟) 60000 ~ 7200000 发送后无响应判定超时
editorAutoSaveDelayMs 1200 200 ~ 30000 编辑器自动保存防抖延迟

5. 示例

最小覆盖(只改想改的,其余全默认)

只把模型兜底超时调到 3 分钟、webserver 端口改成 8080:

{
  "model": { "defaultRequestTimeoutMs": 180000 },
  "webserver": { "port": 8080 }
}

其余所有字段、所有域都保持默认——不需要、也不建议全量抄写。

「打开配置文件」生成的模板

首次通过设置面板打开时,会写入一份含全部默认值的完整模板(顶部带 _readme 提示), 你可以在上面直接改数值。_readme 是未知字段,会被安全忽略。


6. 常见调优场景

我想…… 改哪个
用很慢的模型/中转站,老是超时 调大 model.defaultRequestTimeoutMs、stream.inactivityTimeoutMs
长时间跑的工具(编译/训练)被误判卡死 调大 stream.inactivityTimeoutMs、bash.defaultTimeoutMs
处理大文件/大附件被截断 调大 files.readLimit、files.attachmentLimit、files.grepLimit
内嵌 Web 端口冲突 改 webserver.port
上传大文件到 Web 端 413 调大 webserver.maxRequestBody
上下文太早被压缩 调高 compression.layerOneTriggerPercent(但别贴满,留余量)
定时任务想更频繁 调小 scheduler.minIntervalMinutes(最低 1 分钟)
多页 PDF OCR 老失败 调大 ocr.requestTimeoutMs、ocr.serverReadyTimeoutMs
慢网装 OCR/内置运行时/技能老超时 调大 ocr.installTimeoutMs/ocr.warmupTimeoutMs、runtime.extractTimeoutMs/runtime.installTimeoutMs、mcp.playwrightRecoveryTimeoutMs、skill.gitCloneTimeoutMs
长 agent 任务被误判"循环"中断 调大 doomLoop.exactRepeatThreshold/fuzzyRepeatThreshold 等
弱机启动浏览器 CDP 超时 调大 browser.cdpReadyTimeoutMs
GLM/中转站间歇空响应导致失败 调大 recovery.maxEmptyResponseRetries/emptyResponseRetryWindowMs
构建日志输出被截断 调大 bash.maxOutputChars
历史很长、首屏加载卡 调小 frontend.messageRenderLimit

7. 排错

  • 改了没生效? 90% 是没重启。改完必须完全退出并重启 Tokeny。
  • 改了个值程序没反应? 可能被 clamp 或类型回退了。查日志(设置 → 数据管理 → 日志)里 RuntimeConfig 的 warning,会明确写「某字段越界,clamp 到 X」或「非数值,回退默认」。
  • 整个文件好像被忽略了? 多半是 JSON 语法错(多余逗号、缺引号)。用编辑器的 JSON 校验, 或直接删掉文件让它重建模板。

8. 边界说明

  • 本文件只承载无 UI 的隐藏参数,不与应用内「设置」重叠。已有界面的项(模型配置、 webServerConfig 的运行时开关等)仍以界面 / 数据库为准。
  • 空响应重试窗口现已开放为独立字段 recovery.emptyResponseRetryWindowMs,与 API 重试窗 recovery.apiRetryWindowMs 分离,改一个不会静默影响另一个。

评论与讨论

0/2000

还没有评论,分享你的体验吧。