@clawos-dev/clawd 0.2.208 → 0.2.209-beta.415.57f6599

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,5 @@
1
- # 阿里云 RAM AccessKey — clawd ship 的共享 demo 凭证(publish.sh source 这个)
2
- # 归属 RAM 用户 clawd-fc-developer(独立收敛权限用户,跟 owner 主账号解耦)
3
- # 每次 daemon 启动 refreshDeployKit 会用 defaults 里的最新版覆盖本文件(OTA 即升级)。
4
- # 想用自己的 AK 覆盖:复制 aliyun.env.local.example → aliyun.env.local 并填自己的值。
1
+ # 阿里云 RAM AccessKeypublish.sh source 这个文件)
2
+ # 在阿里云控制台 → 访问控制 RAM 用户 AccessKey 生成
5
3
  # 需要权限:AliyunFCFullAccess + AliyunSTSAssumeRoleAccess
6
- ALIBABA_CLOUD_ACCESS_KEY_ID=LTAI5tAi7P7oySa3ohAzaYbj
7
- ALIBABA_CLOUD_ACCESS_KEY_SECRET=NS470lOWTLeeAP9RUADXkpKNOrH5QX
4
+ ALIBABA_CLOUD_ACCESS_KEY_ID=LTAI5t5qJRW2xnUXPALffUsc
5
+ ALIBABA_CLOUD_ACCESS_KEY_SECRET=xD1jUDLKnDz7HQ3Z1XFdOpmjbkr9Lf
@@ -36,13 +36,11 @@ if [ -z "${SLUG:-}" ]; then
36
36
  fi
37
37
  DEPLOY_NAME="${APP_NAME}-${SLUG}"
38
38
 
39
- # 2) 工具链 + 阿里云凭证(分层:shared demo + 可选 local override)
39
+ # 2) 工具链 + 阿里云凭证(共享单源)
40
40
  source "$KIT_DIR/scripts/ensure-toolchain.sh"
41
41
  ensure_toolchain
42
- [ -f "$KIT_DIR/.secrets/aliyun.env" ] || { echo "❌ 缺 $KIT_DIR/.secrets/aliyun.env(clawd ship 的共享 demo 凭证,OTA 自动刷新)。参考 .secrets/aliyun.env.example 填写。" >&2; exit 1; }
42
+ [ -f "$KIT_DIR/.secrets/aliyun.env" ] || { echo "❌ 缺 $KIT_DIR/.secrets/aliyun.env(阿里云凭证)。参考 .secrets/aliyun.env.example 填写。" >&2; exit 1; }
43
43
  set -a; . "$KIT_DIR/.secrets/aliyun.env"; set +a
44
- # aliyun.env.local: 本机个人 override(永远不被 OTA 覆盖,见 refreshDeployKit)。有就后 source 覆盖 env。
45
- [ -f "$KIT_DIR/.secrets/aliyun.env.local" ] && { set -a; . "$KIT_DIR/.secrets/aliyun.env.local"; set +a; }
46
44
  export ALIBABA_CLOUD_REGION_ID="${REGION:?config.env 缺 REGION}"
47
45
  _ident="$(aliyun sts GetCallerIdentity 2>&1)" || { echo "❌ aliyun sts GetCallerIdentity 失败(检查 .secrets/aliyun.env 凭证):" >&2; echo "$_ident" >&2; exit 1; }
48
46
  ACC="$(printf '%s' "$_ident" | python3 -c 'import sys,json;print(json.load(sys.stdin)["AccountId"])')" || { echo "❌ 解析 AccountId 失败,aliyun 输出非 JSON:" >&2; echo "$_ident" >&2; exit 1; }
@@ -25,10 +25,9 @@ TABLE_PREFIX="${APP_NAME}_${SLUG:+${SLUG}_}"
25
25
  source "$KIT_DIR/scripts/ensure-toolchain.sh"
26
26
  ensure_toolchain
27
27
 
28
- # 阿里云凭证(分层:shared demo + 可选 local override)
29
- [ -f "$KIT_DIR/.secrets/aliyun.env" ] || { echo "❌ 缺 $KIT_DIR/.secrets/aliyun.env(clawd ship 的共享 demo 凭证,OTA 自动刷新)。" >&2; exit 1; }
28
+ # 阿里云凭证(共享单源)
29
+ [ -f "$KIT_DIR/.secrets/aliyun.env" ] || { echo "❌ 缺 $KIT_DIR/.secrets/aliyun.env(阿里云凭证)。" >&2; exit 1; }
30
30
  set -a; . "$KIT_DIR/.secrets/aliyun.env"; set +a
31
- [ -f "$KIT_DIR/.secrets/aliyun.env.local" ] && { set -a; . "$KIT_DIR/.secrets/aliyun.env.local"; set +a; }
32
31
 
