@clawos-dev/clawd 0.2.206 → 0.2.207-beta.413.913ff65

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.
package/dist/cli.cjs CHANGED
@@ -46137,7 +46137,7 @@ function refreshDeployKit(args) {
46137
46137
  if (fs10.existsSync(secretsSrc)) {
46138
46138
  fs10.mkdirSync(path13.join(dst, ".secrets"), { recursive: true });
46139
46139
  for (const f of fs10.readdirSync(secretsSrc)) {
46140
- if (!f.endsWith(".example")) continue;
46140
+ if (f.endsWith(".local")) continue;
46141
46141
  fs10.copyFileSync(path13.join(secretsSrc, f), path13.join(dst, ".secrets", f));
46142
46142
  }
46143
46143
  }
@@ -1,5 +1,7 @@
1
- # 阿里云 RAM AccessKeypublish.sh source 这个文件)
2
- # 在阿里云控制台 → 访问控制 RAM 用户 AccessKey 生成
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 并填自己的值。
3
5
  # 需要权限:AliyunFCFullAccess + AliyunSTSAssumeRoleAccess
4
6
  ALIBABA_CLOUD_ACCESS_KEY_ID=LTAI5tAi7P7oySa3ohAzaYbj
5
7
  ALIBABA_CLOUD_ACCESS_KEY_SECRET=NS470lOWTLeeAP9RUADXkpKNOrH5QX
@@ -0,0 +1,15 @@
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
@@ -36,11 +36,13 @@ if [ -z "${SLUG:-}" ]; then
36
36
  fi
37
37
  DEPLOY_NAME="${APP_NAME}-${SLUG}"
38
38
 
39
- # 2) 工具链 + 阿里云凭证(共享单源)
39
+ # 2) 工具链 + 阿里云凭证(分层:shared demo + 可选 local override)
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(阿里云凭证)。参考 .secrets/aliyun.env.example 填写。" >&2; exit 1; }
42
+ [ -f "$KIT_DIR/.secrets/aliyun.env" ] || { echo "❌ 缺 $KIT_DIR/.secrets/aliyun.env(clawd ship 的共享 demo 凭证,OTA 自动刷新)。参考 .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; }
44
46
  export ALIBABA_CLOUD_REGION_ID="${REGION:?config.env 缺 REGION}"
45
47
  _ident="$(aliyun sts GetCallerIdentity 2>&1)" || { echo "❌ aliyun sts GetCallerIdentity 失败(检查 .secrets/aliyun.env 凭证):" >&2; echo "$_ident" >&2; exit 1; }
46
48
  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,9 +25,10 @@ TABLE_PREFIX="${APP_NAME}_${SLUG:+${SLUG}_}"
25
25
  source "$KIT_DIR/scripts/ensure-toolchain.sh"
26
26
  ensure_toolchain
27
27
 
28
- # 阿里云凭证(共享单源)
29
- [ -f "$KIT_DIR/.secrets/aliyun.env" ] || { echo "❌ 缺 $KIT_DIR/.secrets/aliyun.env(阿里云凭证)。" >&2; exit 1; }
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; }
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; }
31
32
 
32
33
  # 1) 删 FC 侧(函数 + 触发器 + 自定义域名)
33
34
  echo "==> 删 FC 资源: $APP_NAME${SLUG:+ (deploy=${APP_NAME}-${SLUG})}"
@@ -186,17 +186,25 @@ createProject 成功后 daemon 自动:
186
186
 
187
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。
188
188
 
189
- ## 阿里云凭证:在共享 deploy-kit 的 `.secrets/aliyun.env`,用时现读
189
+ ## 阿里云凭证:在共享 deploy-kit 的 `.secrets/`,分层 override
190
190
 
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 加载:
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 加载:
192
197
 
193
198
  ```bash
194
- set -a; . "$HOME/.clawd/deploy-kit/.secrets/aliyun.env"; set +a
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
195
203
  ```
196
204
 
197
205
  之后 `aliyun` / `s` / `ossutil` 会自动读这两个环境变量。Serverless Devs 还需 `~/.s/access.yaml` 含 `AccountID`(用 `aliyun sts GetCallerIdentity` 取),SK 走 heredoc 写入、不进命令行。
198
206
 
199
- - **红线**:绝不 `echo` / 打印 / 写进日志或提交记录里暴露 SK;绝不把 `.secrets/` 拷进被部署的项目代码(已被 `.gitignore` 挡住)。SK 为空时先停下提醒老板去 `$HOME/.clawd/deploy-kit/.secrets/aliyun.env` 填,别瞎试。
207
+ - **红线**:绝不 `echo` / 打印 / 写进日志或提交记录里暴露 SK;绝不把 `.secrets/` 拷进被部署的项目代码(已被 `.gitignore` 挡住)。**shared aliyun.env 为空**(demo 凭证意外没 ship)先停下提醒老板;**用户想用自己的 AK** 就引导他建 `aliyun.env.local`,别去改 shared 那份(OTA 会盖回)。
200
208
 
201
209
  ## 工作主线
202
210
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawos-dev/clawd",
3
- "version": "0.2.206",
3
+ "version": "0.2.207-beta.413.913ff65",
4
4
  "description": "Standalone clawd daemon — Claude Code (and future Codex) session server over WebSocket",
5
5
  "type": "module",
6
6
  "license": "MIT",