@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.
- package/dist/cli.cjs +807 -868
- package/dist/deploy-kit/.secrets/aliyun.env +4 -6
- package/dist/deploy-kit/scripts/publish.sh +2 -4
- package/dist/deploy-kit/scripts/remove-extension.sh +2 -3
- package/dist/persona-defaults/persona-app-builder/.mcp.json +4 -5
- package/dist/persona-defaults/persona-app-builder/CLAUDE.md +7 -15
- package/dist/persona-defaults/persona-app-builder/extension-kit/config.env +7 -8
- package/package.json +1 -1
- package/dist/deploy-kit/.secrets/aliyun.env.local.example +0 -15
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
# 阿里云 RAM AccessKey
|
|
2
|
-
#
|
|
3
|
-
# 每次 daemon 启动 refreshDeployKit 会用 defaults 里的最新版覆盖本文件(OTA 即升级)。
|
|
4
|
-
# 想用自己的 AK 覆盖:复制 aliyun.env.local.example → aliyun.env.local 并填自己的值。
|
|
1
|
+
# 阿里云 RAM AccessKey(publish.sh source 这个文件)
|
|
2
|
+
# 在阿里云控制台 → 访问控制 RAM → 用户 → AccessKey 生成
|
|
5
3
|
# 需要权限:AliyunFCFullAccess + AliyunSTSAssumeRoleAccess
|
|
6
|
-
ALIBABA_CLOUD_ACCESS_KEY_ID=
|
|
7
|
-
ALIBABA_CLOUD_ACCESS_KEY_SECRET=
|
|
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) 工具链 +
|
|
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
|
|
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
|
-
#
|
|
29
|
-
[ -f "$KIT_DIR/.secrets/aliyun.env" ] || { echo "❌ 缺 $KIT_DIR/.secrets/aliyun.env
|
|
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
|
|
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
|
-
"--
|
|
10
|
-
"--
|
|
11
|
-
"--
|
|
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
|
|
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`
|
|
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
|
|
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
|
|
189
|
+
## 阿里云凭证:在共享 deploy-kit 的 `.secrets/aliyun.env`,用时现读
|
|
190
190
|
|
|
191
|
-
AK/SK
|
|
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`
|
|
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(
|
|
12
|
-
#
|
|
13
|
-
# 全局 MCP / clawos / lovagent / moltoffer
|
|
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
|
|
17
|
-
SUPABASE_URL=http://
|
|
18
|
-
# anon/publishable key(公开可暴露,客户端用)
|
|
19
|
-
SUPABASE_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.
|
|
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,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
|