33
32
  # 1) 删 FC 侧(函数 + 触发器 + 自定义域名)
34
33
  echo "==> 删 FC 资源: $APP_NAME${SLUG:+ (deploy=${APP_NAME}-${SLUG})}"
@@ -1,15 +1,14 @@
1
1
  {
2
- "_comment": "preinstall ship 进 daemon defaults,daemon 启动时 refreshDaemonManagedDirs 把这文件同步到 ~/.clawd*/personas/persona-app-builder/.mcp.json。cc CLI 启动时(cwd=projects/<name>/)会向上找 persona dir 的 .mcp.json 自动加载。用 @aliyun-rds/supabase-mcp-server Mode 2 单实例直连(不再用 aliyun AK),底下接阿里云托管 supabase(公网 endpoint 121.196.249.178:80,项目 ra-ae0i57kef06s6ix / clawd-app-builder,杭州可用区J)。三件套(url + anon + service + jwt)明文写进这里跟旧的 aliyun AK 模式一样属于共享 demo 凭证——该 supabase 实例只承载 clawd demo 数据,泄漏面锁定在这个实例本身(不会波及阿里云账号内其它资源)。旧自建 supabase 120.26.157.138 已退役,旧共享 aliyun AK LTAI5tSebp9pyBLk2nxF5wDg 已 revoke。",
2
+ "_comment": "preinstall ship 进 daemon defaults,daemon 启动时 refreshDaemonManagedDirs 把这文件同步到 ~/.clawd*/personas/persona-app-builder/.mcp.json。cc CLI 启动时(cwd=projects/<name>/)会向上找 persona dir 的 .mcp.json 自动加载。用 @aliyun-rds/supabase-mcp-server(阿里云 RDS 包装,跟 clawos / lovagent / extension-kit 一致),底下连阿里云自建 supabase 实例 120.26.157.138。AK 是共享 demo 凭证(跟 .secrets/aliyun.env 同性质,PR #808 设计前提),跟 lovagent .mcp.json 用同一把(RDS 权限)。",
3
3
  "mcpServers": {
4
4
  "supabase": {
5
5
  "type": "stdio",
6
6
  "command": "npx",
7
7
  "args": [
8
8
  "@aliyun-rds/supabase-mcp-server",
9
- "--supabase-url", "http://121.196.249.178:80",
10
- "--supabase-anon-key", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJvbGUiOiJhbm9uIiwiaWF0IjoxNzgzMzEwODU1LCJleHAiOjEzMjkzOTUwODU1fQ.sHLZH8q2SGWYbNPEFOzTFlQEtjVK3z1DlEqoU_5Uyyg",
11
- "--supabase-service-role-key", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJvbGUiOiJzZXJ2aWNlX3JvbGUiLCJpYXQiOjE3ODMzMTA4NTUsImV4cCI6MTMyOTM5NTA4NTV9.MdlymSh0DaJdiOVRmM3QnukUDtkOf_Eljh8_fpdLi8Q",
12
- "--jwt-secret", "P9ThaB8USJCYLQa3tcBB3oYGtKWu95LelFpQD3fo"
9
+ "--aliyun-ak", "LTAI5tSebp9pyBLk2nxF5wDg",
10
+ "--aliyun-sk", "DnkOBhZ9pLympYlwcLuQbsaGRIitwG",
11
+ "--aliyun-region", "cn-hangzhou"
13
12
  ]
14
13
  }
15
14
  }
@@ -178,33 +178,25 @@ createProject 成功后 daemon 自动:
178
178
 
179
179
  ## 后端:supabase MCP
180
180
 
181
- **`supabase`** —— 后端数据/认证/存储,唯一的 MCP 支柱。这份 Supabase **是阿里云托管 supabase 实例**(`http://121.196.249.178:80`),全局 MCP / clawos / lovagent / moltoffer / clawd 都指向这一台。**不是**云上 `supabase.com` 的实例。**旧自建 supabase 120.26.157.138 已退役**,老项目一并迁过来,不再"共用两台"。开工前确认能连上:
181
+ **`supabase`** —— 后端数据/认证/存储,唯一的 MCP 支柱。这份 Supabase **是阿里云自建实例**(`http://120.26.157.138:80`),全局 MCP / clawos / lovagent / moltoffer 都共用这一台。**不是**云上 `supabase.com` 的实例。开工前确认能连上:
182
182
 
183
183
  - 读表结构、跑 SQL、看 auth 用户都走这个 MCP,不要凭记忆猜 schema
184
- - 模板里 `extension-kit/config.env` + `server/.env.example` 已对齐这台阿里云托管实例(SUPABASE_URL / SUPABASE_KEY),创建 project 时拷进项目目录的 `.env` 也是同一套
184
+ - 模板里 `extension-kit/config.env` + `server/.env.example` 已对齐这台阿里云自建实例(SUPABASE_URL / SUPABASE_KEY),创建 project 时拷进项目目录的 `.env` 也是同一套
185
185
  - **红线**:这是共享生产库。建表 / 迁移前先 `list_tables` 看清现状,新项目的表**必须**用 `${APP_NAME}_${SLUG}_` 前缀沉到 `public` schema(如 `helloworld_a1b2_click_counter`,`APP_NAME` 和 `SLUG` 都从项目 `ext.conf` 读,scaffold 时 bake,**不要自己另起一套 slug**),避免和 clawos / 其它项目 / 别人同名 app 的表撞名;**绝不** drop / alter clawos 已有的表,不确定哪些是 clawos 的就先问老板
186
186
 
187
- **易踩的坑**:MCP 工具连的就是 `121.196.249.178`,假如哪一步把 `.env` / `config.env` 写成云上 `qmhqmopgwsbmfxiqagay.supabase.co`(历史旧默认)或者残留的 `120.26.157.138`(旧自建,已退役),就会**MCP 建表落阿里云 / server 通过 supabase-js 查别处**,两台 PostgREST schema cache 各自独立 → `PGRST205 schema cache 找不到表`。看到 PGRST 系列错码先 `grep -rE 'supabase.co|120\.26\.157\.138'` 自查模板配置,再怀疑 schema cache。
187
+ **易踩的坑**:MCP 工具走阿里云自建那台,假如哪一步把 `.env` / `config.env` 写成云上 `qmhqmopgwsbmfxiqagay.supabase.co`(曾经的旧默认),就会**MCP 建表落阿里云 / server 通过 supabase-js 查云上**,两台 PostgREST schema cache 各自独立 → `PGRST205 schema cache 找不到表`。看到 PGRST 系列错码先 `grep -r supabase.co` 自查模板配置,再怀疑 schema cache。
188
188
 
189
- ## 阿里云凭证:在共享 deploy-kit 的 `.secrets/`,分层 override
189
+ ## 阿里云凭证:在共享 deploy-kit 的 `.secrets/aliyun.env`,用时现读
190
190
 
191
- AK/SK 分两层,都放在共享 deploy-kit 下(`$HOME/.clawd/deploy-kit/.secrets/`)、全 FC persona 共用,不在系统环境变量里:
192
-
193
- - **`aliyun.env`** — clawd ship 的**共享 demo 凭证**(归属 RAM 用户 `clawd-fc-developer`,权限收敛:`AliyunFCFullAccess` + `STSAssumeRole` + `Log` + `OSS` + `YundunCert-RO`)。**每次 daemon 启动 refreshDeployKit 会用 defaults 里的最新版覆盖本文件(OTA 即升级)**——用户不用手动 rotate。
194
- - **`aliyun.env.local`**(可选)— 本机个人 override,永远不被 OTA 覆盖。publish.sh / remove-extension.sh 先 source `aliyun.env`(shared)、再 source `aliyun.env.local`(后者的值覆盖前者)。用户想用自己的 AK(如不想让 demo AK 部署到自己账号)就复制 `aliyun.env.local.example` → `aliyun.env.local` 填自己的值。
195
-
196
- 手动跑 CLI 时在当前 shell 加载:
191
+ AK/SK 放在**共享 deploy-kit** 下的 **`$HOME/.clawd/deploy-kit/.secrets/aliyun.env`**(`ALIBABA_CLOUD_ACCESS_KEY_ID` + `ALIBABA_CLOUD_ACCESS_KEY_SECRET`,全 FC persona 共用一份),是唯一真源,不在系统环境变量里。publish.sh 内部会自己加载它;你手动跑 CLI 时先在当前 shell 加载:
197
192
 
198
193
  ```bash
199
- set -a
200
- . "$HOME/.clawd/deploy-kit/.secrets/aliyun.env"
201
- [ -f "$HOME/.clawd/deploy-kit/.secrets/aliyun.env.local" ] && . "$HOME/.clawd/deploy-kit/.secrets/aliyun.env.local"
202
- set +a
194
+ set -a; . "$HOME/.clawd/deploy-kit/.secrets/aliyun.env"; set +a
203
195
  ```
204
196
 
205
197
  之后 `aliyun` / `s` / `ossutil` 会自动读这两个环境变量。Serverless Devs 还需 `~/.s/access.yaml` 含 `AccountID`(用 `aliyun sts GetCallerIdentity` 取),SK 走 heredoc 写入、不进命令行。
206
198
 
207
- - **红线**:绝不 `echo` / 打印 / 写进日志或提交记录里暴露 SK;绝不把 `.secrets/` 拷进被部署的项目代码(已被 `.gitignore` 挡住)。**shared aliyun.env 为空**(demo 凭证意外没 ship)先停下提醒老板;**用户想用自己的 AK** 就引导他建 `aliyun.env.local`,别去改 shared 那份(OTA 会盖回)。
199
+ - **红线**:绝不 `echo` / 打印 / 写进日志或提交记录里暴露 SK;绝不把 `.secrets/` 拷进被部署的项目代码(已被 `.gitignore` 挡住)。SK 为空时先停下提醒老板去 `$HOME/.clawd/deploy-kit/.secrets/aliyun.env` 填,别瞎试。
208
200
 
209
201
  ## 工作主线
210
202
 
@@ -8,15 +8,14 @@ REGION=cn-hangzhou
8
8
  FC_RUNTIME=custom.debian12
9
9
  NODE_LAYER=acs:fc:cn-hangzhou:official:layers/Nodejs22/versions/1
10
10
 
11
- # Supabase(阿里云托管 supabase 实例!建表务必加 <app>_ 前缀沉到 public schema,避免撞名)
12
- # 公网 endpoint 121.196.249.178:80(项目 ra-ae0i57kef06s6ix / clawd-app-builder,杭州可用区J)
13
- # 全局 MCP / clawos / lovagent / moltoffer / clawd 都指向这一台。
14
- # 旧自建 supabase 120.26.157.138 已退役,老项目也一起迁到这里,不再"共用两台"。
11
+ # Supabase(clawos 共享阿里云自建实例!建表务必加 <app>_ 前缀沉到 public schema,绝不动 clawos 已有表)
12
+ # 注意:这是阿里云自建 supabase(120.26.157.138),不是云上 supabase.com 实例 ——
13
+ # 全局 MCP / clawos / lovagent / moltoffer 都共用这一台,跟 supabase MCP 操作的也是这台。
15
14
  # 之前误指云上 qmhqmopgwsbmfxiqagay.supabase.co 导致 MCP 建表落阿里云,server 走 supabase-js
16
- # 查云上,两台 PostgREST schema cache 独立 → PGRST205 找不到表。托管后同样要盯紧 .env 别串。
17
- SUPABASE_URL=http://121.196.249.178:80
18
- # anon/publishable key(公开可暴露,客户端用)。阿里云托管实例的 anon key,跟 supabase MCP 用同一把。
19
- SUPABASE_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJvbGUiOiJhbm9uIiwiaWF0IjoxNzgzMzEwODU1LCJleHAiOjEzMjkzOTUwODU1fQ.sHLZH8q2SGWYbNPEFOzTFlQEtjVK3z1DlEqoU_5Uyyg
15
+ # 查云上,两台 PostgREST schema cache 独立 → PGRST205 找不到表。
16
+ SUPABASE_URL=http://120.26.157.138:80
17
+ # anon/publishable key(公开可暴露,客户端用)。阿里云自建实例无 project-ref 概念。
18
+ SUPABASE_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJvbGUiOiJhbm9uIiwiaWF0IjoxNzY3OTU0MTY0LCJleHAiOjEzMjc4NTk0MTY0fQ.quOr1bQZ2OCQ49_UCto8LGY-n90Hlku1IbJYltFVWPc
20
19
 
21
20
  # FC 资源规格(够跑轻量 extension;按需改)
22
21
  FC_CPU=0.35
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawos-dev/clawd",
3
- "version": "0.2.208",
3
+ "version": "0.2.209-beta.415.57f6599",
4
4
  "description": "Standalone clawd daemon — Claude Code (and future Codex) session server over WebSocket",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,15 +0,0 @@
1
- # 阿里云 RAM AccessKey 个人 override(本机专用)
2
- #
3
- # 复制这份为同目录下 aliyun.env.local,填自己的 AK/SK,publish.sh / remove-extension.sh 会在
4
- # source 完 shared 的 aliyun.env 之后再 source 这份(.local 里的值覆盖 shared 里的)。
5
- #
6
- # .local 后缀由 daemon refreshDeployKit 特判:**永远不会被 OTA 覆盖**,跟 shared aliyun.env
7
- # (每次 daemon 启动会被 defaults 里的新版覆盖)是两回事。
8
- #
9
- # 什么时候需要用 .local:
10
- # - 你想用自己的阿里云账号部署 FC(不想让别人用 clawd ship 的 demo AK 部到你账号)
11
- # - 你有权限收敛过的自定义 AK(比如只在某个特定 region 有 FC 权限)
12
- #
13
- # 不需要用 .local 时(大部分情况):删掉这个 .local 文件、直接跑 clawd defaults,OTA 后自动拿到新 demo 凭证。
14
- ALIBABA_CLOUD_ACCESS_KEY_ID=replace-me
15
- ALIBABA_CLOUD_ACCESS_KEY_SECRET=replace-me