chore: release v0.11.6

feat: Skills multi-agent support — agent selector + per-agent skills directory (Rust/Node.js/frontend)
feat: Assistant tool mode streaming — typewriter effect + tool_calls chunk accumulation
improve: OpenClaw 4.5 compatibility — full agent event stream handling + 3-min ultimate timeout
improve: Replace hot-update with stable download links (website/GitHub)
fix: Gateway status flapping — dashboard throttle + TCP retry + debounce threshold
fix: Assistant empty gray bubbles — SSE 0-chunk detection + stream error capture + render filter
This commit is contained in:
晴天
2026-04-07 16:17:09 +08:00
parent 35423f428b
commit 3c5a0d252b
35 changed files with 438 additions and 225 deletions

View File

@@ -183,8 +183,11 @@ async function _tryAutoRestart() {
return
}
// 重启前再次确认端口确实空闲,防止端口被其他程序占用时无限拉起
// 延迟 3 秒后再次确认端口确实空闲,防止瞬态 TCP 超时误判触发不必要的重启
await new Promise(r => setTimeout(r, 3000))
try {
const { invalidate } = await import('./tauri-api.js')
invalidate('get_services_status')
const services = await api.getServicesStatus()
const gw = services?.find?.(s => s.label === 'ai.openclaw.gateway') || services?.[0]
if (gw?.running) {
@@ -213,7 +216,7 @@ async function _tryAutoRestart() {
}
/** 刷新 Gateway 运行状态(轻量,仅查服务状态)
* 防抖running→stopped 需要连续 2 次检测才切换,避免瞬态误判 */
* 防抖running→stopped 需要连续 3 次检测才切换,避免瞬态误判 */
export async function refreshGatewayStatus() {
try {
const services = await api.getServicesStatus()
@@ -239,14 +242,14 @@ export async function refreshGatewayStatus() {
} else {
_gwStopCount++
}
if (foreignRunning || _gwStopCount >= 2 || !_gatewayRunning) {
if (foreignRunning || _gwStopCount >= 3 || !_gatewayRunning) {
_setGatewayRunning(false, foreignRunning)
}
}
}
} catch {
_gwStopCount++
if (_gwStopCount >= 2) _setGatewayRunning(false)
if (_gwStopCount >= 3) _setGatewayRunning(false)
}
return _gatewayRunning
}

View File

@@ -14,7 +14,7 @@ export const API_TYPES = [
// 服务商快捷预设
export const PROVIDER_PRESETS = [
{ key: 'qtcool', label: '晴辰云', badge: '推荐', baseUrl: 'https://gpt.qt.cool/v1', api: 'openai-completions', site: 'https://gpt.qt.cool/', desc: '面板用户免费使用部分模型,付费用户享全系列顶级模型支持,全部模型低至 2-3 折' },
{ key: 'qtcool', label: '晴辰云', badge: '推荐', baseUrl: 'https://gpt.qt.cool/v1', api: 'openai-completions', site: 'https://gpt.qt.cool/', desc: '每日签到领免费模型测试额度,邀请好友再送额度,付费低至官方价 2-3 折' },
{ key: 'shengsuanyun', label: '胜算云', baseUrl: 'https://router.shengsuanyun.com/api/v1', api: 'openai-completions', site: 'https://www.shengsuanyun.com/?from=CH_4BVI0BM2', desc: '国内知名 AI 模型聚合平台,支持多种主流模型' },
{ key: 'siliconflow', label: '硅基流动', baseUrl: 'https://api.siliconflow.cn/v1', api: 'openai-completions', site: 'https://cloud.siliconflow.cn/i/PFrw2an5', desc: '高性价比推理平台,支持 DeepSeek、Qwen 等开源模型' },
{ key: 'volcengine', label: '火山引擎', baseUrl: 'https://ark.cn-beijing.volces.com/api/v3', api: 'openai-completions', site: 'https://volcengine.com/L/Ph1OP5I3_GY', desc: '字节跳动旗下云平台,支持豆包等模型' },

View File

@@ -223,11 +223,11 @@ npm install -g openclaw@latest
晴辰云为 ClawPanel 用户提供 AI 模型调用服务,通过每日签到和邀请好友即可获取免费额度。
### 核心信息
- **GPT-AI 网关地址**https://gpt.qt.cool/v1
- **API 网关地址**https://gpt.qt.cool/v1
- **支持接口**/v1/chat/completions、/v1/responsesOpenAI 兼容)
- **支持模型**OpenAI 全系列GPT-5、GPT-5.1、GPT-5.2 及其 Codex 变体
- **免费额度**:每日签到领取免费额度,邀请好友可获得额外奖励
- **高级模型**:低至官方价 2-3 折
- **支持模型**多种顶级 AI 模型(具体可用模型以平台实时列表为准
- **免费额度**:每日签到领取免费模型测试额度,邀请好友可获得额外奖励
- **付费优惠**:低至官方价 2-3 折,不满意随时可退
- **用户后台**https://gpt.qt.cool/user查看用量、管理密钥
### 官方入口

View File

@@ -322,15 +322,15 @@ export const api = {
assistantFetchUrl: (url) => invoke('assistant_fetch_url', { url }),
// Skills 管理
skillsList: () => invoke('skills_list'),
skillsInfo: (name) => invoke('skills_info', { name }),
skillsList: (agentId) => invoke('skills_list', { agent_id: agentId || null }),
skillsInfo: (name, agentId) => invoke('skills_info', { name, agent_id: agentId || null }),
skillsCheck: () => invoke('skills_check'),
skillsInstallDep: (kind, spec) => invoke('skills_install_dep', { kind, spec }),
skillsUninstall: (name) => invoke('skills_uninstall', { name }),
skillsUninstall: (name, agentId) => invoke('skills_uninstall', { name, agent_id: agentId || null }),
// SkillHub SDK内置 HTTP不依赖 CLI
skillhubSearch: (query, limit) => invoke('skillhub_search', { query, limit }),
skillhubIndex: () => invoke('skillhub_index'),
skillhubInstall: (slug) => invoke('skillhub_install', { slug }),
skillhubInstall: (slug, agentId) => invoke('skillhub_install', { slug, agent_id: agentId || null }),
// 实例管理
instanceList: () => cachedInvoke('instance_list', {}, 10000),