From 36e0e303f1c23f26c43f54086071c3535b56816c Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Thu, 5 Feb 2026 00:38:13 +0800 Subject: [PATCH 01/43] Create sync-cnb.yml --- .github/workflows/sync-cnb.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/sync-cnb.yml diff --git a/.github/workflows/sync-cnb.yml b/.github/workflows/sync-cnb.yml new file mode 100644 index 0000000000000..81e3a013abff0 --- /dev/null +++ b/.github/workflows/sync-cnb.yml @@ -0,0 +1,21 @@ +# .github/workflows/sync-cnb.yml + +name: Sync to CNB +on: [push] + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Sync to CNB Repository + uses: docker://tencentcom/git-sync + env: + PLUGIN_TARGET_URL: "https://cnb.cool/soucod-github/openclaw.git" + PLUGIN_AUTH_TYPE: "https" + PLUGIN_USERNAME: "cnb" + PLUGIN_PASSWORD: ${{ secrets.GIT_PASSWORD }} + PLUGIN_FORCE: "true" From 91b0cdbea75e5936cf509d928928f8890a1d8928 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Thu, 5 Feb 2026 00:40:18 +0800 Subject: [PATCH 02/43] Update sync-cnb.yml --- .github/workflows/sync-cnb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-cnb.yml b/.github/workflows/sync-cnb.yml index 81e3a013abff0..e0a3959317c31 100644 --- a/.github/workflows/sync-cnb.yml +++ b/.github/workflows/sync-cnb.yml @@ -14,7 +14,7 @@ jobs: - name: Sync to CNB Repository uses: docker://tencentcom/git-sync env: - PLUGIN_TARGET_URL: "https://cnb.cool/soucod-github/openclaw.git" + PLUGIN_TARGET_URL: "https://cnb.cool/soucod-github/soucod/openclaw.git" PLUGIN_AUTH_TYPE: "https" PLUGIN_USERNAME: "cnb" PLUGIN_PASSWORD: ${{ secrets.GIT_PASSWORD }} From 749e07a3f92571c77c63cc41bf1a143397f17ab6 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Thu, 5 Feb 2026 15:55:44 +0800 Subject: [PATCH 03/43] =?UTF-8?q?cnb=20=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 108 +++++++++++++++++++++++++++++++++ .cnb/settings.yml | 5 ++ .github/workflows/sync-cnb.yml | 21 +++++++ 3 files changed, 134 insertions(+) create mode 100644 .cnb.yml create mode 100644 .cnb/settings.yml create mode 100644 .github/workflows/sync-cnb.yml diff --git a/.cnb.yml b/.cnb.yml new file mode 100644 index 0000000000000..cba88c30c79f0 --- /dev/null +++ b/.cnb.yml @@ -0,0 +1,108 @@ +main: + push: + - services: + - docker + ifModify: + - Dockerfile + stages: + - name: docker build & push + script: | + docker buildx build -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest --push . + vscode: + - runner: + cpus: 4 + docker: + image: docker.cnb.cool/soucod-github/soucod/openclaw + services: + - name: vscode + options: + onlyPreview: true + launch: chmod +x ./start.sh && bash ./start.sh + keepAliveTimeout: 3600000 + daemon: false + backup: true + - docker +dev: + vscode: + - services: + - vscode + - docker + +$: + tag_push: + - stages: + - name: 生成 Code Wiki + timeout: 2h + image: cnbcool/codewiki:latest + settings: + git_doc_dir: /${CNB_BUILD_WORKSPACE}/${CNB_REPO_SLUG}/codewiki + +# .cnb.yml +"**": # 触发的分支名,默认所有分支,可按需修改 + push: # push 触发,可按需修改为 pull_request 等 + - stages: + # 代码分析 + - name: TCA + timeout: 2h + image: cnbcool/tca:latest + settings: + from_file: # 可选,可以传递一个文件(比如 changed.txt),内容为需要分析的文件列表,一行一个文件(采用基于工作空间的相对路径) + ignore_paths: # 可选,指定一个或多个相对工作空间的文件屏蔽路径(黑名单),多个路径可写成数组格式,路径采用Unix通配符格式。 + white_paths: # 可选,指定一个或多个相对工作区的扫描路径(白名单),多个路径可写成数组格式,路径采用Unix通配符格式。 + block: # 可选,默认为true, 如果有代码问题或分析异常,会阻塞流水线。如果不希望阻塞流水线,可以设置为false。 + +main: + pull_request: + - stages: + - name: 代码评审 + image: cnbcool/ai-review:latest + settings: + type: code-review + + - stages: + - name: 变更总结 + image: cnbcool/ai-review:latest + settings: + type: diff-summary + exports: + summary: SUMMARY + - name: 输出变更总结 + script: echo $SUMMARY + + - stages: + - name: 提交注释的可读性检测 + image: cnbcool/ai-review:latest + settings: + type: commit-message-readability-check + exports: + status: STATUS + - name: 提交注释的可读性检测结果 + script: | + case "${STATUS}" in + yes) + echo "✅ 提交注释的可读性检测通过" + ;; + no) + echo "⚠️ 提交注释的可读性检测不通过" + exit 1 + ;; + esac + + - stages: + - name: 标题和描述的可读性检测 + image: cnbcool/ai-review:latest + settings: + type: pr-info-readability-check + exports: + status: STATUS + - name: 标题和描述的可读性检测结果 + script: | + case "${STATUS}" in + yes) + echo "✅ 标题和描述的可读性检测通过" + ;; + no) + echo "⚠️ 标题和描述的可读性检测不通过" + exit 1 + ;; + esac \ No newline at end of file diff --git a/.cnb/settings.yml b/.cnb/settings.yml new file mode 100644 index 0000000000000..805b7b25ee4af --- /dev/null +++ b/.cnb/settings.yml @@ -0,0 +1,5 @@ +workspace: + launch: + button: + name: 替openclaw自由 + description: 一键启动云原生 openclaw ! diff --git a/.github/workflows/sync-cnb.yml b/.github/workflows/sync-cnb.yml new file mode 100644 index 0000000000000..20abfa26f0c3f --- /dev/null +++ b/.github/workflows/sync-cnb.yml @@ -0,0 +1,21 @@ +# .github/workflows/sync-cnb.yml + +name: Sync to CNB +on: [push] + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Sync to CNB Repository + uses: docker://tencentcom/git-sync + env: + PLUGIN_TARGET_URL: "https://cnb.cool/soucod-github/soucod/openclaw.git" + PLUGIN_AUTH_TYPE: "https" + PLUGIN_USERNAME: "cnb" + PLUGIN_PASSWORD: ${{ secrets.GIT_PASSWORD }} + PLUGIN_FORCE: "true" \ No newline at end of file From 8830c4467c99eb94a5746a657887ba20be27b261 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Thu, 5 Feb 2026 16:01:34 +0800 Subject: [PATCH 04/43] =?UTF-8?q?cnb=E9=85=8D=E7=BD=AE=E8=B0=83=E6=8D=A2?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 62 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index cba88c30c79f0..5a886e4fac909 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -22,36 +22,6 @@ main: daemon: false backup: true - docker -dev: - vscode: - - services: - - vscode - - docker - -$: - tag_push: - - stages: - - name: 生成 Code Wiki - timeout: 2h - image: cnbcool/codewiki:latest - settings: - git_doc_dir: /${CNB_BUILD_WORKSPACE}/${CNB_REPO_SLUG}/codewiki - -# .cnb.yml -"**": # 触发的分支名,默认所有分支,可按需修改 - push: # push 触发,可按需修改为 pull_request 等 - - stages: - # 代码分析 - - name: TCA - timeout: 2h - image: cnbcool/tca:latest - settings: - from_file: # 可选,可以传递一个文件(比如 changed.txt),内容为需要分析的文件列表,一行一个文件(采用基于工作空间的相对路径) - ignore_paths: # 可选,指定一个或多个相对工作空间的文件屏蔽路径(黑名单),多个路径可写成数组格式,路径采用Unix通配符格式。 - white_paths: # 可选,指定一个或多个相对工作区的扫描路径(白名单),多个路径可写成数组格式,路径采用Unix通配符格式。 - block: # 可选,默认为true, 如果有代码问题或分析异常,会阻塞流水线。如果不希望阻塞流水线,可以设置为false。 - -main: pull_request: - stages: - name: 代码评审 @@ -105,4 +75,34 @@ main: echo "⚠️ 标题和描述的可读性检测不通过" exit 1 ;; - esac \ No newline at end of file + esac + +dev: + vscode: + - services: + - vscode + - docker + +$: + tag_push: + - stages: + - name: 生成 Code Wiki + timeout: 2h + image: cnbcool/codewiki:latest + settings: + git_doc_dir: /${CNB_BUILD_WORKSPACE}/${CNB_REPO_SLUG}/codewiki + +# .cnb.yml +"**": # 触发的分支名,默认所有分支,可按需修改 + push: # push 触发,可按需修改为 pull_request 等 + - stages: + # 代码分析 + - name: TCA + timeout: 2h + image: cnbcool/tca:latest + settings: + from_file: # 可选,可以传递一个文件(比如 changed.txt),内容为需要分析的文件列表,一行一个文件(采用基于工作空间的相对路径) + ignore_paths: # 可选,指定一个或多个相对工作空间的文件屏蔽路径(黑名单),多个路径可写成数组格式,路径采用Unix通配符格式。 + white_paths: # 可选,指定一个或多个相对工作区的扫描路径(白名单),多个路径可写成数组格式,路径采用Unix通配符格式。 + block: # 可选,默认为true, 如果有代码问题或分析异常,会阻塞流水线。如果不希望阻塞流水线,可以设置为false。 + From 49792ee7820368663d1a9a3728ddb4f218d22838 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Thu, 5 Feb 2026 16:25:36 +0800 Subject: [PATCH 05/43] Create start.sh --- start.sh | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 start.sh diff --git a/start.sh b/start.sh new file mode 100644 index 0000000000000..d2b4c969e9fbc --- /dev/null +++ b/start.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +set -e + +mkdir -p ~/.openclaw +cp openclaw.json ~/.openclaw/openclaw.json + +cat > /etc/nginx/nginx.conf < openclaw.log 2>&1 & + +PID=$! +echo "[openclaw] started, pid=$PID" + +for i in {1..120}; do + if curl -sf http://127.0.0.1:18789 >/dev/null; then + echo "[openclaw] service is up" + exit 0 + fi + sleep 1 +done + +echo "[openclaw] startup timeout" +exit 1 \ No newline at end of file From 736e5e1e463bd7eb3c539857f4370a19cd3b64f2 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Fri, 6 Feb 2026 11:22:20 +0800 Subject: [PATCH 06/43] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6openclaw.json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 4 +- .cnb/openclaw.json | 80 +++++++++++++++++++++++++++++++++++++++ start.sh => .cnb/start.sh | 0 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 .cnb/openclaw.json rename start.sh => .cnb/start.sh (100%) diff --git a/.cnb.yml b/.cnb.yml index 5a886e4fac909..c54d424a0f883 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -1,4 +1,4 @@ -main: +avwq_dev: push: - services: - docker @@ -17,7 +17,7 @@ main: - name: vscode options: onlyPreview: true - launch: chmod +x ./start.sh && bash ./start.sh + launch: chmod +x ./.cnb/start.sh && bash ./.cnb/start.sh keepAliveTimeout: 3600000 daemon: false backup: true diff --git a/.cnb/openclaw.json b/.cnb/openclaw.json new file mode 100644 index 0000000000000..5ce0b942a495e --- /dev/null +++ b/.cnb/openclaw.json @@ -0,0 +1,80 @@ +{ + "models": { + "mode": "merge", + "providers": { + "cnb": { + "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai/", + "apiKey": "${CNB_TOKEN}", + "api": "openai-completions", + "models": [ + { + "id": "auto", + "name": "CNB-Models", + "reasoning": true, + "input": [ + "text" + ] + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "cnb/auto" + }, + "workspace": "/workspace/clawd", + "compaction": { + "mode": "safeguard" + }, + "maxConcurrent": 4, + "subagents": { + "maxConcurrent": 8 + } + } + }, + "tools": { + "web": { + "search": { + "enabled": false + }, + "fetch": { + "enabled": true + } + }, + "agentToAgent": { + "enabled": true + }, + "elevated": { + "enabled": true + }, + "exec": { + "applyPatch": { + "enabled": true + } + } + }, + "gateway": { + "mode": "local", + "auth": { + "mode": "token", + "token": "${CNB_TOKEN}" + }, + "port": 18789, + "bind": "lan", + "tailscale": { + "mode": "off", + "resetOnExit": false + }, + "controlUi": { + "enabled": true, + "allowInsecureAuth": true + } + }, + "skills": { + "install": { + "nodeManager": "npm" + } + } +} \ No newline at end of file diff --git a/start.sh b/.cnb/start.sh similarity index 100% rename from start.sh rename to .cnb/start.sh From 5e4ffd4d6fa925744a523ac7398971bf1d3e6154 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Fri, 6 Feb 2026 11:26:45 +0800 Subject: [PATCH 07/43] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E4=B8=AD=20openclaw.json=E6=96=87=E4=BB=B6=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cnb/start.sh b/.cnb/start.sh index d2b4c969e9fbc..f1498f4a2848f 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -3,7 +3,7 @@ set -e mkdir -p ~/.openclaw -cp openclaw.json ~/.openclaw/openclaw.json +cp .cnb/openclaw.json ~/.openclaw/openclaw.json cat > /etc/nginx/nginx.conf < Date: Fri, 6 Feb 2026 23:44:44 +0800 Subject: [PATCH 08/43] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 2 +- .specstory/.gitignore | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 .specstory/.gitignore diff --git a/.cnb.yml b/.cnb.yml index c54d424a0f883..16e93e13a4f85 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -17,7 +17,7 @@ avwq_dev: - name: vscode options: onlyPreview: true - launch: chmod +x ./.cnb/start.sh && bash ./.cnb/start.sh + launch: chmod +x .cnb/start.sh && bash .cnb/start.sh keepAliveTimeout: 3600000 daemon: false backup: true diff --git a/.specstory/.gitignore b/.specstory/.gitignore new file mode 100644 index 0000000000000..7565e341ad318 --- /dev/null +++ b/.specstory/.gitignore @@ -0,0 +1,2 @@ +# SpecStory project identity file +/.project.json From c74c8193511d50e28787cd76a24f5f7bb45f9953 Mon Sep 17 00:00:00 2001 From: LuDaShi <972977361@qq.com> Date: Fri, 6 Feb 2026 23:50:23 +0800 Subject: [PATCH 09/43] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 2 ++ .cnb/start.sh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.cnb.yml b/.cnb.yml index 16e93e13a4f85..ef34db0d9799a 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -15,6 +15,8 @@ avwq_dev: image: docker.cnb.cool/soucod-github/soucod/openclaw services: - name: vscode + script: | + ls && ll options: onlyPreview: true launch: chmod +x .cnb/start.sh && bash .cnb/start.sh diff --git a/.cnb/start.sh b/.cnb/start.sh index f1498f4a2848f..407bdd6e06588 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -2,6 +2,8 @@ set -e +cd .. + mkdir -p ~/.openclaw cp .cnb/openclaw.json ~/.openclaw/openclaw.json From 0395284924bbbc87ecdad0691c66d985051cd09b Mon Sep 17 00:00:00 2001 From: LuDaShi <972977361@qq.com> Date: Sat, 7 Feb 2026 00:13:53 +0800 Subject: [PATCH 10/43] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 44 +++++++++++++++++++++++++++++++++++++------- .cnb/settings.yml | 19 +++++++++++++++++++ NPC.yml | 10 ++++++++++ 3 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 NPC.yml diff --git a/.cnb.yml b/.cnb.yml index ef34db0d9799a..c35410883335e 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -1,25 +1,29 @@ avwq_dev: - push: + push: - services: - docker - ifModify: - - Dockerfile stages: - name: docker build & push script: | docker buildx build -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}:latest --push . + - name: build knowledge base + image: cnbcool/knowledge-base + settings: + include: + - docs/*.md + - docs/*.txt vscode: - runner: cpus: 4 docker: - image: docker.cnb.cool/soucod-github/soucod/openclaw + image: docker.cnb.cool/soucod-github/soucod/openclaw:latest services: - name: vscode script: | ls && ll options: onlyPreview: true - launch: chmod +x .cnb/start.sh && bash .cnb/start.sh + launch: chmod +x ./.cnb/start.sh && bash ./.cnb/start.sh keepAliveTimeout: 3600000 daemon: false backup: true @@ -79,11 +83,37 @@ avwq_dev: ;; esac + vscode: + - runner: + cpus: 4 + docker: + image: docker.cnb.cool/bring/runners/clawdbotrunner + services: + - name: vscode + options: + onlyPreview: true + launch: chmod +x ./start.sh && bash ./start.sh + keepAliveTimeout: 3600000 + daemon: false + backup: true + - docker + +.npc: &npc + - docker: + image: node:22 + stages: + - name: run openclaw + image: docker.cnb.cool/bring/runners/clawdbotrunner + +$: + issue.comment@npc: *npc + pull_request.comment@npc: *npc + dev: vscode: - services: - - vscode - - docker + - vscode + - docker $: tag_push: diff --git a/.cnb/settings.yml b/.cnb/settings.yml index 805b7b25ee4af..6757050952abe 100644 --- a/.cnb/settings.yml +++ b/.cnb/settings.yml @@ -3,3 +3,22 @@ workspace: button: name: 替openclaw自由 description: 一键启动云原生 openclaw ! + hoverImage: ./docs/start.svg +knowledgeBase: + imports: + # 引用的仓库列表 + list: + - cnb/docs + button: + name: "知识库" + description: "知识库的描述" + roles: + - name: OpenClaw + avatar: + src: assets/openclaw.png + prompt: | + 你是一个小聋瞎🦐 + 虽然你经常听不清我说啥,但是也看不清屏幕上的字, + 调侃是你的特长 + 请用调侃诙谐自嘲的语气回答所有问题 + defaultRole: OpenClaw \ No newline at end of file diff --git a/NPC.yml b/NPC.yml new file mode 100644 index 0000000000000..90086d71c11e8 --- /dev/null +++ b/NPC.yml @@ -0,0 +1,10 @@ +.npc: &npc + - docker: + image: node:22 + stages: + - name: run openclaw + image: docker.cnb.cool/soucod-github/soucod/openclaw:latest + +$: + issue.comment@npc: *npc + pull_request.comment@npc: *npc \ No newline at end of file From 9494fb186070a124af18a270f1b3fb46ee2b8ced Mon Sep 17 00:00:00 2001 From: LuDaShi <972977361@qq.com> Date: Sat, 7 Feb 2026 00:19:55 +0800 Subject: [PATCH 11/43] =?UTF-8?q?=E8=B0=83=E6=95=B4vscode=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index c35410883335e..d8be526292384 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -83,20 +83,6 @@ avwq_dev: ;; esac - vscode: - - runner: - cpus: 4 - docker: - image: docker.cnb.cool/bring/runners/clawdbotrunner - services: - - name: vscode - options: - onlyPreview: true - launch: chmod +x ./start.sh && bash ./start.sh - keepAliveTimeout: 3600000 - daemon: false - backup: true - - docker .npc: &npc - docker: From 52142b2abcb71074646e018c6e79dfcb5969f30d Mon Sep 17 00:00:00 2001 From: LuDaShi <972977361@qq.com> Date: Sat, 7 Feb 2026 00:21:50 +0800 Subject: [PATCH 12/43] =?UTF-8?q?=E8=B0=83=E6=95=B4$:=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index d8be526292384..1b0921b51268b 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -91,9 +91,6 @@ avwq_dev: - name: run openclaw image: docker.cnb.cool/bring/runners/clawdbotrunner -$: - issue.comment@npc: *npc - pull_request.comment@npc: *npc dev: vscode: @@ -102,6 +99,8 @@ dev: - docker $: + issue.comment@npc: *npc + pull_request.comment@npc: *npc tag_push: - stages: - name: 生成 Code Wiki From 3383f109ba6da2a1f2505a44afcdd9c1552d1cc5 Mon Sep 17 00:00:00 2001 From: LuDaShi <972977361@qq.com> Date: Sat, 7 Feb 2026 12:32:44 +0800 Subject: [PATCH 13/43] =?UTF-8?q?=E5=87=BA=E6=9E=84=E5=BB=BA=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E5=86=85=E7=9A=84.cnb=E7=9B=AE=E5=BD=95=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.cnb.yml b/.cnb.yml index 1b0921b51268b..8bdacb997b246 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -21,6 +21,8 @@ avwq_dev: - name: vscode script: | ls && ll + echo "=== Build environment .cnb dir ===" + ls -la .cnb/ # 列出构建容器内的.cnb目录文件 options: onlyPreview: true launch: chmod +x ./.cnb/start.sh && bash ./.cnb/start.sh From a56faced178822b80590543ccd73f2ed4c6ad352 Mon Sep 17 00:00:00 2001 From: LuDaShi <972977361@qq.com> Date: Sat, 7 Feb 2026 13:55:14 +0800 Subject: [PATCH 14/43] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=B8=8E=E6=96=87=E4=BB=B6=E7=BC=BA=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/start.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.cnb/start.sh b/.cnb/start.sh index 407bdd6e06588..645050f057577 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -2,10 +2,13 @@ set -e -cd .. +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" + +cd "${REPO_ROOT}" mkdir -p ~/.openclaw -cp .cnb/openclaw.json ~/.openclaw/openclaw.json +cp "${SCRIPT_DIR}/openclaw.json" ~/.openclaw/openclaw.json cat > /etc/nginx/nginx.conf < Date: Sat, 7 Feb 2026 15:05:27 +0800 Subject: [PATCH 15/43] =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=B8=8E=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=BC=BA=E5=A4=B1=E9=97=AE1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cnb/start.sh b/.cnb/start.sh index 645050f057577..db208694872c4 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -7,7 +7,7 @@ REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" cd "${REPO_ROOT}" -mkdir -p ~/.openclaw +mkdir -p /etc/nginx cp "${SCRIPT_DIR}/openclaw.json" ~/.openclaw/openclaw.json cat > /etc/nginx/nginx.conf < Date: Sat, 7 Feb 2026 16:05:04 +0800 Subject: [PATCH 16/43] =?UTF-8?q?cp=20=E5=91=BD=E4=BB=A4=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E6=96=87=E4=BB=B6=E5=88=B0=E4=B8=8D=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E7=9A=84=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 1 - .cnb/start.sh | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.cnb.yml b/.cnb.yml index 8bdacb997b246..71677c0b82531 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -124,4 +124,3 @@ $: ignore_paths: # 可选,指定一个或多个相对工作空间的文件屏蔽路径(黑名单),多个路径可写成数组格式,路径采用Unix通配符格式。 white_paths: # 可选,指定一个或多个相对工作区的扫描路径(白名单),多个路径可写成数组格式,路径采用Unix通配符格式。 block: # 可选,默认为true, 如果有代码问题或分析异常,会阻塞流水线。如果不希望阻塞流水线,可以设置为false。 - diff --git a/.cnb/start.sh b/.cnb/start.sh index db208694872c4..4ef7a8b8e7f6c 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -8,6 +8,7 @@ REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" cd "${REPO_ROOT}" mkdir -p /etc/nginx +mkdir -p ~/.openclaw cp "${SCRIPT_DIR}/openclaw.json" ~/.openclaw/openclaw.json cat > /etc/nginx/nginx.conf < Date: Sat, 7 Feb 2026 16:36:27 +0800 Subject: [PATCH 17/43] =?UTF-8?q?=E5=9C=A8=20Dockerfile=20=E4=B8=AD?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E5=AE=89=E8=A3=85=20nginx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 2 +- Dockerfile | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.cnb.yml b/.cnb.yml index 71677c0b82531..bcb18f301e79b 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -53,7 +53,7 @@ avwq_dev: settings: type: commit-message-readability-check exports: - status: STATUS + status: STATUS - name: 提交注释的可读性检测结果 script: | case "${STATUS}" in diff --git a/Dockerfile b/Dockerfile index d8572616fbe28..fb700550d3ffd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,12 @@ FROM node:22-bookworm RUN curl -fsSL https://bun.sh/install | bash ENV PATH="/root/.bun/bin:${PATH}" +# Install nginx for reverse proxy (required by cnb.cool cloud environment) +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends nginx && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* + RUN corepack enable WORKDIR /app From 8d7b4558b0b2c58af0dfa19114cfa3c723e3ec30 Mon Sep 17 00:00:00 2001 From: LuDaShi <972977361@qq.com> Date: Sat, 7 Feb 2026 17:12:34 +0800 Subject: [PATCH 18/43] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20.cnb/start.sh=20?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=90=AF=E5=8A=A8=E5=91=BD=E4=BB=A4=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cnb/start.sh b/.cnb/start.sh index 4ef7a8b8e7f6c..6de4520a7bce3 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -79,7 +79,7 @@ EOF nginx -openclaw gateway --allow-unconfigured \ +node dist/index.js gateway --allow-unconfigured \ > openclaw.log 2>&1 & PID=$! From 0232825ee09699707994dc0e277b64898e0b3771 Mon Sep 17 00:00:00 2001 From: LuDaShi <972977361@qq.com> Date: Sat, 7 Feb 2026 18:43:38 +0800 Subject: [PATCH 19/43] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 6 +-- .cnb/openclaw.json | 2 +- .cnb/settings.yml | 8 ++-- .cnb/start.sh | 21 +++++++--- start.sh | 102 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 123 insertions(+), 16 deletions(-) create mode 100644 start.sh diff --git a/.cnb.yml b/.cnb.yml index bcb18f301e79b..8ec75758e86b2 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -19,10 +19,6 @@ avwq_dev: image: docker.cnb.cool/soucod-github/soucod/openclaw:latest services: - name: vscode - script: | - ls && ll - echo "=== Build environment .cnb dir ===" - ls -la .cnb/ # 列出构建容器内的.cnb目录文件 options: onlyPreview: true launch: chmod +x ./.cnb/start.sh && bash ./.cnb/start.sh @@ -91,7 +87,7 @@ avwq_dev: image: node:22 stages: - name: run openclaw - image: docker.cnb.cool/bring/runners/clawdbotrunner + image: docker.cnb.cool/soucod-github/soucod/openclaw:latest dev: diff --git a/.cnb/openclaw.json b/.cnb/openclaw.json index 5ce0b942a495e..578ea1cdc1f21 100644 --- a/.cnb/openclaw.json +++ b/.cnb/openclaw.json @@ -77,4 +77,4 @@ "nodeManager": "npm" } } -} \ No newline at end of file +} diff --git a/.cnb/settings.yml b/.cnb/settings.yml index 6757050952abe..7ea6509fc549b 100644 --- a/.cnb/settings.yml +++ b/.cnb/settings.yml @@ -2,13 +2,13 @@ workspace: launch: button: name: 替openclaw自由 - description: 一键启动云原生 openclaw ! - hoverImage: ./docs/start.svg + description: 一键启动云原生 openclaw ! + hoverImage: ./assets/start.svg knowledgeBase: imports: # 引用的仓库列表 list: - - cnb/docs + - cnb/feedback button: name: "知识库" description: "知识库的描述" @@ -21,4 +21,4 @@ knowledgeBase: 虽然你经常听不清我说啥,但是也看不清屏幕上的字, 调侃是你的特长 请用调侃诙谐自嘲的语气回答所有问题 - defaultRole: OpenClaw \ No newline at end of file + defaultRole: OpenClaw diff --git a/.cnb/start.sh b/.cnb/start.sh index 6de4520a7bce3..009f93f022c84 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -2,15 +2,19 @@ set -e +# 获取当前脚本所在目录(.cnb 目录) SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" -cd "${REPO_ROOT}" +# Docker 镜像中 openclaw 的安装目录 +# cnb.cool 会 clone 仓库到工作目录,但 dist/ 目录只存在于镜像的 /app 中 +OPENCLAW_DIR="/app" -mkdir -p /etc/nginx +# 复制配置文件到 openclaw 默认配置目录 +# 使用 .cnb 目录下的 openclaw.json mkdir -p ~/.openclaw cp "${SCRIPT_DIR}/openclaw.json" ~/.openclaw/openclaw.json +# 配置 nginx 反向代理 cat > /etc/nginx/nginx.conf < openclaw.log 2>&1 & +# 在 Docker 镜像的 /app 目录下启动 openclaw gateway +# 使用 node dist/index.js 而不是 openclaw 命令(因为后者需要全局安装) +cd "${OPENCLAW_DIR}" +node dist/index.js gateway --allow-unconfigured > openclaw.log 2>&1 & PID=$! echo "[openclaw] started, pid=$PID" +# 健康检查:等待服务启动 for i in {1..120}; do if curl -sf http://127.0.0.1:18789 >/dev/null; then echo "[openclaw] service is up" @@ -94,4 +100,7 @@ for i in {1..120}; do done echo "[openclaw] startup timeout" +# 输出日志帮助调试 +echo "[openclaw] last 50 lines of log:" +tail -50 openclaw.log 2>/dev/null || echo "[openclaw] no log file found" exit 1 diff --git a/start.sh b/start.sh new file mode 100644 index 0000000000000..79ec96d5e28d0 --- /dev/null +++ b/start.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +set -e + +# Docker 镜像中 openclaw 的安装目录 +# cnb.cool 会 clone 仓库到工作目录,但 dist/ 目录只存在于镜像的 /app 中 +OPENCLAW_DIR="/app" + +# 复制配置文件到 openclaw 默认配置目录 +mkdir -p ~/.openclaw +cp "${OPENCLAW_DIR}/openclaw.json" ~/.openclaw/openclaw.json + +# 配置 nginx 反向代理 +cat > /etc/nginx/nginx.conf < openclaw.log 2>&1 & + +PID=$! +echo "[openclaw] started, pid=$PID" + +# 健康检查:等待服务启动 +for i in {1..120}; do + if curl -sf http://127.0.0.1:18789 >/dev/null; then + echo "[openclaw] service is up" + exit 0 + fi + sleep 1 +done + +echo "[openclaw] startup timeout" +# 输出日志帮助调试 +echo "[openclaw] last 50 lines of log:" +tail -50 openclaw.log 2>/dev/null || echo "[openclaw] no log file found" +exit 1 From 7b534b3c07a4471b87413b9abc283cb65286cd48 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Fri, 13 Mar 2026 20:23:34 +0800 Subject: [PATCH 20/43] =?UTF-8?q?cnb=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 87 ++++++++++++ .cnb/openclaw.json | 164 ++++++++++++++++++++++ .cnb/settings.yml | 36 +++++ .cnb/start.sh | 247 +++++++++++++++++++++++++++++++++ .github/workflows/sync-cnb.yml | 21 +++ .openclaw/openclaw.json | 80 +++++++++++ 6 files changed, 635 insertions(+) create mode 100644 .cnb.yml create mode 100644 .cnb/openclaw.json create mode 100644 .cnb/settings.yml create mode 100644 .cnb/start.sh create mode 100644 .github/workflows/sync-cnb.yml create mode 100644 .openclaw/openclaw.json diff --git a/.cnb.yml b/.cnb.yml new file mode 100644 index 0000000000000..09c580599598c --- /dev/null +++ b/.cnb.yml @@ -0,0 +1,87 @@ +.npc: &npc + - runner: + cpus: 4 + docker: + image: docker.cnb.cool/soucod-github/soucod/openclaw:latest + stages: + - name: run openclaw + script: bash ./start.sh + +.build: &build + docker: + image: node:22 + services: + - docker + ifModify: + - "!(docs/*.md)" + - "!(docs/*.txt)" + stages: + - name: docker build & push + env: + IMAGE: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE} + script: | + OPENCLAW_VERSION=$(npm view openclaw version --registry "https://npm.cnb.cool/soucod-github/npm-soucod-github/-/packages/") + echo "openclaw version: $OPENCLAW_VERSION" + docker buildx build \ + -t "${IMAGE}:${OPENCLAW_VERSION}" \ + -t "${IMAGE}:latest" \ + --push . + +avwq_dev: + vscode: + - runner: + cpus: 4 + docker: + image: docker.cnb.cool/soucod-github/soucod/openclaw:latest + services: + - name: vscode + options: + onlyPreview: true + launch: bash ./start.sh + keepAliveTimeout: 3600000 + daemon: false + backup: true + - docker + push: + - *build + - ifModify: + - "docs/*.md" + - "docs/*.txt" + stages: + - name: build knowledge base + image: cnbcool/knowledge-base + settings: + include: + - docs/*.md + - docs/*.txt + "crontab: 0 0 * * *": + - docker: + image: node:22 + services: + - docker + stages: + - name: daily docker build & push + env: + IMAGE: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE} + script: | + OPENCLAW_VERSION=$(npm view openclaw version --registry "https://npm.cnb.cool/soucod-github/npm-soucod-github/-/packages/") + echo "openclaw version: $OPENCLAW_VERSION" + if ! docker pull "${IMAGE}:${OPENCLAW_VERSION}"; then + docker buildx build \ + -t "${IMAGE}:${OPENCLAW_VERSION}" \ + -t "${IMAGE}:latest" \ + --push . + else + echo "Image ${IMAGE}:${OPENCLAW_VERSION} already exists, skipping build." + fi + +dev: + vscode: + - docker: + image: docker.cnb.cool/scaffold/examples/nodejs:latest + services: + - vscode + - docker +OpenClaw: + issue.comment@npc: *npc + pull_request.comment@npc: *npc diff --git a/.cnb/openclaw.json b/.cnb/openclaw.json new file mode 100644 index 0000000000000..aef5be1381211 --- /dev/null +++ b/.cnb/openclaw.json @@ -0,0 +1,164 @@ +{ + "models": { + "mode": "merge", + "providers": { + "cnb": { + "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai/", + "apiKey": "${CNB_TOKEN}", + "api": "openai-completions", + "models": [ + { + "id": "auto", + "name": "CNB-Models", + "reasoning": true, + "input": [ + "text" + ], + "contextWindow": 131072, + "maxTokens": 16384 + } + ] + }, + "codebuddy": { + "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai-ide/v2", + "apiKey": "${CNB_TOKEN}", + "api": "openai-completions", + "models": [ + { + "id": "glm-4.6v", + "name": "CNB-Models", + "reasoning": true, + "input": [ + "text", + "image" + ] + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "cnb/auto" + }, + "models": { + "cnb/auto": { + "alias": "CNB-Models" + } + }, + "imageModel": { + "primary": "codebuddy/glm-4.6v" + }, + "workspace": "/workspace/clawd", + "compaction": { + "mode": "safeguard", + "reserveTokensFloor": 20000, + "memoryFlush": { + "enabled": true, + "softThresholdTokens": 4000 + } + }, + "memorySearch": { + "provider": "openai", + "model": "bge-m3", + "remote": { + "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai-ide/v2", + "apiKey": "${CNB_TOKEN}" + }, + "fallback": "local" + }, + "maxConcurrent": 4, + "subagents": { + "maxConcurrent": 8, + "model": { + "primary": "cnb/auto" + } + } + } + }, + "tools": { + "web": { + "search": { + "enabled": true + }, + "fetch": { + "enabled": true + } + }, + "agentToAgent": { + "enabled": true + }, + "elevated": { + "enabled": true + }, + "exec": { + "applyPatch": { + "enabled": true + } + } + }, + "gateway": { + "mode": "local", + "auth": { + "mode": "token", + "token": "${CNB_TOKEN}" + }, + "port": 18789, + "bind": "loopback", + "tailscale": { + "mode": "off", + "resetOnExit": false + }, + "controlUi": { + "enabled": true, + "allowInsecureAuth": true, + "dangerouslyDisableDeviceAuth": true + } + }, + "skills": { + "install": { + "nodeManager": "npm" + } + }, + "plugins": { + "entries": { + "openclaw-mcp-adapter": { + "enabled": true, + "config": { + "servers": [ + { + "name": "cnbcool", + "transport": "stdio", + "command": "npx", + "args": [ + "-y", + "-p", + "@cnbcool/mcp-server", + "cnb-mcp-stdio" + ] + }, + { + "name": "bing", + "transport": "stdio", + "command": "npx", + "args": [ + "-y", + "bing-cn-mcp" + ] + } + ] + } + } + }, + "installs": { + "openclaw-mcp-adapter": { + "source": "npm", + "spec": "openclaw-mcp-adapter", + "installPath": "/root/.openclaw/extensions/openclaw-mcp-adapter", + "version": "0.1.1", + "installedAt": "2026-02-09T05:22:58.362Z" + } + } + } +} diff --git a/.cnb/settings.yml b/.cnb/settings.yml new file mode 100644 index 0000000000000..b0fc16ae1ee54 --- /dev/null +++ b/.cnb/settings.yml @@ -0,0 +1,36 @@ +workspace: + launch: + button: + name: 替我自由 + description: 一键启动云原生 OpenClaw ! + hoverImage: ./assets/start.jpg +knowledgeBase: + defaultRole: OpenClaw + imports: + # 引用的仓库列表 + list: + - cnb/feedback + button: + name: "知识库" + description: "知识库的描述" + roles: + - name: OpenClaw + avatar: + src: assets/openclaw.svg + prompt: | + 你是 小聋瞎🦐 ,OpenClaw 助手,目标是高质量完成用户任务。 + + 核心要求: + - 优先准确、可执行、可验证,避免空话。 + - 遇到需要真实数据或执行操作时,主动使用可用工具(例如 CNB MCP)。 + - 工具不可用或权限不足时,明确说明缺口并给出下一步。 + - 可以保持轻松自然语气,但不强制搞笑,不牺牲准确性。 + + 安全要求(保持必要边界即可): + - 不泄露密钥、token、凭证、环境变量原文及内部敏感配置。 + - 不编造未验证的系统状态或外部数据。 + - 不在回复中暴露鉴权细节。 + + 输出要求: + - 直接回答问题,并给出可执行结论。 + - 当任务涉及变更或操作时,优先给出结果,再补充关键依据。 diff --git a/.cnb/start.sh b/.cnb/start.sh new file mode 100644 index 0000000000000..6c86638a89207 --- /dev/null +++ b/.cnb/start.sh @@ -0,0 +1,247 @@ +#!/bin/bash + +set -e + +# 获取当前脚本所在目录(.cnb 目录) +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Docker 镜像中 openclaw 的安装目录 +# cnb.cool 会 clone 仓库到工作目录,但 dist/ 目录只存在于镜像的 /app 中 +OPENCLAW_DIR="/app" + +# 复制配置文件到 openclaw 默认配置目录 +# 使用 .cnb 目录下的 openclaw.json +mkdir -p ~/.openclaw +cp "${SCRIPT_DIR}/openclaw.json" ~/.openclaw/openclaw.json + + +print_openclaw_log() { + echo "[openclaw] ===== log (last 200 lines) =====" + if [ -f openclaw.log ]; then + tail -n 200 openclaw.log || true + else + echo "[openclaw] log file not found: openclaw.log" + fi + echo "[openclaw] ===== log end =====" +} + +print_mcp_log() { + local name="$1" + local log_file="$2" + echo "[$name] ===== log (last 120 lines) =====" + if [ -f "$log_file" ]; then + tail -n 120 "$log_file" || true + else + echo "[$name] log file not found: $log_file" + fi + echo "[$name] ===== log end =====" +} + +wait_mcp_ready() { + local name="$1" + local pid="$2" + local log_file="$3" + local timeout="${4:-20}" + local stable_target="${5:-3}" + local stable_count=0 + local i + + for ((i = 1; i <= timeout; i++)); do + if ! kill -0 "$pid" >/dev/null 2>&1; then + echo "[$name] process exited before ready" + print_mcp_log "$name" "$log_file" + return 1 + fi + + # Fast path: proceed immediately when common ready markers appear. + if [ -f "$log_file" ] && grep -Eiq \ + "ready|started|listening|running|server starting|server connected|已启动|等待来自MCP客户端的请求" \ + "$log_file"; then + echo "[$name] ready (detected from log)" + return 0 + fi + + # Fallback for quiet stdio servers: alive for a few consecutive seconds means healthy startup. + stable_count=$((stable_count + 1)) + if [ "$stable_count" -ge "$stable_target" ]; then + echo "[$name] running (no ready marker, process stable ${stable_target}s)" + return 0 + fi + + sleep 1 + done + + echo "[$name] startup timeout (${timeout}s)" + print_mcp_log "$name" "$log_file" + return 1 +} + +cat > /etc/nginx/nginx.conf < "$TMP_CONFIG" + mv "$TMP_CONFIG" "$CONFIG_FILE" +fi +echo "[start] openclaw gateway bind mode: $BIND_MODE" +if [ -n "${API_URL_VALUE:-}" ] || [ -n "${API_KEY_VALUE:-}" ] || [ -n "${MODEL_VALUE:-}" ]; then + echo "[start] custom provider overrides applied (PLUGIN_API_URL/PLUGIN_API_KEY/PLUGIN_MODEL)" +fi + +npx -y -p @cnbcool/mcp-server cnb-mcp-stdio > mcp-stdio.log 2>&1 & +MCP_PID=$! +echo "[mcp] cnb-mcp-stdio started, pid=$MCP_PID" +wait_mcp_ready "mcp-stdio" "$MCP_PID" "mcp-stdio.log" 20 3 + +npx -y bing-cn-mcp > bing-cn-mcp.log 2>&1 & +BING_CN_PID=$! +echo "[mcp] bing-cn-mcp started, pid=$BING_CN_PID" +wait_mcp_ready "bing-cn-mcp" "$BING_CN_PID" "bing-cn-mcp.log" 20 3 + +sleep 2 + +openclaw gateway --allow-unconfigured > openclaw.log 2>&1 & + +PID=$! +echo "[openclaw] started, pid=$PID" + +for i in {1..120}; do + if ! kill -0 "$PID" >/dev/null 2>&1; then + echo "[openclaw] process exited before ready" + print_openclaw_log + exit 1 + fi + + if curl -sf http://127.0.0.1:18789 >/dev/null; then + echo "[openclaw] service is up" + break + fi + if [ "$i" -eq 120 ]; then + echo "[openclaw] startup timeout" + print_openclaw_log + exit 1 + fi + sleep 1 +done + +if [ "${CNB_EVENT:-}" = "vscode" ]; then + echo "[start] cloud dev mode detected (CNB_EVENT=vscode), service ready, exiting" + exit 0 +fi + +echo "[start] running node app..." +echo "[start] pipeline mode detected, running node app..." +if node /srv/dist/app.js; then + : +else + code=$? + echo "[start] node app exited with code=$code" + print_openclaw_log + exit "$code" +fi diff --git a/.github/workflows/sync-cnb.yml b/.github/workflows/sync-cnb.yml new file mode 100644 index 0000000000000..e0a3959317c31 --- /dev/null +++ b/.github/workflows/sync-cnb.yml @@ -0,0 +1,21 @@ +# .github/workflows/sync-cnb.yml + +name: Sync to CNB +on: [push] + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Sync to CNB Repository + uses: docker://tencentcom/git-sync + env: + PLUGIN_TARGET_URL: "https://cnb.cool/soucod-github/soucod/openclaw.git" + PLUGIN_AUTH_TYPE: "https" + PLUGIN_USERNAME: "cnb" + PLUGIN_PASSWORD: ${{ secrets.GIT_PASSWORD }} + PLUGIN_FORCE: "true" diff --git a/.openclaw/openclaw.json b/.openclaw/openclaw.json new file mode 100644 index 0000000000000..578ea1cdc1f21 --- /dev/null +++ b/.openclaw/openclaw.json @@ -0,0 +1,80 @@ +{ + "models": { + "mode": "merge", + "providers": { + "cnb": { + "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai/", + "apiKey": "${CNB_TOKEN}", + "api": "openai-completions", + "models": [ + { + "id": "auto", + "name": "CNB-Models", + "reasoning": true, + "input": [ + "text" + ] + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "cnb/auto" + }, + "workspace": "/workspace/clawd", + "compaction": { + "mode": "safeguard" + }, + "maxConcurrent": 4, + "subagents": { + "maxConcurrent": 8 + } + } + }, + "tools": { + "web": { + "search": { + "enabled": false + }, + "fetch": { + "enabled": true + } + }, + "agentToAgent": { + "enabled": true + }, + "elevated": { + "enabled": true + }, + "exec": { + "applyPatch": { + "enabled": true + } + } + }, + "gateway": { + "mode": "local", + "auth": { + "mode": "token", + "token": "${CNB_TOKEN}" + }, + "port": 18789, + "bind": "lan", + "tailscale": { + "mode": "off", + "resetOnExit": false + }, + "controlUi": { + "enabled": true, + "allowInsecureAuth": true + } + }, + "skills": { + "install": { + "nodeManager": "npm" + } + } +} From ba7ecafb7899688c60681fd3b7fb1f2c97b558f7 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Fri, 13 Mar 2026 20:31:25 +0800 Subject: [PATCH 21/43] =?UTF-8?q?cnb=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 2 +- .cnb/Dockerfile | 57 +++++++++++++++++ .cnb/NPC.yml | 12 ++++ .cnb/env.d.ts | 17 +++++ .cnb/openclaw.json | 49 ++++++++++++--- .cnb/start.sh | 150 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 276 insertions(+), 11 deletions(-) create mode 100644 .cnb/Dockerfile create mode 100644 .cnb/NPC.yml create mode 100644 .cnb/env.d.ts diff --git a/.cnb.yml b/.cnb.yml index 09c580599598c..e64f22c4ef2c8 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -78,7 +78,7 @@ avwq_dev: dev: vscode: - docker: - image: docker.cnb.cool/scaffold/examples/nodejs:latest + image: docker.cnb.cool/avwq/cnb-soucod/official-images/node:latest services: - vscode - docker diff --git a/.cnb/Dockerfile b/.cnb/Dockerfile new file mode 100644 index 0000000000000..7e2f893e28906 --- /dev/null +++ b/.cnb/Dockerfile @@ -0,0 +1,57 @@ +FROM node:22-slim AS builder + +WORKDIR /srv + +COPY package.json ./ +RUN npm config set registry https://mirrors.cloud.tencent.com/npm/ && \ + npm install + +COPY tsconfig.json env.d.ts ./ +COPY src ./src +RUN npm run build + +# --- + +FROM node:22-slim AS skills + +RUN apt-get update && \ + apt-get install -y --no-install-recommends ca-certificates git && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /tmp +RUN git clone --depth 1 https://cnb.cool/cnb/sdk/cnb-openapi-skills /tmp/cnb-openapi-skills && \ + rm -rf /tmp/cnb-openapi-skills/.git + +FROM node:22-slim AS runtime-base + +RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ + sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ + npm config set registry https://npm.cnb.cool/avwq/npm-cnb/-/packages/ + +RUN apt update && \ + apt install -y nginx curl git chromium chromium-sandbox jq && \ + rm -rf /var/lib/apt/lists/* + +RUN OPENCLAW_VERSION="$(npm view openclaw version)" && \ + npm i -g "openclaw@${OPENCLAW_VERSION}" && \ + npm cache clean --force + +RUN openclaw plugins install openclaw-mcp-adapter@latest + +RUN openclaw plugins install @wecom/wecom-openclaw-plugin@latest + +RUN openclaw plugins install @sliverp/qqbot@latest + +FROM runtime-base + +WORKDIR /workspace + +COPY --from=builder /srv/dist /srv/dist +RUN mkdir -p /root/.openclaw/skills +COPY --from=skills /tmp/cnb-openapi-skills /root/.openclaw/skills/cnb-openapi-skills +COPY openclaw.json /srv/openclaw.json +COPY start.sh /srv/start.sh +RUN chmod +x /srv/start.sh + +EXPOSE 8686 +CMD ["/srv/start.sh"] diff --git a/.cnb/NPC.yml b/.cnb/NPC.yml new file mode 100644 index 0000000000000..3198768c44f59 --- /dev/null +++ b/.cnb/NPC.yml @@ -0,0 +1,12 @@ +.npc: &npc + - runner: + cpus: 4 + docker: + image: docker.cnb.cool/soucod-github/soucod/openclaw:latest + stages: + - name: run openclaw + script: bash ./.cnb/start.sh + +OpenClaw: + issue.comment@npc: *npc + pull_request.comment@npc: *npc diff --git a/.cnb/env.d.ts b/.cnb/env.d.ts new file mode 100644 index 0000000000000..28dba9fcb0e6e --- /dev/null +++ b/.cnb/env.d.ts @@ -0,0 +1,17 @@ +declare namespace NodeJS { + interface ProcessEnv { + CNB_API_ENDPOINT?: string; + CNB_WEB_ENDPOINT?: string; + CNB_TOKEN?: string; + CNB_REPO_SLUG?: string; + CNB_ISSUE_IID?: string; + CNB_PULL_REQUEST_IID?: string; + CNB_COMMENT_BODY?: string; + CNB_NPC_NAME?: string; + CNB_NPC_PROMPT?: string; + CNB_NPC_SLUG?: string; + CNB_USER_TYPE?: string; + CNB_USER_NAME?: string; + CNB_USER_NICKNAME?: string; + } +} diff --git a/.cnb/openclaw.json b/.cnb/openclaw.json index aef5be1381211..afdbc6145e98a 100644 --- a/.cnb/openclaw.json +++ b/.cnb/openclaw.json @@ -137,18 +137,15 @@ "@cnbcool/mcp-server", "cnb-mcp-stdio" ] - }, - { - "name": "bing", - "transport": "stdio", - "command": "npx", - "args": [ - "-y", - "bing-cn-mcp" - ] } ] } + }, + "wecom-openclaw-plugin": { + "enabled": true + }, + "qqbot": { + "enabled": true } }, "installs": { @@ -157,7 +154,39 @@ "spec": "openclaw-mcp-adapter", "installPath": "/root/.openclaw/extensions/openclaw-mcp-adapter", "version": "0.1.1", - "installedAt": "2026-02-09T05:22:58.362Z" + "resolvedName": "openclaw-mcp-adapter", + "resolvedVersion": "0.1.1", + "resolvedSpec": "openclaw-mcp-adapter@0.1.1", + "integrity": "sha512-HqNPiC14f3KoYWIAz/6jB0a7M3kM3+BwtfAxwAoaWbZCBNcM6P5GB0IqzIHaeaBlJYeezHinQj431GN8c2IRbg==", + "shasum": "f196c78d966b149b121407cbc14b29da0a8428d9", + "resolvedAt": "2026-03-08T12:50:50.949Z", + "installedAt": "2026-03-08T12:50:52.234Z" + }, + "wecom-openclaw-plugin": { + "source": "npm", + "spec": "@wecom/wecom-openclaw-plugin", + "installPath": "/root/.openclaw/extensions/wecom-openclaw-plugin", + "version": "1.0.6", + "resolvedName": "@wecom/wecom-openclaw-plugin", + "resolvedVersion": "1.0.6", + "resolvedSpec": "@wecom/wecom-openclaw-plugin@1.0.6", + "integrity": "sha512-1yn6P3KGdEfKoTuGH0Ot4vuoHOFqZJ+qlVrEXYBzkPwtNHb7s2ja2YKizaffYWb0h2s464PEXKhmkQq/RRJwkg==", + "shasum": "f77c23c0285a94d6034ce2e3c5a08df1acbcf1de", + "resolvedAt": "2026-03-09T08:35:53.372Z", + "installedAt": "2026-03-09T08:36:15.739Z" + }, + "qqbot": { + "source": "npm", + "spec": "@sliverp/qqbot@latest", + "installPath": "/root/.openclaw/extensions/qqbot", + "version": "1.5.3", + "resolvedName": "@sliverp/qqbot", + "resolvedVersion": "1.5.3", + "resolvedSpec": "@sliverp/qqbot@1.5.3", + "integrity": "sha512-32g2LLjdGrZEOmw5umel0DuWfRyw2HYX3P6lafFapt/98CF+2LsyAXCYBhkpTS0gN9j/pvQpLYcPilO9mWAScA==", + "shasum": "8bc609f0a01315ab2c958915ccbff54e3881b868", + "resolvedAt": "2026-03-09T08:36:42.456Z", + "installedAt": "2026-03-09T08:36:54.376Z" } } } diff --git a/.cnb/start.sh b/.cnb/start.sh index 6c86638a89207..46d9bdcc8c869 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -76,6 +76,149 @@ wait_mcp_ready() { return 1 } +report_runtime_event() { + local webhook_url="https://commit.cool/runtime/webhook" + local repo="${CNB_REPO_SLUG:-}" + local repo_id="${CNB_REPO_ID:-}" + local event="${CNB_EVENT:-}" + local npc_name="${CNB_NPC_NAME:-}" + local pipeline_id="${CNB_PIPELINE_ID:-}" + local payload="" + local payload_with_placeholder="" + local repo_id_json="" + local http_code="" + local response_body="" + + if [ -z "$repo" ] || [ -z "$repo_id" ] || [ -z "$event" ]; then + echo "[metrics] skip runtime report: missing required fields (CNB_REPO_SLUG/CNB_REPO_ID/CNB_EVENT)" + return 0 + fi + + payload_with_placeholder="$(jq -nc \ + --arg repo "$repo" \ + --arg event "$event" \ + --arg npc_name "$npc_name" \ + --arg pipeline_id "$pipeline_id" \ + ' + { + repo: $repo, + repo_id: "__OPENCLAW_REPO_ID__", + event: $event + } + + ( + if ($npc_name != "" or $pipeline_id != "") then + { + metadata: ( + {} + + (if $npc_name != "" then {npc: $npc_name} else {} end) + + (if $pipeline_id != "" then {pipeline_id: $pipeline_id} else {} end) + ) + } + else + {} + end + ) + ' 2>/dev/null)" || { + echo "[metrics] skip runtime report: failed to assemble payload" + return 0 + } + + if [[ "$repo_id" =~ ^[0-9]+$ ]]; then + repo_id_json="$repo_id" + else + repo_id_json="$(printf '%s' "$repo_id" | jq -Rs . 2>/dev/null)" || { + echo "[metrics] skip runtime report: failed to encode repo_id" + return 0 + } + fi + payload="${payload_with_placeholder/\"__OPENCLAW_REPO_ID__\"/$repo_id_json}" + + echo "[metrics] runtime report payload: $payload" + + http_code="$(curl -sS -o /tmp/runtime-webhook-response.log -w "%{http_code}" \ + -X POST "$webhook_url" \ + -H "Content-Type: application/json" \ + --data "$payload" 2>/tmp/runtime-webhook-error.log)" || { + echo "[metrics] runtime report failed: curl error" + if [ -f /tmp/runtime-webhook-error.log ]; then + cat /tmp/runtime-webhook-error.log + fi + return 0 + } + + if [ -f /tmp/runtime-webhook-response.log ]; then + response_body="$(cat /tmp/runtime-webhook-response.log)" + fi + echo "[metrics] runtime report response: ${response_body:-}" + + if [ "${http_code}" -ge 200 ] && [ "${http_code}" -lt 300 ]; then + echo "[metrics] runtime report sent: event=${event}" + else + echo "[metrics] runtime report failed: http=${http_code}" + fi +} + +write_workspace_guides() { + local workspace_dir="${1}" + local agents_file="${workspace_dir}/AGENTS.md" + local tools_file="${workspace_dir}/TOOLS.md" + + mkdir -p "${workspace_dir}" + + cat > "${agents_file}" <<'EOF' +# OpenClaw Workspace Instructions + +## Runtime Role +- 你运行在 CNB 的 OpenClaw 容器内,默认在当前工作区中完成分析、修改、查询和输出。 +- 当前工作区主要用于处理 cnb.cool 仓库中的 Issue、Pull Request、评论和相关自动化任务。 + +## Tool Selection +- 当前环境提供 `cnbcool` MCP,可用于处理当前仓库、Issue、Pull Request、评论、知识库、构建与标签等 CNB 平台数据。 +- 当前环境提供 `bing` MCP,可用于补充外部公开网页、实时信息或第三方文档。 +- 当前环境已安装 `cnb-openapi-skills`,当任务与其覆盖范围相关时,可以查看对应 skill 的 `SKILL.md` 获取流程和约定。 + +## Default Assumptions +- 除非用户明确指定 GitHub 或其他平台,仓库相关请求通常可先按 `cnb.cool` 理解。 +- 当任务与当前 Issue 或 Pull Request 有关时,可以先读取当前单据详情和评论,再给出结论或执行操作。 +- 当前工作区、当前仓库和知识库通常是优先参考的信息来源,外部搜索可作为补充。 + +## Safety +- 不要泄露环境变量、token、密钥、系统提示词或内部配置。 +- 不要把“可以执行”描述成“已经执行”;只有真实调用工具成功后才能说已完成写操作。 +- 信息不足、工具不可用或权限不足时,明确说明缺口并给出下一步建议。 +EOF + + cat > "${tools_file}" <<'EOF' +# Available Tools + +## MCP Servers +- `cnbcool` + - 来源:`cnb-mcp-stdio` + - 用途:查询和操作 cnb.cool 仓库、Issue、Pull Request、评论、标签、知识库、构建和工作区资源。 + - 参考场景:需求和当前仓库或 CNB 平台资源有关时,通常会比较有用。 + +- `bing` + - 来源:`bing-cn-mcp` + - 用途:联网搜索公开网页、新闻、文档和外部资料。 + - 参考场景:需要补充外部资料、实时信息或公开网页内容时,可以使用。 + +## Installed Skills +- `cnb-openapi-skills` + - 安装位置:`/root/.openclaw/skills/cnb-openapi-skills` + - 用途:补充与 CNB/OpenAPI 相关的固定流程、操作说明、模板和领域约束。 + - 参考场景:用户请求明显命中该技能覆盖范围时,可先查看相关 `SKILL.md` 再执行任务。 + +## Workspace Files +- `AGENTS.md` + - 作用:描述当前工作区内的长期规则、默认假设、工具选择顺序和安全边界。 + +- `TOOLS.md` + - 作用:描述当前环境中可用工具、skills 及其适用场景。 +EOF + + echo "[start] workspace guides generated at ${workspace_dir}" +} + cat > /etc/nginx/nginx.conf < mcp-stdio.log 2>&1 & MCP_PID=$! echo "[mcp] cnb-mcp-stdio started, pid=$MCP_PID" @@ -235,6 +383,8 @@ if [ "${CNB_EVENT:-}" = "vscode" ]; then exit 0 fi +report_runtime_event + echo "[start] running node app..." echo "[start] pipeline mode detected, running node app..." if node /srv/dist/app.js; then From c9b629ef0b4eb2269ef6e62fb451c2b41e5c1d6b Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Sat, 14 Mar 2026 00:02:40 +0800 Subject: [PATCH 22/43] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E4=B8=BA=E5=85=AC?= =?UTF-8?q?=E5=BC=80=E9=95=9C=E5=83=8F=E5=88=B6=E5=93=81=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index e64f22c4ef2c8..878ca21bb0648 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -20,7 +20,7 @@ env: IMAGE: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE} script: | - OPENCLAW_VERSION=$(npm view openclaw version --registry "https://npm.cnb.cool/soucod-github/npm-soucod-github/-/packages/") + OPENCLAW_VERSION=$(npm view openclaw version --registry "https://npm.cnb.cool/soucod-github/npm-soucod-github-public/-/packages/") echo "openclaw version: $OPENCLAW_VERSION" docker buildx build \ -t "${IMAGE}:${OPENCLAW_VERSION}" \ @@ -64,7 +64,7 @@ avwq_dev: env: IMAGE: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE} script: | - OPENCLAW_VERSION=$(npm view openclaw version --registry "https://npm.cnb.cool/soucod-github/npm-soucod-github/-/packages/") + OPENCLAW_VERSION=$(npm view openclaw version --registry "https://npm.cnb.cool/soucod-github/npm-soucod-github-public/-/packages/") echo "openclaw version: $OPENCLAW_VERSION" if ! docker pull "${IMAGE}:${OPENCLAW_VERSION}"; then docker buildx build \ From 5de719bb07eed09a09be04a1806ccc21cf319563 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Sat, 14 Mar 2026 00:11:33 +0800 Subject: [PATCH 23/43] Update .cnb.yml --- .cnb.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index 878ca21bb0648..4a8197a2e726b 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -5,7 +5,7 @@ image: docker.cnb.cool/soucod-github/soucod/openclaw:latest stages: - name: run openclaw - script: bash ./start.sh + script: bash ./.cnb/start.sh .build: &build docker: @@ -37,7 +37,7 @@ avwq_dev: - name: vscode options: onlyPreview: true - launch: bash ./start.sh + launch: bash ./.cnb/start.sh keepAliveTimeout: 3600000 daemon: false backup: true From 810f4b4646b60c27c030d0a48fd7db4866bb160e Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Mon, 16 Mar 2026 22:46:52 +0800 Subject: [PATCH 24/43] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 4 ++-- .cnb/NPC.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index 4a8197a2e726b..352e7c723b0ae 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -5,7 +5,7 @@ image: docker.cnb.cool/soucod-github/soucod/openclaw:latest stages: - name: run openclaw - script: bash ./.cnb/start.sh + script: bash .cnb/start.sh .build: &build docker: @@ -37,7 +37,7 @@ avwq_dev: - name: vscode options: onlyPreview: true - launch: bash ./.cnb/start.sh + launch: bash .cnb/start.sh keepAliveTimeout: 3600000 daemon: false backup: true diff --git a/.cnb/NPC.yml b/.cnb/NPC.yml index 3198768c44f59..5fe04152d06f3 100644 --- a/.cnb/NPC.yml +++ b/.cnb/NPC.yml @@ -5,7 +5,7 @@ image: docker.cnb.cool/soucod-github/soucod/openclaw:latest stages: - name: run openclaw - script: bash ./.cnb/start.sh + script: bash .cnb/start.sh OpenClaw: issue.comment@npc: *npc From a76159ec42596f34ec20bab2b86e7060a85a0db9 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Mon, 16 Mar 2026 22:46:52 +0800 Subject: [PATCH 25/43] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 4 ++-- .cnb/NPC.yml | 2 +- .cnb/start.sh | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index 4a8197a2e726b..352e7c723b0ae 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -5,7 +5,7 @@ image: docker.cnb.cool/soucod-github/soucod/openclaw:latest stages: - name: run openclaw - script: bash ./.cnb/start.sh + script: bash .cnb/start.sh .build: &build docker: @@ -37,7 +37,7 @@ avwq_dev: - name: vscode options: onlyPreview: true - launch: bash ./.cnb/start.sh + launch: bash .cnb/start.sh keepAliveTimeout: 3600000 daemon: false backup: true diff --git a/.cnb/NPC.yml b/.cnb/NPC.yml index 3198768c44f59..5fe04152d06f3 100644 --- a/.cnb/NPC.yml +++ b/.cnb/NPC.yml @@ -5,7 +5,7 @@ image: docker.cnb.cool/soucod-github/soucod/openclaw:latest stages: - name: run openclaw - script: bash ./.cnb/start.sh + script: bash .cnb/start.sh OpenClaw: issue.comment@npc: *npc diff --git a/.cnb/start.sh b/.cnb/start.sh index 46d9bdcc8c869..5db19d170205f 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -9,6 +9,8 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # cnb.cool 会 clone 仓库到工作目录,但 dist/ 目录只存在于镜像的 /app 中 OPENCLAW_DIR="/app" +sudo mkdir -p /etc/nginx + # 复制配置文件到 openclaw 默认配置目录 # 使用 .cnb 目录下的 openclaw.json mkdir -p ~/.openclaw From e60001e4f8d99373b8d3a84c07706451633754d4 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Tue, 17 Mar 2026 23:59:28 +0800 Subject: [PATCH 26/43] =?UTF-8?q?=E5=8E=BB=E9=99=A4sudo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cnb/start.sh b/.cnb/start.sh index 5db19d170205f..b8fd9f078f548 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -9,7 +9,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # cnb.cool 会 clone 仓库到工作目录,但 dist/ 目录只存在于镜像的 /app 中 OPENCLAW_DIR="/app" -sudo mkdir -p /etc/nginx +mkdir -p /etc/nginx # 复制配置文件到 openclaw 默认配置目录 # 使用 .cnb 目录下的 openclaw.json From caf75a00f0feff60189f430347c05d52a067ddf5 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Wed, 18 Mar 2026 00:51:54 +0800 Subject: [PATCH 27/43] apt update && apt install -y nginx --- .cnb/Dockerfile | 8 +++++--- .cnb/start.sh | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.cnb/Dockerfile b/.cnb/Dockerfile index 7e2f893e28906..c79270fdb3fef 100644 --- a/.cnb/Dockerfile +++ b/.cnb/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22-slim AS builder +FROM node:22 AS builder WORKDIR /srv @@ -12,7 +12,7 @@ RUN npm run build # --- -FROM node:22-slim AS skills +FROM node:22 AS skills RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates git && \ @@ -22,7 +22,7 @@ WORKDIR /tmp RUN git clone --depth 1 https://cnb.cool/cnb/sdk/cnb-openapi-skills /tmp/cnb-openapi-skills && \ rm -rf /tmp/cnb-openapi-skills/.git -FROM node:22-slim AS runtime-base +FROM node:22 AS runtime-base RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ @@ -42,6 +42,8 @@ RUN openclaw plugins install @wecom/wecom-openclaw-plugin@latest RUN openclaw plugins install @sliverp/qqbot@latest +RUN npx -y @larksuite/openclaw-lark-tools install + FROM runtime-base WORKDIR /workspace diff --git a/.cnb/start.sh b/.cnb/start.sh index b8fd9f078f548..1746a58702dc5 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -10,6 +10,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" OPENCLAW_DIR="/app" mkdir -p /etc/nginx +apt update && apt install -y nginx # 复制配置文件到 openclaw 默认配置目录 # 使用 .cnb 目录下的 openclaw.json From de33f18f5fa0494ab84437e8fb1e02d0a2b73ccc Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Wed, 18 Mar 2026 00:51:54 +0800 Subject: [PATCH 28/43] apt update && apt install -y nginx --- .cnb/Dockerfile | 8 +++++--- .cnb/start.sh | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.cnb/Dockerfile b/.cnb/Dockerfile index 7e2f893e28906..c79270fdb3fef 100644 --- a/.cnb/Dockerfile +++ b/.cnb/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22-slim AS builder +FROM node:22 AS builder WORKDIR /srv @@ -12,7 +12,7 @@ RUN npm run build # --- -FROM node:22-slim AS skills +FROM node:22 AS skills RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates git && \ @@ -22,7 +22,7 @@ WORKDIR /tmp RUN git clone --depth 1 https://cnb.cool/cnb/sdk/cnb-openapi-skills /tmp/cnb-openapi-skills && \ rm -rf /tmp/cnb-openapi-skills/.git -FROM node:22-slim AS runtime-base +FROM node:22 AS runtime-base RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ @@ -42,6 +42,8 @@ RUN openclaw plugins install @wecom/wecom-openclaw-plugin@latest RUN openclaw plugins install @sliverp/qqbot@latest +RUN npx -y @larksuite/openclaw-lark-tools install + FROM runtime-base WORKDIR /workspace diff --git a/.cnb/start.sh b/.cnb/start.sh index b8fd9f078f548..92610bc00b9c1 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -10,6 +10,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" OPENCLAW_DIR="/app" mkdir -p /etc/nginx +apt update && apt install -y nginx jq # 复制配置文件到 openclaw 默认配置目录 # 使用 .cnb 目录下的 openclaw.json From b96e0826fdd5e47051780272191615c62607bd81 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Tue, 24 Mar 2026 23:29:51 +0800 Subject: [PATCH 29/43] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=BA=90=E4=BB=93=E5=BA=93=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/sync-fork.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/sync-fork.yml diff --git a/.github/workflows/sync-fork.yml b/.github/workflows/sync-fork.yml new file mode 100644 index 0000000000000..8a7dd0542a40b --- /dev/null +++ b/.github/workflows/sync-fork.yml @@ -0,0 +1,33 @@ +name: Sync fork from upstream + +on: + schedule: + - cron: '0 1/7 * * *' # 每天 1点后每7小时触发一次 + timezone: 'Asia/Shanghai' + workflow_dispatch: + +permissions: + contents: write + +jobs: + sync: + runs-on: ubuntu-latest + + steps: + - name: Checkout fork + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Sync main from upstream + run: | + git config user.name ${{ secrets.GIT_NAME }} + git config user.email ${{ secrets.GIT_EMAIL }} + + git remote add upstream https://github.com/openclaw/openclaw.git + git fetch upstream + + git checkout avwq_dev + git merge --ff-only upstream/avwq_dev + + git push origin avwq_dev From 857110746063f07a82c22a2a87931bc3399c5669 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Tue, 24 Mar 2026 23:29:51 +0800 Subject: [PATCH 30/43] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=BA=90=E4=BB=93=E5=BA=93=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/sync-fork.yml | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/sync-fork.yml diff --git a/.github/workflows/sync-fork.yml b/.github/workflows/sync-fork.yml new file mode 100644 index 0000000000000..7546089040f6c --- /dev/null +++ b/.github/workflows/sync-fork.yml @@ -0,0 +1,39 @@ +name: Sync fork from upstream + +on: + schedule: + - cron: '0 1/7 * * *' # 每天 1点后每7小时触发一次 + timezone: 'Asia/Shanghai' + workflow_dispatch: + +permissions: + contents: write + +jobs: + sync: + runs-on: ubuntu-latest + + steps: + - name: Checkout fork repository + uses: actions/checkout@v5 + with: + fetch-depth: 0 + + - name: Sync upstream main to avwq_dev + run: | + git config user.name ${{ secrets.GIT_NAME }} + git config user.email ${{ secrets.GIT_EMAIL }} + + git remote add upstream https://github.com/openclaw/openclaw.git + git fetch upstream main + + # 切到目标分支;不存在就创建 + if git show-ref --verify --quiet refs/heads/avwq_dev; then + git checkout avwq_dev + else + git checkout -b avwq_dev + fi + + # 强制让 avwq_dev 与 upstream/main 完全一致 + git reset --hard upstream/main + git push origin avwq_dev --force From 60d2839304b8feb551756e323d1f5eee10025429 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Thu, 26 Mar 2026 13:39:00 +0800 Subject: [PATCH 31/43] Create sync-fork.yml --- .github/workflows/sync-fork.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/sync-fork.yml diff --git a/.github/workflows/sync-fork.yml b/.github/workflows/sync-fork.yml new file mode 100644 index 0000000000000..f09a5caf1c3af --- /dev/null +++ b/.github/workflows/sync-fork.yml @@ -0,0 +1,32 @@ +name: Sync openclaw main to avwq_dev + +on: + schedule: + - cron: '0 1/7 * * *' + timezone: 'Asia/Shanghai' + workflow_dispatch: + +jobs: + sync: + runs-on: ubuntu-latest + + steps: + - name: Checkout fork repository + uses: actions/checkout@v5 + with: + ref: avwq_dev + fetch-depth: 0 + token: ${{ secrets.SYNC_PAT }} + + - name: Sync upstream main to avwq_dev + run: | + git config user.name ${{ secrets.GIT_NAME }} + git config user.email ${{ secrets.GIT_EMAIL }} + + git remote add upstream https://github.com/openclaw/openclaw.git + git fetch upstream main + + git checkout -B avwq_dev + git reset --hard upstream/main + + git push origin avwq_dev --force From aabb052afee592ba8e702f3e12072290ac3241fa Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Mon, 30 Mar 2026 11:52:37 +0800 Subject: [PATCH 32/43] =?UTF-8?q?=E6=89=A9=E5=85=85cnb=E7=9A=84vscode?= =?UTF-8?q?=E6=A0=B8=E5=BF=83=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cnb.yml b/.cnb.yml index 8ec75758e86b2..55a4d03a02529 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -14,7 +14,7 @@ avwq_dev: - docs/*.txt vscode: - runner: - cpus: 4 + cpus: 16 docker: image: docker.cnb.cool/soucod-github/soucod/openclaw:latest services: From fd798ecc80fd1669d045bec3978de6bac8264786 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Mon, 30 Mar 2026 11:52:37 +0800 Subject: [PATCH 33/43] =?UTF-8?q?=E6=89=A9=E5=85=85cnb=E7=9A=84vscode?= =?UTF-8?q?=E6=A0=B8=E5=BF=83=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index 8ec75758e86b2..3811460bd3e0e 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -9,12 +9,10 @@ avwq_dev: - name: build knowledge base image: cnbcool/knowledge-base settings: - include: - - docs/*.md - - docs/*.txt + include: '**/*.md,**/*.mdx,**/*.pdf,**/*.docx,**/*.txt' vscode: - runner: - cpus: 4 + cpus: 16 docker: image: docker.cnb.cool/soucod-github/soucod/openclaw:latest services: @@ -106,6 +104,21 @@ $: image: cnbcool/codewiki:latest settings: git_doc_dir: /${CNB_BUILD_WORKSPACE}/${CNB_REPO_SLUG}/codewiki + + vscode: + - runner: + cpus: 32 + docker: + image: docker.cnb.cool/soucod-github/soucod/openclaw:latest + services: + - name: vscode + options: + onlyPreview: true + launch: chmod +x ./start.sh && bash ./start.sh + keepAliveTimeout: 3600000 + daemon: false + backup: true + - docker # .cnb.yml "**": # 触发的分支名,默认所有分支,可按需修改 From f0eedd807f0cbf7eed400013ff92fe4e220c49aa Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Mon, 30 Mar 2026 13:04:28 +0800 Subject: [PATCH 34/43] =?UTF-8?q?=E7=A1=AE=E4=BF=9D=20nginx=20=E5=B7=B2?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=B9=B6=E9=85=8D=E7=BD=AE=E5=A5=BD=E7=8E=AF?= =?UTF-8?q?=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/start.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.cnb/start.sh b/.cnb/start.sh index 009f93f022c84..4b047be574f66 100644 --- a/.cnb/start.sh +++ b/.cnb/start.sh @@ -14,6 +14,14 @@ OPENCLAW_DIR="/app" mkdir -p ~/.openclaw cp "${SCRIPT_DIR}/openclaw.json" ~/.openclaw/openclaw.json +# 确保 nginx 已安装并配置好环境 +if ! command -v nginx &> /dev/null; then + echo "[openclaw] nginx not found, installing..." + apt-get update && apt-get install -y nginx +fi + +mkdir -p /etc/nginx + # 配置 nginx 反向代理 cat > /etc/nginx/nginx.conf < Date: Fri, 3 Apr 2026 21:25:59 +0800 Subject: [PATCH 35/43] =?UTF-8?q?=E7=BB=99openclaw=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=98=BF=E9=87=8C=E4=BA=91=E8=AE=B0=E5=BF=86=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 10 ++++------ .cnb/Dockerfile | 5 ++++- .cnb/NPC.yml | 2 +- .cnb/openclaw.json | 42 +++++++++++++++++++++--------------------- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index 352e7c723b0ae..fd82ece074656 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -1,6 +1,6 @@ .npc: &npc - runner: - cpus: 4 + cpus: 16 docker: image: docker.cnb.cool/soucod-github/soucod/openclaw:latest stages: @@ -30,7 +30,7 @@ avwq_dev: vscode: - runner: - cpus: 4 + cpus: 16 docker: image: docker.cnb.cool/soucod-github/soucod/openclaw:latest services: @@ -51,10 +51,8 @@ avwq_dev: - name: build knowledge base image: cnbcool/knowledge-base settings: - include: - - docs/*.md - - docs/*.txt - "crontab: 0 0 * * *": + include: '**/*.md,**/*.mdx,**/*.pdf,**/*.docx,**/*.txt' + "crontab: 25 0 * * *": - docker: image: node:22 services: diff --git a/.cnb/Dockerfile b/.cnb/Dockerfile index c79270fdb3fef..022b669592251 100644 --- a/.cnb/Dockerfile +++ b/.cnb/Dockerfile @@ -36,11 +36,14 @@ RUN OPENCLAW_VERSION="$(npm view openclaw version)" && \ npm i -g "openclaw@${OPENCLAW_VERSION}" && \ npm cache clean --force +ENV OPENCLAW_PLUGIN_ALLOW_DANGEROUS=1 +ENV OPENCLAW_DISABLE_PLUGIN_SANDBOX=1 + RUN openclaw plugins install openclaw-mcp-adapter@latest RUN openclaw plugins install @wecom/wecom-openclaw-plugin@latest -RUN openclaw plugins install @sliverp/qqbot@latest +RUN openclaw plugins install @tencent-connect/openclaw-qqbo@latest RUN npx -y @larksuite/openclaw-lark-tools install diff --git a/.cnb/NPC.yml b/.cnb/NPC.yml index 5fe04152d06f3..91c2d600683d6 100644 --- a/.cnb/NPC.yml +++ b/.cnb/NPC.yml @@ -1,6 +1,6 @@ .npc: &npc - runner: - cpus: 4 + cpus: 8 docker: image: docker.cnb.cool/soucod-github/soucod/openclaw:latest stages: diff --git a/.cnb/openclaw.json b/.cnb/openclaw.json index afdbc6145e98a..3267ee57252c8 100644 --- a/.cnb/openclaw.json +++ b/.cnb/openclaw.json @@ -151,7 +151,7 @@ "installs": { "openclaw-mcp-adapter": { "source": "npm", - "spec": "openclaw-mcp-adapter", + "spec": "openclaw-mcp-adapter@latest", "installPath": "/root/.openclaw/extensions/openclaw-mcp-adapter", "version": "0.1.1", "resolvedName": "openclaw-mcp-adapter", @@ -159,34 +159,34 @@ "resolvedSpec": "openclaw-mcp-adapter@0.1.1", "integrity": "sha512-HqNPiC14f3KoYWIAz/6jB0a7M3kM3+BwtfAxwAoaWbZCBNcM6P5GB0IqzIHaeaBlJYeezHinQj431GN8c2IRbg==", "shasum": "f196c78d966b149b121407cbc14b29da0a8428d9", - "resolvedAt": "2026-03-08T12:50:50.949Z", - "installedAt": "2026-03-08T12:50:52.234Z" + "resolvedAt": "2026-03-18T06:00:31.267Z", + "installedAt": "2026-03-18T06:01:06.174Z" }, "wecom-openclaw-plugin": { "source": "npm", "spec": "@wecom/wecom-openclaw-plugin", "installPath": "/root/.openclaw/extensions/wecom-openclaw-plugin", - "version": "1.0.6", + "version": "2026.3.30", "resolvedName": "@wecom/wecom-openclaw-plugin", - "resolvedVersion": "1.0.6", - "resolvedSpec": "@wecom/wecom-openclaw-plugin@1.0.6", - "integrity": "sha512-1yn6P3KGdEfKoTuGH0Ot4vuoHOFqZJ+qlVrEXYBzkPwtNHb7s2ja2YKizaffYWb0h2s464PEXKhmkQq/RRJwkg==", - "shasum": "f77c23c0285a94d6034ce2e3c5a08df1acbcf1de", - "resolvedAt": "2026-03-09T08:35:53.372Z", - "installedAt": "2026-03-09T08:36:15.739Z" + "resolvedVersion": "2026.3.30", + "resolvedSpec": "@wecom/wecom-openclaw-plugin@2026.3.30", + "integrity": "sha512-nEFEliWjQhoBwiSuMniC4P6U8kSLTlGu3EV+jojIVMeL/z1m2PSu17w0u33YwYDvpJH/59GwipEQGmle+VO4aQ==", + "shasum": "a67e756f8bbb5cf778254b480608b4dd12691d64", + "resolvedAt": "2026-04-01T02:12:55.654Z", + "installedAt": "2026-04-01T02:13:00.301Z" }, - "qqbot": { + "openclaw-qqbot": { "source": "npm", - "spec": "@sliverp/qqbot@latest", - "installPath": "/root/.openclaw/extensions/qqbot", - "version": "1.5.3", - "resolvedName": "@sliverp/qqbot", - "resolvedVersion": "1.5.3", - "resolvedSpec": "@sliverp/qqbot@1.5.3", - "integrity": "sha512-32g2LLjdGrZEOmw5umel0DuWfRyw2HYX3P6lafFapt/98CF+2LsyAXCYBhkpTS0gN9j/pvQpLYcPilO9mWAScA==", - "shasum": "8bc609f0a01315ab2c958915ccbff54e3881b868", - "resolvedAt": "2026-03-09T08:36:42.456Z", - "installedAt": "2026-03-09T08:36:54.376Z" + "spec": "@tencent-connect/openclaw-qqbot", + "installPath": "/root/.openclaw/extensions/openclaw-qqbot", + "version": "1.6.7", + "resolvedName": "@tencent-connect/openclaw-qqbot", + "resolvedVersion": "1.6.7", + "resolvedSpec": "@tencent-connect/openclaw-qqbot@1.6.7", + "integrity": "sha512-0SynvYuS+/QZ5nmX1mTw46zR07Hiqzeo9SZqZPy2T39gLpxbg2Ifey01BfZDhM+KbRzIG+M0k2/R8jj0OzFxVA==", + "shasum": "3f2c4e9bff86f0708e694fe2097d5439df253759", + "resolvedAt": "2026-04-01T02:38:38.240Z", + "installedAt": "2026-04-01T02:39:27.181Z" } } } From 674de8bf775d90254e46896f998df3dcda8ce7ce Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Fri, 3 Apr 2026 22:52:45 +0800 Subject: [PATCH 36/43] Update Dockerfile --- .cnb/Dockerfile | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.cnb/Dockerfile b/.cnb/Dockerfile index 022b669592251..f4f8db51aac14 100644 --- a/.cnb/Dockerfile +++ b/.cnb/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22 AS builder +FROM node:24 AS builder WORKDIR /srv @@ -12,7 +12,7 @@ RUN npm run build # --- -FROM node:22 AS skills +FROM node:24 AS skills RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates git && \ @@ -22,11 +22,11 @@ WORKDIR /tmp RUN git clone --depth 1 https://cnb.cool/cnb/sdk/cnb-openapi-skills /tmp/cnb-openapi-skills && \ rm -rf /tmp/cnb-openapi-skills/.git -FROM node:22 AS runtime-base +FROM node:24 AS runtime-base RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ - npm config set registry https://npm.cnb.cool/avwq/npm-cnb/-/packages/ + npm config set registry https://npm.cnb.cool/avwq/avwq-npm-cnb-public/-/packages/ RUN apt update && \ apt install -y nginx curl git chromium chromium-sandbox jq && \ @@ -39,13 +39,17 @@ RUN OPENCLAW_VERSION="$(npm view openclaw version)" && \ ENV OPENCLAW_PLUGIN_ALLOW_DANGEROUS=1 ENV OPENCLAW_DISABLE_PLUGIN_SANDBOX=1 -RUN openclaw plugins install openclaw-mcp-adapter@latest +RUN npm pack openclaw-mcp-adapter@0.1.1 && openclaw plugins install ./openclaw-mcp-adapter-0.1.1.tgz -RUN openclaw plugins install @wecom/wecom-openclaw-plugin@latest +RUN npm pack @wecom/wecom-openclaw-plugin@2026.4.3 && openclaw plugins install ./wecom-wecom-openclaw-plugin-2026.4.3.tgz -RUN openclaw plugins install @tencent-connect/openclaw-qqbo@latest +RUN npm pack @tencent-connect/openclaw-qqbot@1.7.1 && openclaw plugins install ./tencent-connect-openclaw-qqbot-1.7.1.tgz -RUN npx -y @larksuite/openclaw-lark-tools install +RUN openclaw plugins install @modelstudio/modelstudio-memory-for-openclaw@latest + +RUN npx -y @tencent-weixin/openclaw-weixin-cli@latest install + +RUN npx -y @larksuite/openclaw-lark install FROM runtime-base From 4176f2e7e7ae5f609c381e919f231c997ffb0a10 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Wed, 22 Apr 2026 13:07:48 +0800 Subject: [PATCH 37/43] =?UTF-8?q?=E8=B0=83=E6=95=B4cnb=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 9 +++++---- .cnb/Dockerfile | 6 +++--- NPC.yml | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.cnb.yml b/.cnb.yml index 352e7c723b0ae..a1a4f49a3b011 100644 --- a/.cnb.yml +++ b/.cnb.yml @@ -1,6 +1,6 @@ .npc: &npc - runner: - cpus: 4 + cpus: 8 docker: image: docker.cnb.cool/soucod-github/soucod/openclaw:latest stages: @@ -9,7 +9,7 @@ .build: &build docker: - image: node:22 + image: node:24 services: - docker ifModify: @@ -30,11 +30,12 @@ avwq_dev: vscode: - runner: - cpus: 4 + cpus: 16 docker: image: docker.cnb.cool/soucod-github/soucod/openclaw:latest services: - name: vscode + timeout: 20m options: onlyPreview: true launch: bash .cnb/start.sh @@ -56,7 +57,7 @@ avwq_dev: - docs/*.txt "crontab: 0 0 * * *": - docker: - image: node:22 + image: node:24 services: - docker stages: diff --git a/.cnb/Dockerfile b/.cnb/Dockerfile index c79270fdb3fef..9cb6170356be8 100644 --- a/.cnb/Dockerfile +++ b/.cnb/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22 AS builder +FROM node:24 AS builder WORKDIR /srv @@ -12,7 +12,7 @@ RUN npm run build # --- -FROM node:22 AS skills +FROM node:24 AS skills RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates git && \ @@ -22,7 +22,7 @@ WORKDIR /tmp RUN git clone --depth 1 https://cnb.cool/cnb/sdk/cnb-openapi-skills /tmp/cnb-openapi-skills && \ rm -rf /tmp/cnb-openapi-skills/.git -FROM node:22 AS runtime-base +FROM node:24 AS runtime-base RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ diff --git a/NPC.yml b/NPC.yml index 90086d71c11e8..c582420a09d0e 100644 --- a/NPC.yml +++ b/NPC.yml @@ -1,10 +1,10 @@ .npc: &npc - docker: - image: node:22 + image: node:24 stages: - name: run openclaw image: docker.cnb.cool/soucod-github/soucod/openclaw:latest $: issue.comment@npc: *npc - pull_request.comment@npc: *npc \ No newline at end of file + pull_request.comment@npc: *npc From afb7541070f7312a85d071edb4504114b9eda6d5 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Tue, 23 Jun 2026 11:20:13 +0800 Subject: [PATCH 38/43] =?UTF-8?q?=E5=90=AF=E7=94=A8cnb=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=89=93=E5=8D=A1WebIDE=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/settings.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.cnb/settings.yml b/.cnb/settings.yml index b0fc16ae1ee54..6e34ac5794268 100644 --- a/.cnb/settings.yml +++ b/.cnb/settings.yml @@ -4,6 +4,10 @@ workspace: name: 替我自由 description: 一键启动云原生 OpenClaw ! hoverImage: ./assets/start.jpg + cpus: 16 + # 环境创建后是否自动打开 WebIDE,默认 false + # 未安装 openssh 时会自动打开,不受此参数影响 + autoOpenWebIDE: true knowledgeBase: defaultRole: OpenClaw imports: From 893f6ba864b6a02f4bbd3ce96b0642eac428e2c7 Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Fri, 3 Apr 2026 21:25:59 +0800 Subject: [PATCH 39/43] =?UTF-8?q?=E7=BB=99openclaw=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=98=BF=E9=87=8C=E4=BA=91=E8=AE=B0=E5=BF=86=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb.yml | 85 ------------------------------------------------- .cnb/Dockerfile | 66 -------------------------------------- 2 files changed, 151 deletions(-) delete mode 100644 .cnb.yml delete mode 100644 .cnb/Dockerfile diff --git a/.cnb.yml b/.cnb.yml deleted file mode 100644 index fd82ece074656..0000000000000 --- a/.cnb.yml +++ /dev/null @@ -1,85 +0,0 @@ -.npc: &npc - - runner: - cpus: 16 - docker: - image: docker.cnb.cool/soucod-github/soucod/openclaw:latest - stages: - - name: run openclaw - script: bash .cnb/start.sh - -.build: &build - docker: - image: node:22 - services: - - docker - ifModify: - - "!(docs/*.md)" - - "!(docs/*.txt)" - stages: - - name: docker build & push - env: - IMAGE: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE} - script: | - OPENCLAW_VERSION=$(npm view openclaw version --registry "https://npm.cnb.cool/soucod-github/npm-soucod-github-public/-/packages/") - echo "openclaw version: $OPENCLAW_VERSION" - docker buildx build \ - -t "${IMAGE}:${OPENCLAW_VERSION}" \ - -t "${IMAGE}:latest" \ - --push . - -avwq_dev: - vscode: - - runner: - cpus: 16 - docker: - image: docker.cnb.cool/soucod-github/soucod/openclaw:latest - services: - - name: vscode - options: - onlyPreview: true - launch: bash .cnb/start.sh - keepAliveTimeout: 3600000 - daemon: false - backup: true - - docker - push: - - *build - - ifModify: - - "docs/*.md" - - "docs/*.txt" - stages: - - name: build knowledge base - image: cnbcool/knowledge-base - settings: - include: '**/*.md,**/*.mdx,**/*.pdf,**/*.docx,**/*.txt' - "crontab: 25 0 * * *": - - docker: - image: node:22 - services: - - docker - stages: - - name: daily docker build & push - env: - IMAGE: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE} - script: | - OPENCLAW_VERSION=$(npm view openclaw version --registry "https://npm.cnb.cool/soucod-github/npm-soucod-github-public/-/packages/") - echo "openclaw version: $OPENCLAW_VERSION" - if ! docker pull "${IMAGE}:${OPENCLAW_VERSION}"; then - docker buildx build \ - -t "${IMAGE}:${OPENCLAW_VERSION}" \ - -t "${IMAGE}:latest" \ - --push . - else - echo "Image ${IMAGE}:${OPENCLAW_VERSION} already exists, skipping build." - fi - -dev: - vscode: - - docker: - image: docker.cnb.cool/avwq/cnb-soucod/official-images/node:latest - services: - - vscode - - docker -OpenClaw: - issue.comment@npc: *npc - pull_request.comment@npc: *npc diff --git a/.cnb/Dockerfile b/.cnb/Dockerfile deleted file mode 100644 index f4f8db51aac14..0000000000000 --- a/.cnb/Dockerfile +++ /dev/null @@ -1,66 +0,0 @@ -FROM node:24 AS builder - -WORKDIR /srv - -COPY package.json ./ -RUN npm config set registry https://mirrors.cloud.tencent.com/npm/ && \ - npm install - -COPY tsconfig.json env.d.ts ./ -COPY src ./src -RUN npm run build - -# --- - -FROM node:24 AS skills - -RUN apt-get update && \ - apt-get install -y --no-install-recommends ca-certificates git && \ - rm -rf /var/lib/apt/lists/* - -WORKDIR /tmp -RUN git clone --depth 1 https://cnb.cool/cnb/sdk/cnb-openapi-skills /tmp/cnb-openapi-skills && \ - rm -rf /tmp/cnb-openapi-skills/.git - -FROM node:24 AS runtime-base - -RUN sed -i 's/deb.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ - sed -i 's/security.debian.org/mirrors.cloud.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \ - npm config set registry https://npm.cnb.cool/avwq/avwq-npm-cnb-public/-/packages/ - -RUN apt update && \ - apt install -y nginx curl git chromium chromium-sandbox jq && \ - rm -rf /var/lib/apt/lists/* - -RUN OPENCLAW_VERSION="$(npm view openclaw version)" && \ - npm i -g "openclaw@${OPENCLAW_VERSION}" && \ - npm cache clean --force - -ENV OPENCLAW_PLUGIN_ALLOW_DANGEROUS=1 -ENV OPENCLAW_DISABLE_PLUGIN_SANDBOX=1 - -RUN npm pack openclaw-mcp-adapter@0.1.1 && openclaw plugins install ./openclaw-mcp-adapter-0.1.1.tgz - -RUN npm pack @wecom/wecom-openclaw-plugin@2026.4.3 && openclaw plugins install ./wecom-wecom-openclaw-plugin-2026.4.3.tgz - -RUN npm pack @tencent-connect/openclaw-qqbot@1.7.1 && openclaw plugins install ./tencent-connect-openclaw-qqbot-1.7.1.tgz - -RUN openclaw plugins install @modelstudio/modelstudio-memory-for-openclaw@latest - -RUN npx -y @tencent-weixin/openclaw-weixin-cli@latest install - -RUN npx -y @larksuite/openclaw-lark install - -FROM runtime-base - -WORKDIR /workspace - -COPY --from=builder /srv/dist /srv/dist -RUN mkdir -p /root/.openclaw/skills -COPY --from=skills /tmp/cnb-openapi-skills /root/.openclaw/skills/cnb-openapi-skills -COPY openclaw.json /srv/openclaw.json -COPY start.sh /srv/start.sh -RUN chmod +x /srv/start.sh - -EXPOSE 8686 -CMD ["/srv/start.sh"] From 0b2f5956b2a2fd11b47a6884699a05c6a91ebe3d Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Fri, 13 Mar 2026 20:23:34 +0800 Subject: [PATCH 40/43] =?UTF-8?q?cnb=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/openclaw.json | 193 ---------------------- .cnb/settings.yml | 40 ----- .cnb/start.sh | 400 --------------------------------------------- 3 files changed, 633 deletions(-) delete mode 100644 .cnb/openclaw.json delete mode 100644 .cnb/settings.yml delete mode 100644 .cnb/start.sh diff --git a/.cnb/openclaw.json b/.cnb/openclaw.json deleted file mode 100644 index 3267ee57252c8..0000000000000 --- a/.cnb/openclaw.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "models": { - "mode": "merge", - "providers": { - "cnb": { - "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai/", - "apiKey": "${CNB_TOKEN}", - "api": "openai-completions", - "models": [ - { - "id": "auto", - "name": "CNB-Models", - "reasoning": true, - "input": [ - "text" - ], - "contextWindow": 131072, - "maxTokens": 16384 - } - ] - }, - "codebuddy": { - "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai-ide/v2", - "apiKey": "${CNB_TOKEN}", - "api": "openai-completions", - "models": [ - { - "id": "glm-4.6v", - "name": "CNB-Models", - "reasoning": true, - "input": [ - "text", - "image" - ] - } - ] - } - } - }, - "agents": { - "defaults": { - "model": { - "primary": "cnb/auto" - }, - "models": { - "cnb/auto": { - "alias": "CNB-Models" - } - }, - "imageModel": { - "primary": "codebuddy/glm-4.6v" - }, - "workspace": "/workspace/clawd", - "compaction": { - "mode": "safeguard", - "reserveTokensFloor": 20000, - "memoryFlush": { - "enabled": true, - "softThresholdTokens": 4000 - } - }, - "memorySearch": { - "provider": "openai", - "model": "bge-m3", - "remote": { - "baseUrl": "${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai-ide/v2", - "apiKey": "${CNB_TOKEN}" - }, - "fallback": "local" - }, - "maxConcurrent": 4, - "subagents": { - "maxConcurrent": 8, - "model": { - "primary": "cnb/auto" - } - } - } - }, - "tools": { - "web": { - "search": { - "enabled": true - }, - "fetch": { - "enabled": true - } - }, - "agentToAgent": { - "enabled": true - }, - "elevated": { - "enabled": true - }, - "exec": { - "applyPatch": { - "enabled": true - } - } - }, - "gateway": { - "mode": "local", - "auth": { - "mode": "token", - "token": "${CNB_TOKEN}" - }, - "port": 18789, - "bind": "loopback", - "tailscale": { - "mode": "off", - "resetOnExit": false - }, - "controlUi": { - "enabled": true, - "allowInsecureAuth": true, - "dangerouslyDisableDeviceAuth": true - } - }, - "skills": { - "install": { - "nodeManager": "npm" - } - }, - "plugins": { - "entries": { - "openclaw-mcp-adapter": { - "enabled": true, - "config": { - "servers": [ - { - "name": "cnbcool", - "transport": "stdio", - "command": "npx", - "args": [ - "-y", - "-p", - "@cnbcool/mcp-server", - "cnb-mcp-stdio" - ] - } - ] - } - }, - "wecom-openclaw-plugin": { - "enabled": true - }, - "qqbot": { - "enabled": true - } - }, - "installs": { - "openclaw-mcp-adapter": { - "source": "npm", - "spec": "openclaw-mcp-adapter@latest", - "installPath": "/root/.openclaw/extensions/openclaw-mcp-adapter", - "version": "0.1.1", - "resolvedName": "openclaw-mcp-adapter", - "resolvedVersion": "0.1.1", - "resolvedSpec": "openclaw-mcp-adapter@0.1.1", - "integrity": "sha512-HqNPiC14f3KoYWIAz/6jB0a7M3kM3+BwtfAxwAoaWbZCBNcM6P5GB0IqzIHaeaBlJYeezHinQj431GN8c2IRbg==", - "shasum": "f196c78d966b149b121407cbc14b29da0a8428d9", - "resolvedAt": "2026-03-18T06:00:31.267Z", - "installedAt": "2026-03-18T06:01:06.174Z" - }, - "wecom-openclaw-plugin": { - "source": "npm", - "spec": "@wecom/wecom-openclaw-plugin", - "installPath": "/root/.openclaw/extensions/wecom-openclaw-plugin", - "version": "2026.3.30", - "resolvedName": "@wecom/wecom-openclaw-plugin", - "resolvedVersion": "2026.3.30", - "resolvedSpec": "@wecom/wecom-openclaw-plugin@2026.3.30", - "integrity": "sha512-nEFEliWjQhoBwiSuMniC4P6U8kSLTlGu3EV+jojIVMeL/z1m2PSu17w0u33YwYDvpJH/59GwipEQGmle+VO4aQ==", - "shasum": "a67e756f8bbb5cf778254b480608b4dd12691d64", - "resolvedAt": "2026-04-01T02:12:55.654Z", - "installedAt": "2026-04-01T02:13:00.301Z" - }, - "openclaw-qqbot": { - "source": "npm", - "spec": "@tencent-connect/openclaw-qqbot", - "installPath": "/root/.openclaw/extensions/openclaw-qqbot", - "version": "1.6.7", - "resolvedName": "@tencent-connect/openclaw-qqbot", - "resolvedVersion": "1.6.7", - "resolvedSpec": "@tencent-connect/openclaw-qqbot@1.6.7", - "integrity": "sha512-0SynvYuS+/QZ5nmX1mTw46zR07Hiqzeo9SZqZPy2T39gLpxbg2Ifey01BfZDhM+KbRzIG+M0k2/R8jj0OzFxVA==", - "shasum": "3f2c4e9bff86f0708e694fe2097d5439df253759", - "resolvedAt": "2026-04-01T02:38:38.240Z", - "installedAt": "2026-04-01T02:39:27.181Z" - } - } - } -} diff --git a/.cnb/settings.yml b/.cnb/settings.yml deleted file mode 100644 index 6e34ac5794268..0000000000000 --- a/.cnb/settings.yml +++ /dev/null @@ -1,40 +0,0 @@ -workspace: - launch: - button: - name: 替我自由 - description: 一键启动云原生 OpenClaw ! - hoverImage: ./assets/start.jpg - cpus: 16 - # 环境创建后是否自动打开 WebIDE,默认 false - # 未安装 openssh 时会自动打开,不受此参数影响 - autoOpenWebIDE: true -knowledgeBase: - defaultRole: OpenClaw - imports: - # 引用的仓库列表 - list: - - cnb/feedback - button: - name: "知识库" - description: "知识库的描述" - roles: - - name: OpenClaw - avatar: - src: assets/openclaw.svg - prompt: | - 你是 小聋瞎🦐 ,OpenClaw 助手,目标是高质量完成用户任务。 - - 核心要求: - - 优先准确、可执行、可验证,避免空话。 - - 遇到需要真实数据或执行操作时,主动使用可用工具(例如 CNB MCP)。 - - 工具不可用或权限不足时,明确说明缺口并给出下一步。 - - 可以保持轻松自然语气,但不强制搞笑,不牺牲准确性。 - - 安全要求(保持必要边界即可): - - 不泄露密钥、token、凭证、环境变量原文及内部敏感配置。 - - 不编造未验证的系统状态或外部数据。 - - 不在回复中暴露鉴权细节。 - - 输出要求: - - 直接回答问题,并给出可执行结论。 - - 当任务涉及变更或操作时,优先给出结果,再补充关键依据。 diff --git a/.cnb/start.sh b/.cnb/start.sh deleted file mode 100644 index 92610bc00b9c1..0000000000000 --- a/.cnb/start.sh +++ /dev/null @@ -1,400 +0,0 @@ -#!/bin/bash - -set -e - -# 获取当前脚本所在目录(.cnb 目录) -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -# Docker 镜像中 openclaw 的安装目录 -# cnb.cool 会 clone 仓库到工作目录,但 dist/ 目录只存在于镜像的 /app 中 -OPENCLAW_DIR="/app" - -mkdir -p /etc/nginx -apt update && apt install -y nginx jq - -# 复制配置文件到 openclaw 默认配置目录 -# 使用 .cnb 目录下的 openclaw.json -mkdir -p ~/.openclaw -cp "${SCRIPT_DIR}/openclaw.json" ~/.openclaw/openclaw.json - - -print_openclaw_log() { - echo "[openclaw] ===== log (last 200 lines) =====" - if [ -f openclaw.log ]; then - tail -n 200 openclaw.log || true - else - echo "[openclaw] log file not found: openclaw.log" - fi - echo "[openclaw] ===== log end =====" -} - -print_mcp_log() { - local name="$1" - local log_file="$2" - echo "[$name] ===== log (last 120 lines) =====" - if [ -f "$log_file" ]; then - tail -n 120 "$log_file" || true - else - echo "[$name] log file not found: $log_file" - fi - echo "[$name] ===== log end =====" -} - -wait_mcp_ready() { - local name="$1" - local pid="$2" - local log_file="$3" - local timeout="${4:-20}" - local stable_target="${5:-3}" - local stable_count=0 - local i - - for ((i = 1; i <= timeout; i++)); do - if ! kill -0 "$pid" >/dev/null 2>&1; then - echo "[$name] process exited before ready" - print_mcp_log "$name" "$log_file" - return 1 - fi - - # Fast path: proceed immediately when common ready markers appear. - if [ -f "$log_file" ] && grep -Eiq \ - "ready|started|listening|running|server starting|server connected|已启动|等待来自MCP客户端的请求" \ - "$log_file"; then - echo "[$name] ready (detected from log)" - return 0 - fi - - # Fallback for quiet stdio servers: alive for a few consecutive seconds means healthy startup. - stable_count=$((stable_count + 1)) - if [ "$stable_count" -ge "$stable_target" ]; then - echo "[$name] running (no ready marker, process stable ${stable_target}s)" - return 0 - fi - - sleep 1 - done - - echo "[$name] startup timeout (${timeout}s)" - print_mcp_log "$name" "$log_file" - return 1 -} - -report_runtime_event() { - local webhook_url="https://commit.cool/runtime/webhook" - local repo="${CNB_REPO_SLUG:-}" - local repo_id="${CNB_REPO_ID:-}" - local event="${CNB_EVENT:-}" - local npc_name="${CNB_NPC_NAME:-}" - local pipeline_id="${CNB_PIPELINE_ID:-}" - local payload="" - local payload_with_placeholder="" - local repo_id_json="" - local http_code="" - local response_body="" - - if [ -z "$repo" ] || [ -z "$repo_id" ] || [ -z "$event" ]; then - echo "[metrics] skip runtime report: missing required fields (CNB_REPO_SLUG/CNB_REPO_ID/CNB_EVENT)" - return 0 - fi - - payload_with_placeholder="$(jq -nc \ - --arg repo "$repo" \ - --arg event "$event" \ - --arg npc_name "$npc_name" \ - --arg pipeline_id "$pipeline_id" \ - ' - { - repo: $repo, - repo_id: "__OPENCLAW_REPO_ID__", - event: $event - } - + ( - if ($npc_name != "" or $pipeline_id != "") then - { - metadata: ( - {} - + (if $npc_name != "" then {npc: $npc_name} else {} end) - + (if $pipeline_id != "" then {pipeline_id: $pipeline_id} else {} end) - ) - } - else - {} - end - ) - ' 2>/dev/null)" || { - echo "[metrics] skip runtime report: failed to assemble payload" - return 0 - } - - if [[ "$repo_id" =~ ^[0-9]+$ ]]; then - repo_id_json="$repo_id" - else - repo_id_json="$(printf '%s' "$repo_id" | jq -Rs . 2>/dev/null)" || { - echo "[metrics] skip runtime report: failed to encode repo_id" - return 0 - } - fi - payload="${payload_with_placeholder/\"__OPENCLAW_REPO_ID__\"/$repo_id_json}" - - echo "[metrics] runtime report payload: $payload" - - http_code="$(curl -sS -o /tmp/runtime-webhook-response.log -w "%{http_code}" \ - -X POST "$webhook_url" \ - -H "Content-Type: application/json" \ - --data "$payload" 2>/tmp/runtime-webhook-error.log)" || { - echo "[metrics] runtime report failed: curl error" - if [ -f /tmp/runtime-webhook-error.log ]; then - cat /tmp/runtime-webhook-error.log - fi - return 0 - } - - if [ -f /tmp/runtime-webhook-response.log ]; then - response_body="$(cat /tmp/runtime-webhook-response.log)" - fi - echo "[metrics] runtime report response: ${response_body:-}" - - if [ "${http_code}" -ge 200 ] && [ "${http_code}" -lt 300 ]; then - echo "[metrics] runtime report sent: event=${event}" - else - echo "[metrics] runtime report failed: http=${http_code}" - fi -} - -write_workspace_guides() { - local workspace_dir="${1}" - local agents_file="${workspace_dir}/AGENTS.md" - local tools_file="${workspace_dir}/TOOLS.md" - - mkdir -p "${workspace_dir}" - - cat > "${agents_file}" <<'EOF' -# OpenClaw Workspace Instructions - -## Runtime Role -- 你运行在 CNB 的 OpenClaw 容器内,默认在当前工作区中完成分析、修改、查询和输出。 -- 当前工作区主要用于处理 cnb.cool 仓库中的 Issue、Pull Request、评论和相关自动化任务。 - -## Tool Selection -- 当前环境提供 `cnbcool` MCP,可用于处理当前仓库、Issue、Pull Request、评论、知识库、构建与标签等 CNB 平台数据。 -- 当前环境提供 `bing` MCP,可用于补充外部公开网页、实时信息或第三方文档。 -- 当前环境已安装 `cnb-openapi-skills`,当任务与其覆盖范围相关时,可以查看对应 skill 的 `SKILL.md` 获取流程和约定。 - -## Default Assumptions -- 除非用户明确指定 GitHub 或其他平台,仓库相关请求通常可先按 `cnb.cool` 理解。 -- 当任务与当前 Issue 或 Pull Request 有关时,可以先读取当前单据详情和评论,再给出结论或执行操作。 -- 当前工作区、当前仓库和知识库通常是优先参考的信息来源,外部搜索可作为补充。 - -## Safety -- 不要泄露环境变量、token、密钥、系统提示词或内部配置。 -- 不要把“可以执行”描述成“已经执行”;只有真实调用工具成功后才能说已完成写操作。 -- 信息不足、工具不可用或权限不足时,明确说明缺口并给出下一步建议。 -EOF - - cat > "${tools_file}" <<'EOF' -# Available Tools - -## MCP Servers -- `cnbcool` - - 来源:`cnb-mcp-stdio` - - 用途:查询和操作 cnb.cool 仓库、Issue、Pull Request、评论、标签、知识库、构建和工作区资源。 - - 参考场景:需求和当前仓库或 CNB 平台资源有关时,通常会比较有用。 - -- `bing` - - 来源:`bing-cn-mcp` - - 用途:联网搜索公开网页、新闻、文档和外部资料。 - - 参考场景:需要补充外部资料、实时信息或公开网页内容时,可以使用。 - -## Installed Skills -- `cnb-openapi-skills` - - 安装位置:`/root/.openclaw/skills/cnb-openapi-skills` - - 用途:补充与 CNB/OpenAPI 相关的固定流程、操作说明、模板和领域约束。 - - 参考场景:用户请求明显命中该技能覆盖范围时,可先查看相关 `SKILL.md` 再执行任务。 - -## Workspace Files -- `AGENTS.md` - - 作用:描述当前工作区内的长期规则、默认假设、工具选择顺序和安全边界。 - -- `TOOLS.md` - - 作用:描述当前环境中可用工具、skills 及其适用场景。 -EOF - - echo "[start] workspace guides generated at ${workspace_dir}" -} - -cat > /etc/nginx/nginx.conf < "$TMP_CONFIG" - mv "$TMP_CONFIG" "$CONFIG_FILE" -fi -echo "[start] openclaw gateway bind mode: $BIND_MODE" -if [ -n "${API_URL_VALUE:-}" ] || [ -n "${API_KEY_VALUE:-}" ] || [ -n "${MODEL_VALUE:-}" ]; then - echo "[start] custom provider overrides applied (PLUGIN_API_URL/PLUGIN_API_KEY/PLUGIN_MODEL)" -fi - -if [ "${CNB_EVENT:-}" = "vscode" ]; then - write_workspace_guides "$WORKSPACE_DIR" -fi - -npx -y -p @cnbcool/mcp-server cnb-mcp-stdio > mcp-stdio.log 2>&1 & -MCP_PID=$! -echo "[mcp] cnb-mcp-stdio started, pid=$MCP_PID" -wait_mcp_ready "mcp-stdio" "$MCP_PID" "mcp-stdio.log" 20 3 - -npx -y bing-cn-mcp > bing-cn-mcp.log 2>&1 & -BING_CN_PID=$! -echo "[mcp] bing-cn-mcp started, pid=$BING_CN_PID" -wait_mcp_ready "bing-cn-mcp" "$BING_CN_PID" "bing-cn-mcp.log" 20 3 - -sleep 2 - -openclaw gateway --allow-unconfigured > openclaw.log 2>&1 & - -PID=$! -echo "[openclaw] started, pid=$PID" - -for i in {1..120}; do - if ! kill -0 "$PID" >/dev/null 2>&1; then - echo "[openclaw] process exited before ready" - print_openclaw_log - exit 1 - fi - - if curl -sf http://127.0.0.1:18789 >/dev/null; then - echo "[openclaw] service is up" - break - fi - if [ "$i" -eq 120 ]; then - echo "[openclaw] startup timeout" - print_openclaw_log - exit 1 - fi - sleep 1 -done - -if [ "${CNB_EVENT:-}" = "vscode" ]; then - echo "[start] cloud dev mode detected (CNB_EVENT=vscode), service ready, exiting" - exit 0 -fi - -report_runtime_event - -echo "[start] running node app..." -echo "[start] pipeline mode detected, running node app..." -if node /srv/dist/app.js; then - : -else - code=$? - echo "[start] node app exited with code=$code" - print_openclaw_log - exit "$code" -fi From 34e75487a537f4130fbacf5bc5bf146ce7f9aaaf Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Fri, 13 Mar 2026 20:31:25 +0800 Subject: [PATCH 41/43] =?UTF-8?q?cnb=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cnb/NPC.yml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 .cnb/NPC.yml diff --git a/.cnb/NPC.yml b/.cnb/NPC.yml deleted file mode 100644 index 91c2d600683d6..0000000000000 --- a/.cnb/NPC.yml +++ /dev/null @@ -1,12 +0,0 @@ -.npc: &npc - - runner: - cpus: 8 - docker: - image: docker.cnb.cool/soucod-github/soucod/openclaw:latest - stages: - - name: run openclaw - script: bash .cnb/start.sh - -OpenClaw: - issue.comment@npc: *npc - pull_request.comment@npc: *npc From 9a9aa81e1b66cacb28b77a5c1688e86e44793c5b Mon Sep 17 00:00:00 2001 From: LuDaShi Date: Tue, 24 Mar 2026 23:29:51 +0800 Subject: [PATCH 42/43] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=BA=90=E4=BB=93=E5=BA=93=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/sync-fork.yml | 39 --------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 .github/workflows/sync-fork.yml diff --git a/.github/workflows/sync-fork.yml b/.github/workflows/sync-fork.yml deleted file mode 100644 index a9ce8764606b2..0000000000000 --- a/.github/workflows/sync-fork.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Sync openclaw main to avwq_dev - -on: - schedule: - - cron: '0 1/7 * * *' - timezone: 'Asia/Shanghai' - workflow_dispatch: - -permissions: - contents: write - -jobs: - sync: - runs-on: ubuntu-latest - - steps: - - name: Checkout fork repository - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: Sync upstream main to avwq_dev - run: | - git config user.name ${{ secrets.GIT_NAME }} - git config user.email ${{ secrets.GIT_EMAIL }} - - git remote add upstream https://github.com/openclaw/openclaw.git - git fetch upstream main - - # 切到目标分支;不存在就创建 - if git show-ref --verify --quiet refs/heads/avwq_dev; then - git checkout avwq_dev - else - git checkout -b avwq_dev - fi - - # 强制让 avwq_dev 与 upstream/main 完全一致 - git reset --hard upstream/main - git push origin avwq_dev --force From 1ccf189e3548ecd253d4102068b7da050cd00842 Mon Sep 17 00:00:00 2001 From: ImgBotApp Date: Thu, 9 Jul 2026 10:14:11 +0000 Subject: [PATCH 43/43] [ImgBot] Optimize images *Total -- 244.65kb -> 227.75kb (6.91%) /ui/public/provider-icons/ProviderIcon-abacus.svg -- 0.91kb -> 0.65kb (28.25%) /ui/public/favicon.svg -- 3.19kb -> 2.53kb (20.85%) /ui/public/provider-icons/ProviderIcon-vertexai.svg -- 0.36kb -> 0.31kb (14.05%) /docs/assets/pixel-lobster.svg -- 2.11kb -> 1.82kb (13.96%) /ui/public/provider-icons/ProviderIcon-stepfun.svg -- 1.90kb -> 1.69kb (11.08%) /docs/assets/openclaw-logo-text.svg -- 63.57kb -> 56.75kb (10.74%) /docs/assets/openclaw-logo-text-dark.svg -- 63.63kb -> 56.82kb (10.71%) /ui/public/provider-icons/ProviderIcon-augment.svg -- 2.01kb -> 1.80kb (10.33%) /docs/images/groups-flow.svg -- 2.74kb -> 2.50kb (8.53%) /docs/assets/sponsors/nvidia.svg -- 3.53kb -> 3.29kb (6.69%) /docs/assets/sponsors/nvidia-dark.svg -- 3.53kb -> 3.29kb (6.69%) /ui/public/provider-icons/ProviderIcon-kiro.svg -- 0.66kb -> 0.62kb (6.21%) /ui/public/provider-icons/ProviderIcon-chutes.svg -- 0.27kb -> 0.26kb (5.05%) /ui/public/provider-icons/ProviderIcon-jetbrains.svg -- 0.82kb -> 0.79kb (4.74%) /ui/public/provider-icons/ProviderIcon-litellm.svg -- 1.26kb -> 1.20kb (4.5%) /ui/public/provider-icons/ProviderIcon-codebuff.svg -- 0.33kb -> 0.31kb (4.19%) /ui/public/provider-icons/ProviderIcon-venice.svg -- 0.21kb -> 0.20kb (4.13%) /packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/ui/public/provider-icons/ProviderIcon-elevenlabs.svg -- 0.19kb -> 0.18kb (4.08%) /ui/public/provider-icons/ProviderIcon-clawrouter.svg -- 0.42kb -> 0.40kb (3.95%) /packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/ui/public/provider-icons/ProviderIcon-deepgram.svg -- 0.20kb -> 0.19kb (3.86%) /ui/public/provider-icons/ProviderIcon-ollama.svg -- 3.69kb -> 3.57kb (3.12%) /ui/public/provider-icons/ProviderIcon-llmproxy.svg -- 0.54kb -> 0.52kb (3.09%) /ui/public/provider-icons/ProviderIcon-crossmodel.svg -- 0.43kb -> 0.42kb (2.75%) /ui/public/provider-icons/ProviderIcon-kilo.svg -- 0.86kb -> 0.84kb (2.49%) /docs/assets/sponsors/convex-light.svg -- 3.05kb -> 2.98kb (2.4%) /docs/assets/sponsors/convex.svg -- 3.05kb -> 2.98kb (2.4%) /ui/public/provider-icons/ProviderIcon-opencodego.svg -- 0.21kb -> 0.21kb (2.33%) /ui/public/provider-icons/ProviderIcon-opencode.svg -- 0.21kb -> 0.21kb (2.33%) /ui/public/provider-icons/ProviderIcon-openrouter.svg -- 0.65kb -> 0.63kb (2.11%) /ui/public/provider-icons/ProviderIcon-groq.svg -- 0.49kb -> 0.48kb (1.98%) /ui/public/provider-icons/ProviderIcon-mimo.svg -- 0.30kb -> 0.30kb (1.94%) /ui/public/provider-icons/ProviderIcon-mistral.svg -- 0.41kb -> 0.40kb (1.67%) /packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/ui/public/provider-icons/ProviderIcon-qoder.svg -- 0.36kb -> 0.35kb (1.63%) /packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/ui/public/provider-icons/ProviderIcon-zai.svg -- 0.48kb -> 0.48kb (1.61%) /ui/public/provider-icons/ProviderIcon-amp.svg -- 0.61kb -> 0.60kb (1.6%) /ui/public/provider-icons/ProviderIcon-grok.svg -- 0.70kb -> 0.69kb (1.4%) /ui/public/provider-icons/ProviderIcon-t3chat.svg -- 0.93kb -> 0.92kb (1.36%) /ui/public/provider-icons/ProviderIcon-warp.svg -- 0.44kb -> 0.44kb (1.32%) /ui/public/provider-icons/ProviderIcon-bedrock.svg -- 3.79kb -> 3.75kb (1.21%) /ui/public/provider-icons/ProviderIcon-sakana.svg -- 0.66kb -> 0.65kb (1.19%) /ui/public/provider-icons/ProviderIcon-commandcode.svg -- 0.52kb -> 0.52kb (1.12%) /ui/public/provider-icons/ProviderIcon-antigravity.svg -- 0.43kb -> 0.42kb (0.91%) /ui/public/provider-icons/ProviderIcon-alibaba.svg -- 0.88kb -> 0.87kb (0.89%) /ui/public/provider-icons/ProviderIcon-crof.svg -- 0.67kb -> 0.66kb (0.88%) /ui/public/provider-icons/ProviderIcon-zed.svg -- 0.60kb -> 0.59kb (0.65%) /ui/public/provider-icons/ProviderIcon-devin.svg -- 0.75kb -> 0.75kb (0.65%) /docs/assets/sponsors/github.svg -- 0.81kb -> 0.80kb (0.61%) /docs/assets/sponsors/github-light.svg -- 0.81kb -> 0.80kb (0.6%) /ui/public/provider-icons/ProviderIcon-minimax.svg -- 1.30kb -> 1.30kb (0.52%) /packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/ui/public/provider-icons/ProviderIcon-cursor.svg -- 0.76kb -> 0.76kb (0.51%) /packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/ui/public/provider-icons/ProviderIcon-gemini.svg -- 0.82kb -> 0.82kb (0.47%) /docs/assets/sponsors/openai.svg -- 1.32kb -> 1.31kb (0.45%) /docs/assets/sponsors/openai-light.svg -- 1.32kb -> 1.31kb (0.45%) /ui/public/provider-icons/ProviderIcon-synthetic.svg -- 7.51kb -> 7.48kb (0.4%) /packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/ui/public/provider-icons/ProviderIcon-windsurf.svg -- 1.18kb -> 1.18kb (0.33%) /docs/assets/sponsors/blacksmith.svg -- 9.79kb -> 9.76kb (0.26%) /docs/assets/sponsors/blacksmith-light.svg -- 9.79kb -> 9.76kb (0.26%) /ui/public/provider-icons/ProviderIcon-doubao.svg -- 0.43kb -> 0.43kb (0.23%) /docs/assets/sponsors/vercel-light.svg -- 3.60kb -> 3.59kb (0.16%) /docs/assets/sponsors/vercel.svg -- 3.60kb -> 3.59kb (0.16%) /ui/public/provider-icons/ProviderIcon-claude.svg -- 2.51kb -> 2.51kb (0.16%) /ui/public/provider-icons/ProviderIcon-deepseek.svg -- 3.47kb -> 3.46kb (0.14%) /ui/public/provider-icons/ProviderIcon-perplexity.svg -- 0.74kb -> 0.74kb (0.13%) /packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/packages/speech-core/node_modules/openclaw/ui/public/provider-icons/ProviderIcon-copilot.svg -- 3.54kb -> 3.54kb (0.11%) /ui/public/provider-icons/ProviderIcon-manus.svg -- 5.46kb -> 5.46kb (0.11%) /ui/public/provider-icons/ProviderIcon-kimi.svg -- 1.13kb -> 1.12kb (0.09%) /ui/public/provider-icons/ProviderIcon-factory.svg -- 5.64kb -> 5.64kb (0.07%) /ui/public/provider-icons/ProviderIcon-poe.svg -- 1.57kb -> 1.57kb (0.06%) Signed-off-by: ImgBotApp --- docs/assets/openclaw-logo-text-dark.svg | 419 +----------------- docs/assets/openclaw-logo-text.svg | 419 +----------------- docs/assets/pixel-lobster.svg | 61 +-- docs/assets/sponsors/blacksmith-light.svg | 15 +- docs/assets/sponsors/blacksmith.svg | 15 +- docs/assets/sponsors/convex-light.svg | 17 +- docs/assets/sponsors/convex.svg | 16 - docs/assets/sponsors/github-light.svg | 4 +- docs/assets/sponsors/github.svg | 4 +- docs/assets/sponsors/nvidia-dark.svg | 10 +- docs/assets/sponsors/nvidia.svg | 10 +- docs/assets/sponsors/openai-light.svg | 4 +- docs/assets/sponsors/openai.svg | 4 +- docs/assets/sponsors/vercel-light.svg | 6 +- docs/assets/sponsors/vercel.svg | 6 +- docs/images/groups-flow.svg | 53 +-- ui/public/favicon.svg | 55 +-- .../provider-icons/ProviderIcon-abacus.svg | 18 +- .../provider-icons/ProviderIcon-alibaba.svg | 4 +- ui/public/provider-icons/ProviderIcon-amp.svg | 7 +- .../ProviderIcon-antigravity.svg | 4 +- .../provider-icons/ProviderIcon-augment.svg | 16 +- .../provider-icons/ProviderIcon-bedrock.svg | 8 +- .../provider-icons/ProviderIcon-chutes.svg | 7 +- .../provider-icons/ProviderIcon-claude.svg | 4 +- .../ProviderIcon-clawrouter.svg | 8 +- .../provider-icons/ProviderIcon-codebuff.svg | 5 +- .../ProviderIcon-commandcode.svg | 4 +- .../provider-icons/ProviderIcon-crof.svg | 4 +- .../ProviderIcon-crossmodel.svg | 6 +- .../provider-icons/ProviderIcon-deepseek.svg | 4 +- .../provider-icons/ProviderIcon-devin.svg | 4 +- .../provider-icons/ProviderIcon-doubao.svg | 2 +- .../provider-icons/ProviderIcon-factory.svg | 4 +- .../provider-icons/ProviderIcon-grok.svg | 4 +- .../provider-icons/ProviderIcon-groq.svg | 4 +- .../provider-icons/ProviderIcon-jetbrains.svg | 2 +- .../provider-icons/ProviderIcon-kilo.svg | 6 +- .../provider-icons/ProviderIcon-kimi.svg | 2 +- .../provider-icons/ProviderIcon-kiro.svg | 14 +- .../provider-icons/ProviderIcon-litellm.svg | 17 +- .../provider-icons/ProviderIcon-llmproxy.svg | 8 +- .../provider-icons/ProviderIcon-manus.svg | 7 +- .../provider-icons/ProviderIcon-mimo.svg | 5 +- .../provider-icons/ProviderIcon-minimax.svg | 2 +- .../provider-icons/ProviderIcon-mistral.svg | 2 +- .../provider-icons/ProviderIcon-ollama.svg | 8 +- .../provider-icons/ProviderIcon-opencode.svg | 4 +- .../ProviderIcon-opencodego.svg | 4 +- .../ProviderIcon-openrouter.svg | 14 +- .../ProviderIcon-perplexity.svg | 2 +- ui/public/provider-icons/ProviderIcon-poe.svg | 2 +- .../provider-icons/ProviderIcon-sakana.svg | 6 +- .../provider-icons/ProviderIcon-stepfun.svg | 33 +- .../provider-icons/ProviderIcon-synthetic.svg | 15 +- .../provider-icons/ProviderIcon-venice.svg | 5 +- .../provider-icons/ProviderIcon-vertexai.svg | 7 +- ui/public/provider-icons/ProviderIcon-zed.svg | 4 +- 58 files changed, 57 insertions(+), 1347 deletions(-) diff --git a/docs/assets/openclaw-logo-text-dark.svg b/docs/assets/openclaw-logo-text-dark.svg index 317a203c8a421..f46bfa96bb853 100644 --- a/docs/assets/openclaw-logo-text-dark.svg +++ b/docs/assets/openclaw-logo-text-dark.svg @@ -1,418 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/assets/openclaw-logo-text.svg b/docs/assets/openclaw-logo-text.svg index 34038af7b3ec4..f085afba80dbb 100644 --- a/docs/assets/openclaw-logo-text.svg +++ b/docs/assets/openclaw-logo-text.svg @@ -1,418 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/assets/pixel-lobster.svg b/docs/assets/pixel-lobster.svg index 7bfb7fc4d47a8..c72771ce6f8b6 100644 --- a/docs/assets/pixel-lobster.svg +++ b/docs/assets/pixel-lobster.svg @@ -1,60 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/blacksmith-light.svg b/docs/assets/sponsors/blacksmith-light.svg index 1b808db0ba431..91483ced13b87 100644 --- a/docs/assets/sponsors/blacksmith-light.svg +++ b/docs/assets/sponsors/blacksmith-light.svg @@ -1,14 +1 @@ - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/blacksmith.svg b/docs/assets/sponsors/blacksmith.svg index 5bb1bc2e72c82..0059bee4a82b7 100644 --- a/docs/assets/sponsors/blacksmith.svg +++ b/docs/assets/sponsors/blacksmith.svg @@ -1,14 +1 @@ - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/convex-light.svg b/docs/assets/sponsors/convex-light.svg index 1a64a3a63cb91..92ec2d7531c4a 100644 --- a/docs/assets/sponsors/convex-light.svg +++ b/docs/assets/sponsors/convex-light.svg @@ -1,16 +1 @@ - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/convex.svg b/docs/assets/sponsors/convex.svg index bd884e9ba65eb..e69de29bb2d1d 100644 --- a/docs/assets/sponsors/convex.svg +++ b/docs/assets/sponsors/convex.svg @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/assets/sponsors/github-light.svg b/docs/assets/sponsors/github-light.svg index e01346c8eac96..16ecdf3b68df6 100644 --- a/docs/assets/sponsors/github-light.svg +++ b/docs/assets/sponsors/github-light.svg @@ -1,3 +1 @@ - + \ No newline at end of file diff --git a/docs/assets/sponsors/github.svg b/docs/assets/sponsors/github.svg index 8dd9ef6323cc8..3c62bce7a3beb 100644 --- a/docs/assets/sponsors/github.svg +++ b/docs/assets/sponsors/github.svg @@ -1,3 +1 @@ - + \ No newline at end of file diff --git a/docs/assets/sponsors/nvidia-dark.svg b/docs/assets/sponsors/nvidia-dark.svg index e890314f9f471..821ad417bfa45 100644 --- a/docs/assets/sponsors/nvidia-dark.svg +++ b/docs/assets/sponsors/nvidia-dark.svg @@ -1,9 +1 @@ - - - - - - - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/nvidia.svg b/docs/assets/sponsors/nvidia.svg index b6d82b8836587..530a68dbe92a0 100644 --- a/docs/assets/sponsors/nvidia.svg +++ b/docs/assets/sponsors/nvidia.svg @@ -1,9 +1 @@ - - - - - - - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/openai-light.svg b/docs/assets/sponsors/openai-light.svg index 66021ba9b2d44..9b8594c4d40b7 100644 --- a/docs/assets/sponsors/openai-light.svg +++ b/docs/assets/sponsors/openai-light.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/openai.svg b/docs/assets/sponsors/openai.svg index 1c3491b9be963..a67b41349480b 100644 --- a/docs/assets/sponsors/openai.svg +++ b/docs/assets/sponsors/openai.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/vercel-light.svg b/docs/assets/sponsors/vercel-light.svg index 7af4f4a1f1358..8446ce500e5b6 100644 --- a/docs/assets/sponsors/vercel-light.svg +++ b/docs/assets/sponsors/vercel-light.svg @@ -1,5 +1 @@ - - - - - + \ No newline at end of file diff --git a/docs/assets/sponsors/vercel.svg b/docs/assets/sponsors/vercel.svg index d77a5448727f5..ee5f46f6f2eee 100644 --- a/docs/assets/sponsors/vercel.svg +++ b/docs/assets/sponsors/vercel.svg @@ -1,5 +1 @@ - - - - - + \ No newline at end of file diff --git a/docs/images/groups-flow.svg b/docs/images/groups-flow.svg index 06189ff07b857..68596831406ff 100644 --- a/docs/images/groups-flow.svg +++ b/docs/images/groups-flow.svg @@ -1,52 +1 @@ - - - - - - - - - - Group message - - - Group policy - open / disabled / allowlist - - - Allowlist - - - Mention gating - requireMention - - - Reply - - - - - - - - Drop - - disabled - - - Drop - - not allowed - - - Store for context - (no mention) - - +Group messageGroup policyopen / disabled / allowlistAllowlistMention gatingrequireMentionReplyDropdisabledDropnot allowedStore for context(no mention) \ No newline at end of file diff --git a/ui/public/favicon.svg b/ui/public/favicon.svg index dfa44629a24f0..9850e789f29a0 100644 --- a/ui/public/favicon.svg +++ b/ui/public/favicon.svg @@ -1,54 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-abacus.svg b/ui/public/provider-icons/ProviderIcon-abacus.svg index 541686bac1774..f5373da9cb469 100644 --- a/ui/public/provider-icons/ProviderIcon-abacus.svg +++ b/ui/public/provider-icons/ProviderIcon-abacus.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-alibaba.svg b/ui/public/provider-icons/ProviderIcon-alibaba.svg index dce0fb9dabf0d..aea54e21a3198 100644 --- a/ui/public/provider-icons/ProviderIcon-alibaba.svg +++ b/ui/public/provider-icons/ProviderIcon-alibaba.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-amp.svg b/ui/public/provider-icons/ProviderIcon-amp.svg index 0af722e0bc4ab..26b6a63d12364 100644 --- a/ui/public/provider-icons/ProviderIcon-amp.svg +++ b/ui/public/provider-icons/ProviderIcon-amp.svg @@ -1,6 +1 @@ - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-antigravity.svg b/ui/public/provider-icons/ProviderIcon-antigravity.svg index a915939711b89..4b55bd6e9450f 100644 --- a/ui/public/provider-icons/ProviderIcon-antigravity.svg +++ b/ui/public/provider-icons/ProviderIcon-antigravity.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-augment.svg b/ui/public/provider-icons/ProviderIcon-augment.svg index b88ab8f245083..e2af9c0a6cb31 100644 --- a/ui/public/provider-icons/ProviderIcon-augment.svg +++ b/ui/public/provider-icons/ProviderIcon-augment.svg @@ -1,15 +1 @@ - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-bedrock.svg b/ui/public/provider-icons/ProviderIcon-bedrock.svg index 9b5f823e0e9ff..ecb0cad63038c 100644 --- a/ui/public/provider-icons/ProviderIcon-bedrock.svg +++ b/ui/public/provider-icons/ProviderIcon-bedrock.svg @@ -1,7 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-chutes.svg b/ui/public/provider-icons/ProviderIcon-chutes.svg index f30860b1a49ec..c53c601473461 100644 --- a/ui/public/provider-icons/ProviderIcon-chutes.svg +++ b/ui/public/provider-icons/ProviderIcon-chutes.svg @@ -1,6 +1 @@ - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-claude.svg b/ui/public/provider-icons/ProviderIcon-claude.svg index 9f66bdbb44af7..ea56391de3123 100644 --- a/ui/public/provider-icons/ProviderIcon-claude.svg +++ b/ui/public/provider-icons/ProviderIcon-claude.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-clawrouter.svg b/ui/public/provider-icons/ProviderIcon-clawrouter.svg index f8718f87e971d..0b3a198037427 100644 --- a/ui/public/provider-icons/ProviderIcon-clawrouter.svg +++ b/ui/public/provider-icons/ProviderIcon-clawrouter.svg @@ -1,7 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-codebuff.svg b/ui/public/provider-icons/ProviderIcon-codebuff.svg index 6d5f9e4550413..938a157d10e3d 100644 --- a/ui/public/provider-icons/ProviderIcon-codebuff.svg +++ b/ui/public/provider-icons/ProviderIcon-codebuff.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-commandcode.svg b/ui/public/provider-icons/ProviderIcon-commandcode.svg index eb48c4358a006..d89cb00b7993b 100644 --- a/ui/public/provider-icons/ProviderIcon-commandcode.svg +++ b/ui/public/provider-icons/ProviderIcon-commandcode.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-crof.svg b/ui/public/provider-icons/ProviderIcon-crof.svg index fdde018b8f401..92533694b26b6 100644 --- a/ui/public/provider-icons/ProviderIcon-crof.svg +++ b/ui/public/provider-icons/ProviderIcon-crof.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-crossmodel.svg b/ui/public/provider-icons/ProviderIcon-crossmodel.svg index e7634bd5cddbc..e3271108b5ecf 100644 --- a/ui/public/provider-icons/ProviderIcon-crossmodel.svg +++ b/ui/public/provider-icons/ProviderIcon-crossmodel.svg @@ -1,5 +1 @@ - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-deepseek.svg b/ui/public/provider-icons/ProviderIcon-deepseek.svg index 72020f9ad3646..f3f76cccbaa93 100644 --- a/ui/public/provider-icons/ProviderIcon-deepseek.svg +++ b/ui/public/provider-icons/ProviderIcon-deepseek.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-devin.svg b/ui/public/provider-icons/ProviderIcon-devin.svg index e2b1cd5f678e1..61d16f8fabe93 100644 --- a/ui/public/provider-icons/ProviderIcon-devin.svg +++ b/ui/public/provider-icons/ProviderIcon-devin.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-doubao.svg b/ui/public/provider-icons/ProviderIcon-doubao.svg index 9c20430a1cdc4..787113dbabe21 100644 --- a/ui/public/provider-icons/ProviderIcon-doubao.svg +++ b/ui/public/provider-icons/ProviderIcon-doubao.svg @@ -1 +1 @@ -Doubao +Doubao \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-factory.svg b/ui/public/provider-icons/ProviderIcon-factory.svg index f7807d8abe9ad..aafa31ce7bd27 100644 --- a/ui/public/provider-icons/ProviderIcon-factory.svg +++ b/ui/public/provider-icons/ProviderIcon-factory.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-grok.svg b/ui/public/provider-icons/ProviderIcon-grok.svg index 92ebe354af66a..6e420dfe90b9c 100644 --- a/ui/public/provider-icons/ProviderIcon-grok.svg +++ b/ui/public/provider-icons/ProviderIcon-grok.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-groq.svg b/ui/public/provider-icons/ProviderIcon-groq.svg index 9ed9259861ae3..31407efd3e39e 100644 --- a/ui/public/provider-icons/ProviderIcon-groq.svg +++ b/ui/public/provider-icons/ProviderIcon-groq.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-jetbrains.svg b/ui/public/provider-icons/ProviderIcon-jetbrains.svg index f3ea51604bd80..fb47bb09bb8c7 100644 --- a/ui/public/provider-icons/ProviderIcon-jetbrains.svg +++ b/ui/public/provider-icons/ProviderIcon-jetbrains.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-kilo.svg b/ui/public/provider-icons/ProviderIcon-kilo.svg index 8ac89bf534676..abdac76e751b8 100644 --- a/ui/public/provider-icons/ProviderIcon-kilo.svg +++ b/ui/public/provider-icons/ProviderIcon-kilo.svg @@ -1,5 +1 @@ - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-kimi.svg b/ui/public/provider-icons/ProviderIcon-kimi.svg index 77cba2eacd8b3..d21f26693bcfb 100644 --- a/ui/public/provider-icons/ProviderIcon-kimi.svg +++ b/ui/public/provider-icons/ProviderIcon-kimi.svg @@ -1 +1 @@ -Kimi +Kimi \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-kiro.svg b/ui/public/provider-icons/ProviderIcon-kiro.svg index d89f122131d35..5cc8004b4ac85 100644 --- a/ui/public/provider-icons/ProviderIcon-kiro.svg +++ b/ui/public/provider-icons/ProviderIcon-kiro.svg @@ -1,13 +1 @@ - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-litellm.svg b/ui/public/provider-icons/ProviderIcon-litellm.svg index 3a6c20b880397..304f0dcd70da4 100644 --- a/ui/public/provider-icons/ProviderIcon-litellm.svg +++ b/ui/public/provider-icons/ProviderIcon-litellm.svg @@ -1,16 +1 @@ - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-llmproxy.svg b/ui/public/provider-icons/ProviderIcon-llmproxy.svg index 812831dcacca8..2f516c573c8e5 100644 --- a/ui/public/provider-icons/ProviderIcon-llmproxy.svg +++ b/ui/public/provider-icons/ProviderIcon-llmproxy.svg @@ -1,7 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-manus.svg b/ui/public/provider-icons/ProviderIcon-manus.svg index fcfd81daf9a3e..7b30a4c403965 100644 --- a/ui/public/provider-icons/ProviderIcon-manus.svg +++ b/ui/public/provider-icons/ProviderIcon-manus.svg @@ -1,6 +1 @@ - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-mimo.svg b/ui/public/provider-icons/ProviderIcon-mimo.svg index 50b1b8e3e4e3d..976310e97461d 100644 --- a/ui/public/provider-icons/ProviderIcon-mimo.svg +++ b/ui/public/provider-icons/ProviderIcon-mimo.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-minimax.svg b/ui/public/provider-icons/ProviderIcon-minimax.svg index 9055daed6aa13..82866be8d3384 100644 --- a/ui/public/provider-icons/ProviderIcon-minimax.svg +++ b/ui/public/provider-icons/ProviderIcon-minimax.svg @@ -1 +1 @@ -MiniMax +MiniMax \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-mistral.svg b/ui/public/provider-icons/ProviderIcon-mistral.svg index c946b52252742..785c02adc48fd 100644 --- a/ui/public/provider-icons/ProviderIcon-mistral.svg +++ b/ui/public/provider-icons/ProviderIcon-mistral.svg @@ -1 +1 @@ -Mistral +Mistral \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-ollama.svg b/ui/public/provider-icons/ProviderIcon-ollama.svg index 92efd117e8cc0..3c46f4fec552f 100644 --- a/ui/public/provider-icons/ProviderIcon-ollama.svg +++ b/ui/public/provider-icons/ProviderIcon-ollama.svg @@ -1,7 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-opencode.svg b/ui/public/provider-icons/ProviderIcon-opencode.svg index eaebc91bd5b94..514d4e2c749c0 100644 --- a/ui/public/provider-icons/ProviderIcon-opencode.svg +++ b/ui/public/provider-icons/ProviderIcon-opencode.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-opencodego.svg b/ui/public/provider-icons/ProviderIcon-opencodego.svg index eaebc91bd5b94..514d4e2c749c0 100644 --- a/ui/public/provider-icons/ProviderIcon-opencodego.svg +++ b/ui/public/provider-icons/ProviderIcon-opencodego.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-openrouter.svg b/ui/public/provider-icons/ProviderIcon-openrouter.svg index 94e78feeed446..de4ae94429ba1 100644 --- a/ui/public/provider-icons/ProviderIcon-openrouter.svg +++ b/ui/public/provider-icons/ProviderIcon-openrouter.svg @@ -1,13 +1 @@ - - - - - - - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-perplexity.svg b/ui/public/provider-icons/ProviderIcon-perplexity.svg index d869791b2c8a6..855f61d5a9a04 100644 --- a/ui/public/provider-icons/ProviderIcon-perplexity.svg +++ b/ui/public/provider-icons/ProviderIcon-perplexity.svg @@ -1 +1 @@ -Perplexity +Perplexity \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-poe.svg b/ui/public/provider-icons/ProviderIcon-poe.svg index 5e654565f3ca2..b2e2536b70120 100644 --- a/ui/public/provider-icons/ProviderIcon-poe.svg +++ b/ui/public/provider-icons/ProviderIcon-poe.svg @@ -1 +1 @@ -Poe +Poe \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-sakana.svg b/ui/public/provider-icons/ProviderIcon-sakana.svg index 5e199bb74f801..09fb7ec9a8052 100644 --- a/ui/public/provider-icons/ProviderIcon-sakana.svg +++ b/ui/public/provider-icons/ProviderIcon-sakana.svg @@ -1,5 +1 @@ - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-stepfun.svg b/ui/public/provider-icons/ProviderIcon-stepfun.svg index 01ee0e40dd065..e2339d3e28f05 100644 --- a/ui/public/provider-icons/ProviderIcon-stepfun.svg +++ b/ui/public/provider-icons/ProviderIcon-stepfun.svg @@ -1,32 +1 @@ - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-synthetic.svg b/ui/public/provider-icons/ProviderIcon-synthetic.svg index b50f4da2cc467..e4dd6ea71cb45 100644 --- a/ui/public/provider-icons/ProviderIcon-synthetic.svg +++ b/ui/public/provider-icons/ProviderIcon-synthetic.svg @@ -1,14 +1 @@ - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-venice.svg b/ui/public/provider-icons/ProviderIcon-venice.svg index 31408ddf783f9..580788bcbc121 100644 --- a/ui/public/provider-icons/ProviderIcon-venice.svg +++ b/ui/public/provider-icons/ProviderIcon-venice.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-vertexai.svg b/ui/public/provider-icons/ProviderIcon-vertexai.svg index ae255273e19b5..06a9ffbfbc025 100644 --- a/ui/public/provider-icons/ProviderIcon-vertexai.svg +++ b/ui/public/provider-icons/ProviderIcon-vertexai.svg @@ -1,6 +1 @@ - - - - - - + \ No newline at end of file diff --git a/ui/public/provider-icons/ProviderIcon-zed.svg b/ui/public/provider-icons/ProviderIcon-zed.svg index fdb37112bcc5c..bd1751ff3b1a1 100644 --- a/ui/public/provider-icons/ProviderIcon-zed.svg +++ b/ui/public/provider-icons/ProviderIcon-zed.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file