/**
* 特性目录 — 声明每个可选特性需要的最低内核版本
*
* 这是 ClawPanel 跨多版本内核的「唯一真相源」:
* - 当上游引入一个新特性而我们想在面板中使用时,在这里加一行
* - 页面通过 kernel.js 的 hasFeature(id) 同步查询,不要硬编码版本号比较
* - 命名规范: .,例如 sessions.truncation, models.cooldownScope
*
* @see .tmp/multi-kernel-compat-design.md §4.1 为详细设计文档
*/
/**
* @typedef {Object} FeatureDef
* @property {string} engine 引擎 id,当前仅 'openclaw' 或 'hermes'
* @property {string} minVersion 最低内核版本号(不含 -zh 后缀)
* @property {string} [desc] 特性说明,仅调试用
*/
/** @type {Record} */
export const FEATURE_CATALOG = {
// ===== 协议层 =====
'gateway.backendSelfPair': {
engine: 'openclaw',
minVersion: '2026.3.2',
desc: 'gateway-client backend 模式可省略 device 字段',
},
'ws.startupSidecarsErr': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'connect 期间返回 startup-sidecars 错误码 + retryAfterMs',
},
// ===== Sessions / Chat =====
'sessions.truncation': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'sessions.list 返回 truncated/cursor 分页元数据',
},
'sessions.cleanupTranscript': {
engine: 'openclaw',
minVersion: '2026.5.5',
desc: 'sessions cleanup 修剪孤立 transcript / checkpoint / trajectory',
},
'chat.replyRunGuard': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: '连续 chat.send 不再 ReplyRunAlreadyActiveError',
},
// ===== Agents =====
'agents.runtime': {
engine: 'openclaw',
minVersion: '2026.5.2',
desc: 'agents.list 返回 agentRuntime 元数据',
},
'agents.toolProgressDetail': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'agents.defaults.toolProgressDetail: "raw"',
},
'agents.contextLimits': {
engine: 'openclaw',
minVersion: '2026.4.10',
desc: 'agents.defaults.contextLimits.* (4 字段)',
},
'agents.skillsLimits': {
engine: 'openclaw',
minVersion: '2026.4.15',
desc: 'agents.list[].skillsLimits.maxSkillsPromptChars',
},
// ===== Models =====
'models.probeStatus': {
engine: 'openclaw',
minVersion: '2026.5.2',
desc: '/model status 返回 excluded_by_auth_order / no_model 状态',
},
'models.cooldownScope': {
engine: 'openclaw',
minVersion: '2026.5.3',
desc: 'auth profile cooldown 改为 model-scoped',
},
'models.codexRouteMigrated': {
engine: 'openclaw',
minVersion: '2026.5.5',
desc: 'doctor 自动迁移 openai-codex/* → openai/* + agentRuntime: codex',
},
// ===== Memory =====
'memory.statusDeepSplit': {
engine: 'openclaw',
minVersion: '2026.5.3',
desc: 'memory status --deep 分离 sqlite-vec 与 embedding-provider 就绪',
},
'memory.activeMemoryGraceful': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: '无 memory plugin 时优雅跳过,不打 allowlist 错',
},
'memory.dreamingTabs': {
engine: 'openclaw',
minVersion: '2026.4.11',
desc: 'Dreaming Wiki / Imported Insights / Memory Palace 子标签',
},
// ===== Cron =====
'cron.toolPolicyError': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'cron show 返回真实 tool-policy 失败原因',
},
'cron.timeoutSecondsDual': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'cron timeoutSeconds 同时驱动 CLI 和 LLM watchdog',
},
// ===== Doctor / Update =====
'doctor.deepSupervisor': {
engine: 'openclaw',
minVersion: '2026.5.5',
desc: 'doctor --deep 报告 supervisor restart handoff',
},
'doctor.heartbeatRecovery': {
engine: 'openclaw',
minVersion: '2026.5.5',
desc: 'doctor --fix 修复 agent:main:main heartbeat 中毒',
},
'doctor.failClosedConfig': {
engine: 'openclaw',
minVersion: '2026.5.3',
desc: 'Gateway 启动 fail-closed 无效配置,由 doctor --fix 修复',
},
// ===== Channels =====
'channels.lineOpenValidate': {
engine: 'openclaw',
minVersion: '2026.5.5',
desc: 'LINE dmPolicy:"open" 校验 allowFrom 通配',
},
'channels.mattermostUrlWizard': {
engine: 'openclaw',
minVersion: '2026.5.5',
desc: 'Mattermost setup wizard 收集 httpUrl',
},
'channels.toolProgressRaw': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: '渠道进度草稿 honor toolProgressDetail: raw',
},
// ===== Plugins =====
'plugins.installHints': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'doctor 输出 catalog-backed install hints',
},
'plugins.clawhubRateLimit': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'ClawHub 429 错误带 Retry-After',
},
// ===== Gateway 配置(我们一般不改,但读取时需容错) =====
'gateway.embedSandbox': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'gateway.controlUi.embedSandbox 字段',
},
'gateway.allowExternalEmbedUrls': {
engine: 'openclaw',
minVersion: '2026.5.4',
desc: 'gateway.controlUi.allowExternalEmbedUrls 字段',
},
}
/**
* 硬地板:低于此版本的内核,ClawPanel 会弹出全屏拦截。
* 选择 2026.3.2 是因为 gateway-client backend 模式从此引入,是我们长期对接路径根基。
*/
export const KERNEL_FLOOR = {
openclaw: '2026.3.2',
hermes: '0.8.0',
}
/**
* 推荐目标版本:默认安装/升级使用。
* 真正的推荐版由 openclaw-version-policy.json 控制,这里仅作 fallback / 展示用。
*/
export const KERNEL_TARGET = {
openclaw: {
// 内核协议在 5.12 升级到 v4(MIN_CLIENT_PROTOCOL_VERSION=4,新增增量 chat delta payloads),
// 面板通过 connect frame `[minProtocol=3, maxProtocol=4]` 同时兼容新旧内核
official: '2026.5.12',
chinese: '2026.5.12-zh.2',
},
hermes: {
default: '0.13.x',
},
}