mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-06-06 00:00:06 +08:00
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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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: '字节跳动旗下云平台,支持豆包等模型' },
|
||||
|
||||
@@ -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/responses(OpenAI 兼容)
|
||||
- **支持模型**:OpenAI 全系列(GPT-5、GPT-5.1、GPT-5.2 及其 Codex 变体)
|
||||
- **免费额度**:每日签到领取免费额度,邀请好友可获得额外奖励
|
||||
- **高级模型**:低至官方价 2-3 折
|
||||
- **支持模型**:多种顶级 AI 模型(具体可用模型以平台实时列表为准)
|
||||
- **免费额度**:每日签到领取免费模型测试额度,邀请好友可获得额外奖励
|
||||
- **付费优惠**:低至官方价 2-3 折,不满意随时可退
|
||||
- **用户后台**:https://gpt.qt.cool/user(查看用量、管理密钥)
|
||||
|
||||
### 官方入口
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user