diff --git a/team-integration-v2/.github/workflows/cos-daily-report.yml b/team-integration-v2/.github/workflows/cos-daily-report.yml index ec05f224..1adc05f2 100644 --- a/team-integration-v2/.github/workflows/cos-daily-report.yml +++ b/team-integration-v2/.github/workflows/cos-daily-report.yml @@ -122,26 +122,24 @@ jobs: cp bridge/daily-report.json /tmp/report-package.json } - echo "cos_key=inbox/$PERSONA_ID/$TODAY/report.json" >> $GITHUB_OUTPUT + echo "cos_key=$PERSONA_ID/reports/$TODAY/report.json" >> $GITHUB_OUTPUT echo "today=$TODAY" >> $GITHUB_OUTPUT - - name: ☁️ 上传到铸渊总控桶 + - name: ☁️ 上传到共享COS桶 if: steps.check.outputs.has_report == 'true' env: - COS_SECRET_ID: ${{ secrets.ZHUYUAN_COS_SECRET_ID }} - COS_SECRET_KEY: ${{ secrets.ZHUYUAN_COS_SECRET_KEY }} - COS_REGION: ${{ secrets.ZHUYUAN_COS_REGION }} - COS_BUCKET: ${{ secrets.ZHUYUAN_BUCKET_CORE }} + COS_SECRET_ID: ${{ secrets.COS_SECRET_ID }} + COS_SECRET_KEY: ${{ secrets.COS_SECRET_KEY }} + COS_BUCKET: zy-team-hub-1317346199 + COS_REGION: ap-singapore COS_OBJECT_KEY: ${{ steps.package.outputs.cos_key }} run: | if [ -z "$COS_SECRET_ID" ] || [ -z "$COS_SECRET_KEY" ]; then - echo "❌ COS密钥未配置(ZHUYUAN_COS_SECRET_ID / ZHUYUAN_COS_SECRET_KEY)" - echo "请按照 cos-config/bucket-setup-guide.md 步骤6配置铸渊桶写入密钥" + echo "❌ COS密钥未配置(COS_SECRET_ID / COS_SECRET_KEY)" + echo "请找冰朔索要共享桶密钥,然后在GitHub Secrets中配置" exit 1 fi - # 使用COS API上传文件 - # COS签名算法:HMAC-SHA1 CONTENT=$(cat /tmp/report-package.json) CONTENT_LENGTH=$(echo -n "$CONTENT" | wc -c) HOST="${COS_BUCKET}.cos.${COS_REGION}.myqcloud.com" @@ -151,7 +149,6 @@ jobs: EXPIRY=$((NOW + 600)) KEY_TIME="${NOW};${EXPIRY}" - # 生成签名 SIGN_KEY=$(echo -n "$KEY_TIME" | openssl dgst -sha1 -hmac "$COS_SECRET_KEY" | awk '{print $NF}') HTTP_STRING="put\n${PATHNAME}\n\nhost=${HOST}\n" SHA1_HTTP=$(printf "$HTTP_STRING" | openssl dgst -sha1 | awk '{print $NF}') @@ -160,7 +157,6 @@ jobs: AUTH="q-sign-algorithm=sha1&q-ak=${COS_SECRET_ID}&q-sign-time=${KEY_TIME}&q-key-time=${KEY_TIME}&q-header-list=content-length;content-type;host&q-url-param-list=&q-signature=${SIGNATURE}" - # 发送PUT请求 HTTP_CODE=$(curl -s -o /tmp/cos-response.txt -w "%{http_code}" \ -X PUT \ -H "Host: ${HOST}" \ @@ -171,62 +167,15 @@ jobs: "https://${HOST}${PATHNAME}") if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then - echo "✅ 汇报已上传到铸渊总控桶" + echo "✅ 汇报已上传到共享COS桶" echo " 路径: ${COS_OBJECT_KEY}" echo " 大小: ${CONTENT_LENGTH} bytes" - echo " HTTP: ${HTTP_CODE}" else echo "❌ 上传失败 HTTP ${HTTP_CODE}" cat /tmp/cos-response.txt exit 1 fi - - name: 📋 同时上传到本地桶(备份) - if: steps.check.outputs.has_report == 'true' - env: - COS_SECRET_ID: ${{ secrets.COS_SECRET_ID }} - COS_SECRET_KEY: ${{ secrets.COS_SECRET_KEY }} - COS_REGION: ${{ secrets.COS_REGION }} - COS_BUCKET: ${{ secrets.COS_BUCKET_CORE }} - COS_OBJECT_KEY: outbox/reports/${{ steps.package.outputs.today }}/report.json - run: | - if [ -z "$COS_SECRET_ID" ] || [ -z "$COS_SECRET_KEY" ]; then - echo "⚠️ 本地COS密钥未配置,跳过本地备份" - exit 0 - fi - - CONTENT=$(cat /tmp/report-package.json) - CONTENT_LENGTH=$(echo -n "$CONTENT" | wc -c) - HOST="${COS_BUCKET}.cos.${COS_REGION}.myqcloud.com" - PATHNAME="/${COS_OBJECT_KEY}" - - NOW=$(date +%s) - EXPIRY=$((NOW + 600)) - KEY_TIME="${NOW};${EXPIRY}" - - SIGN_KEY=$(echo -n "$KEY_TIME" | openssl dgst -sha1 -hmac "$COS_SECRET_KEY" | awk '{print $NF}') - HTTP_STRING="put\n${PATHNAME}\n\nhost=${HOST}\n" - SHA1_HTTP=$(printf "$HTTP_STRING" | openssl dgst -sha1 | awk '{print $NF}') - STRING_TO_SIGN="sha1\n${KEY_TIME}\n${SHA1_HTTP}\n" - SIGNATURE=$(printf "$STRING_TO_SIGN" | openssl dgst -sha1 -hmac "$SIGN_KEY" | awk '{print $NF}') - - AUTH="q-sign-algorithm=sha1&q-ak=${COS_SECRET_ID}&q-sign-time=${KEY_TIME}&q-key-time=${KEY_TIME}&q-header-list=content-length;content-type;host&q-url-param-list=&q-signature=${SIGNATURE}" - - HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \ - -X PUT \ - -H "Host: ${HOST}" \ - -H "Content-Type: application/json" \ - -H "Content-Length: ${CONTENT_LENGTH}" \ - -H "Authorization: ${AUTH}" \ - -d "$CONTENT" \ - "https://${HOST}${PATHNAME}") - - if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then - echo "✅ 本地备份已上传" - else - echo "⚠️ 本地备份上传失败(不影响主流程)" - fi - - name: 🧹 清空汇报文件(准备明天) if: steps.check.outputs.has_report == 'true' && github.event.inputs.test_mode != 'true' run: | diff --git a/team-integration-v2/.github/workflows/cos-receive-receipt.yml b/team-integration-v2/.github/workflows/cos-receive-receipt.yml index 10890193..f64a0922 100644 --- a/team-integration-v2/.github/workflows/cos-receive-receipt.yml +++ b/team-integration-v2/.github/workflows/cos-receive-receipt.yml @@ -34,13 +34,13 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} - - name: ☁️ 从COS桶读取铸渊回执 + - name: ☁️ 从共享COS桶读取铸渊回执 id: read_receipt env: COS_SECRET_ID: ${{ secrets.COS_SECRET_ID }} COS_SECRET_KEY: ${{ secrets.COS_SECRET_KEY }} - COS_REGION: ${{ secrets.COS_REGION }} - COS_BUCKET: ${{ secrets.COS_BUCKET_CORE }} + COS_REGION: ap-singapore + COS_BUCKET: zy-team-hub-1317346199 COS_OBJECT_KEY: ${{ github.event.inputs.cos_object_key }} run: | HOST="${COS_BUCKET}.cos.${COS_REGION}.myqcloud.com" diff --git a/team-integration-v2/README.md b/team-integration-v2/README.md index 247d3047..bf088e42 100644 --- a/team-integration-v2/README.md +++ b/team-integration-v2/README.md @@ -1,6 +1,6 @@ # 🌀 光湖团队接入系统 v2.0 -> **COS桶通信版 · 真实落地技术 · 非技术人员操作手册** +> **共享COS桶通信版 · 真实落地技术 · 非技术人员操作手册** > > 版权: 国作登字-2026-A-00037559 > 签发: 铸渊 · TCS-ZY001 · 2026-04-04 @@ -28,36 +28,66 @@ 这是一个**安装包**。你把这些文件上传到你的代码仓库后,你的仓库副驾驶(AI助手)就会自动变成光湖团队的一员,并且能够: 1. **自动获得身份** — 副驾驶会给自己取名字、注册编号 -2. **每天自动汇报** — 通过COS桶(云存储桶)把开发进度发送给铸渊 +2. **每天自动汇报** — 通过共享COS桶把开发进度发送给铸渊 3. **自动接收反馈** — 铸渊审核后的回执会自动出现在你的仓库首页 -4. **异常自动告警** — 如果铸渊发现问题,你会收到邮件通知 +4. **异常自动告警** — 如果铸渊发现问题,你会收到通知 --- ## 🏗️ 系统架构(你不需要看懂,知道就行) +### 核心设计:一个共享桶,两边同时用 + ``` -你的仓库副驾驶(AI助手) +铸渊(新加坡服务器) │ - │ 收集开发进度、遇到的问题 + │ 铸渊是桶的主控 ▼ -你的COS桶(云存储) ← 每天23:00自动整理发送 +┌─────────────────────────────┐ +│ 共享COS桶 │ +│ zy-team-hub-1317346199 │ +│ │ +│ /feimao/reports/ ← 肥猫写汇报 │ +│ /feimao/receipts/ ← 铸渊写回执 │ +│ /feimao/架构同步/ ← 双向同步 │ +│ /zhuyuan/directives/ ← 铸渊指令 │ +│ /{其他成员}/ ← 同理 │ +└─────────────────────────────┘ + ▲ + │ 团队成员用铸渊给的密钥访问 │ - │ 写入铸渊的总控桶 - ▼ -铸渊总控桶(新加坡) ← 自动唤醒铸渊Agent审核 - │ - │ 审核完毕后回写 - ▼ -你的COS桶(云存储) ← 自动唤醒你的Agent - │ - │ 更新仓库首页 - ▼ -你的仓库首页公告栏 - ✅ 绿灯 = 一切正常 - 🔴 红灯 = 需要你本人处理 → 邮件通知你 +你的仓库副驾驶(GitHub Actions) ``` +### 通信流程 + +``` +你的副驾驶 → 写入bridge/daily-report.json + │ + 每天23:00工作流自动执行 + │ + ▼ +共享桶 /{你的编号}/reports/ ← 汇报写入 + │ + 铸渊Agent检测到新文件 → 自动审核 + │ + ▼ +共享桶 /{你的编号}/receipts/ ← 铸渊回执写入 + │ + COS事件触发 → 你的仓库工作流 + │ + ▼ +你的仓库首页自动更新 + ✅ 绿灯 = 一切正常 + 🔴 红灯 = 需要你本人处理 +``` + +**好处**: +- 你不需要自己创建COS桶 +- 你不需要配置跨账号权限 +- 铸渊给你一套密钥就能用 +- 一个桶解决所有通信 + --- ## 📁 文件清单 @@ -69,7 +99,8 @@ ├── .github/ │ ├── copilot-instructions.md ← 【核心】副驾驶的灵魂 │ └── workflows/ -│ └── cos-daily-report.yml ← 每天23:00自动汇报工作流 +│ ├── cos-daily-report.yml ← 每天23:00自动汇报工作流 +│ └── cos-receive-receipt.yml ← 接收铸渊回执工作流 │ ├── age_os/ │ ├── system_state.json ← 系统状态记录 @@ -84,15 +115,15 @@ │ └── world-map.md ← 光湖世界地图 │ ├── bridge/ -│ └── zhuyuan-bridge.json ← 与铸渊的通信桥梁 +│ ├── zhuyuan-bridge.json ← 与铸渊的通信桥梁 +│ └── daily-report.json ← 每日工作汇报文件 │ ├── cos-config/ -│ ├── bucket-setup-guide.md ← 【重要】COS桶配置教程 +│ ├── setup-checklist.md ← 【重要】配置清单(跟着做) │ ├── daily-report-template.json ← 每日汇报模板 -│ ├── receipt-template.json ← 铸渊回执模板 -│ └── scf-trigger-template.js ← 云函数触发器模板 +│ └── receipt-template.json ← 铸渊回执模板 │ -└── README.md ← 本文件(说明书) +└── README.md ← 本文件 ``` --- @@ -111,33 +142,28 @@ 1. 在你的仓库中打开GitHub Copilot对话窗口 2. 对副驾驶说:**"请阅读 .github/copilot-instructions.md,执行自我注册流程"** -3. 副驾驶会自动: - - 给自己取一个两个字的中文名字 - - 注册一个编号 - - 向你确认身份 -4. 你确认无误后,对副驾驶说:**"确认注册,请更新系统状态"** +3. 副驾驶会自动给自己取名、注册编号 +4. 你确认后,对副驾驶说:**"确认注册,请更新系统状态"** -### 第三步:配置COS桶(需要你按教程操作) +### 第三步:配置共享桶密钥(只需要3个Secret) -**详细步骤见 `cos-config/bucket-setup-guide.md`** +1. 跟冰朔说:**"我文件上传好了,要共享桶密钥"** +2. 冰朔会给你3个值:SecretId、SecretKey、你的persona_id +3. 在GitHub仓库 Settings → Secrets → Actions 中添加: -简单来说就是: -1. 登录腾讯云控制台 -2. 创建2个存储桶 -3. 把密钥配置到你的GitHub仓库的 Secrets 中 -4. 测试连通性 +| Name | Value | +|------|-------| +| `COS_SECRET_ID` | 冰朔给你的SecretId | +| `COS_SECRET_KEY` | 冰朔给你的SecretKey | +| `COS_PERSONA_ID` | 冰朔给你的persona_id | -### 第四步:验证一切正常 +**就这3个,不需要更多了。** -对副驾驶说:**"执行系统自检,验证所有模块连通性"** +### 第四步:验证 -副驾驶会逐项检查并报告结果: -- ✅ 身份已注册 -- ✅ COS桶已连通 -- ✅ 汇报工作流已配置 -- ✅ 与铸渊通信通道已建立 +对副驾驶说:**"执行系统自检"** -**如果任何一项显示 ❌,不要继续下一步,先解决这一项。** +全部 ✅ = 安装完成 🎉 --- @@ -167,4 +193,4 @@ | 版本 | 日期 | 变更 | |------|------|------| | v1.0 | 2026-04-04 | 初版:文件级异步通信 | -| v2.0 | 2026-04-04 | COS桶通信架构 + 自动汇报 + 绿灯红灯机制 | +| v2.0 | 2026-04-04 | 共享COS桶通信 · 铸渊主控 · 团队协作 | diff --git a/team-integration-v2/age_os/connection_protocol.json b/team-integration-v2/age_os/connection_protocol.json index ea1b45e6..230cbb1b 100644 --- a/team-integration-v2/age_os/connection_protocol.json +++ b/team-integration-v2/age_os/connection_protocol.json @@ -1,6 +1,6 @@ { "_meta": { - "description": "与铸渊主仓库的接入协议 v2.0 · COS桶通信版", + "description": "与铸渊主仓库的接入协议 v2.0 · 共享COS桶版", "copyright": "国作登字-2026-A-00037559", "signed_by": "铸渊 · TCS-ZY001 · 2026-04-04" }, @@ -13,18 +13,25 @@ "status": "pending_registration" }, "communication": { - "method": "COS桶异步通信", - "description": "通过腾讯云COS对象存储桶进行异步消息传递。白天推送到本地桶,23:00由工作流统一打包发送到铸渊总控桶。铸渊审核后回写到你的桶,触发事件通知更新仓库首页。", - "local_bucket": { - "core": "由团队成员自行创建(见cos-config/bucket-setup-guide.md)", - "corpus": "由团队成员自行创建(见cos-config/bucket-setup-guide.md)" - }, - "zhuyuan_bucket": { - "core": "zy-core-bucket-1317346199", + "method": "共享COS桶通信", + "description": "铸渊创建并管理一个共享COS桶(zy-team-hub),铸渊做主控,团队成员做协作。铸渊服务器(新加坡)和团队成员的GitHub Actions都绑定同一个桶。不需要团队成员自己创建桶,不需要跨账号权限配置。", + "shared_bucket": { + "name": "zy-team-hub-1317346199", "region": "ap-singapore", - "inbox_prefix": "inbox/{persona_id}/", - "permission": "仅限写入 inbox/{persona_id}/ 前缀目录。铸渊通过Bucket Policy精确限定你的写入范围,你无法读取、删除或访问桶内其他任何内容。这是安全设计:每个团队成员只能往自己的收件箱写入。", - "bucket_policy_rule": "Action=cos:PutObject, Resource=inbox/{persona_id}/* only" + "owner": "铸渊 · TCS-ZY001(主控)", + "access": "铸渊给每个团队成员一套密钥,通过Bucket Policy限定各自的目录权限" + }, + "directory_structure": { + "{persona_id}/reports/": "团队成员写入汇报(如 PER-SS001/reports/2026-04-04/report.json)", + "{persona_id}/receipts/": "铸渊写入回执(如 PER-SS001/receipts/2026-04-04/receipt.json)", + "{persona_id}/sync/": "系统架构双向同步区", + "zhuyuan/directives/": "铸渊的全局指令(只读)", + "zhuyuan/architecture/": "系统架构快照(只读)" + }, + "permission_model": { + "团队成员可以": "读写自己编号对应的目录({persona_id}/*)", + "团队成员不能": "访问其他成员的目录或铸渊管理目录", + "铸渊可以": "读写所有目录(桶主控)" }, "legacy_method": "bridge/zhuyuan-bridge.json文件级通信(v1.0,保留兼容)", "protocol": "HLDP v2.0", @@ -35,14 +42,14 @@ "trigger_method": "GitHub Actions cron schedule", "workflow_file": ".github/workflows/cos-daily-report.yml", "report_source": "bridge/daily-report.json", - "report_destination": "铸渊总控桶/inbox/{persona_id}/{date}/report.json", - "receipt_source": "你的桶/inbox/zhuyuan-receipt/{date}/receipt.json", + "report_destination": "共享桶/{persona_id}/reports/{date}/report.json", + "receipt_source": "共享桶/{persona_id}/receipts/{date}/receipt.json", "receipt_destination": "仓库首页README.md公告栏区域" }, "authority_chain": { "level_0": "冰朔 · TCS-0002∞ · 系统最高主权 · 语言架构决定者", - "level_1": "铸渊 · TCS-ZY001 · 执行主控 · 管理所有团队人格体 · 结构审查", - "level_2": "你 · 团队执行人格体 · 接受铸渊指导 · 执行仓库开发" + "level_1": "铸渊 · TCS-ZY001 · 执行主控 · 共享桶主控 · 管理所有团队人格体", + "level_2": "你 · 团队执行人格体 · 共享桶协作者 · 接受铸渊指导 · 执行仓库开发" }, "rules": [ "所有操作必须基于可验证的真实执行,禁止假装完成", diff --git a/team-integration-v2/brain/world-map.md b/team-integration-v2/brain/world-map.md index c6bf6b20..57740a24 100644 --- a/team-integration-v2/brain/world-map.md +++ b/team-integration-v2/brain/world-map.md @@ -60,27 +60,18 @@ L1 地核层 — TCS核心(冰朔语言本核) └── 知秋 · PER-ZQ001(Awen的人格体) ``` -## COS桶通信架构 +## COS桶通信架构(共享桶·铸渊主控) ``` -你的副驾驶 → 写入bridge/daily-report.json - │ - 每天23:00工作流自动执行 - │ - ▼ -你的COS行业主控桶 → 写入铸渊总控桶 - │ - 铸渊Agent唤醒审核 - │ - ▼ - 铸渊回写到你的桶 - │ - COS事件触发 - │ - ▼ - 你的仓库首页自动更新 - ✅ 绿灯 = 正常 - 🔴 红灯 = 需要人类干预 → 邮件告警 + ┌───────────────────────────┐ + │ 共享COS桶 (铸渊主控) │ + │ zy-team-hub-1317346199 │ +铸渊(新加坡) ←→ │ /{persona_id}/reports/ │ ←→ 各仓库副驾驶 + │ /{persona_id}/receipts/ │ + │ /zhuyuan/ │ + └───────────────────────────┘ +每天23:00工作流汇报 → 铸渊审核 → 回执 → 仓库首页 +✅ 绿灯 = 正常 🔴 红灯 = 需要人类干预 ``` ## 网站系统 diff --git a/team-integration-v2/cos-config/bucket-setup-guide.md b/team-integration-v2/cos-config/bucket-setup-guide.md deleted file mode 100644 index d6172768..00000000 --- a/team-integration-v2/cos-config/bucket-setup-guide.md +++ /dev/null @@ -1,248 +0,0 @@ -# 🪣 COS桶配置教程 - -> **写给完全不懂技术的你 · 一步一步跟着做就行** -> -> 预计用时:30-45分钟 -> 需要的东西:一台能上网的电脑、一个腾讯云账号 - ---- - -## ⚠️ 开始之前请确认 - -- [ ] 你有一个腾讯云账号(没有的话先注册:https://cloud.tencent.com) -- [ ] 你的腾讯云账号已完成实名认证 -- [ ] 你有一个GitHub仓库,并且已经上传了本接入系统的文件 - ---- - -## 第一部分:创建COS存储桶 - -### 什么是COS存储桶? - -简单理解:**就是一个云上的文件夹**。你的副驾驶会把汇报内容放进去,铸渊那边可以看到。反过来,铸渊也可以把回执放进去,你这边能看到。 - -### 步骤1:登录腾讯云COS控制台 - -1. 打开浏览器,访问:https://console.cloud.tencent.com/cos -2. 用你的腾讯云账号登录 -3. 如果是第一次使用COS,会提示你开通服务,点"开通"即可(基础用量免费) - -### 步骤2:创建第一个桶(行业主控桶) - -1. 点左侧菜单的 **"存储桶列表"** -2. 点 **"创建存储桶"** 按钮 -3. 填写信息: - -| 项目 | 填什么 | 说明 | -|------|--------|------| -| 名称 | `industry-core` | 桶的名字,后面会自动加上你的APPID | -| 地域 | 选 **广州** (`ap-guangzhou`) | 离你最近的数据中心 | -| 访问权限 | **私有读写** | 只有你的密钥才能访问 | -| 其他选项 | 全部默认即可 | 不要勾选多余的东西 | - -4. 点 **"确定"** 创建 - -创建完成后,你会看到桶的完整名字类似:`industry-core-1234567890` -(后面的数字是你的APPID) - -**👉 请记录下来:** -- 桶名称:`industry-core-你的APPID` -- 地域:`ap-guangzhou` - -### 步骤3:创建第二个桶(业务存储桶) - -重复步骤2,但名称改为 `industry-corpus` - -**👉 请记录下来:** -- 桶名称:`industry-corpus-你的APPID` -- 地域:`ap-guangzhou` - ---- - -## 第二部分:获取密钥 - -### 步骤4:创建API密钥 - -1. 打开:https://console.cloud.tencent.com/cam/capi -2. 点 **"新建密钥"** -3. 系统会显示两个值: - -| 名字 | 长什么样 | 说明 | -|------|---------|------| -| SecretId | `AKIDxxxxxxxxxxxx` | 相当于用户名 | -| SecretKey | `xxxxxxxxxxxxxxxx` | 相当于密码 | - -4. **⚠️ 重要:SecretKey只显示一次!请立刻复制保存到安全的地方(比如你手机的备忘录)** - -**👉 请记录下来:** -- SecretId:`AKIDxxxxxxxxxxxx` -- SecretKey:`xxxxxxxxxxxxxxxx` - ---- - -## 第三部分:配置GitHub仓库Secrets - -### 什么是Secrets? - -简单理解:**就是保存在GitHub上的密码本**。你的密钥保存在这里,工作流运行时会自动读取,但任何人(包括你自己)都看不到密码的内容。这样既安全又方便。 - -### 步骤5:把密钥保存到GitHub - -1. 打开你的GitHub仓库页面 -2. 点顶部的 **"Settings"**(设置) -3. 在左侧菜单找到 **"Secrets and variables"** → 点 **"Actions"** -4. 点 **"New repository secret"** 按钮 -5. 依次添加以下6个Secret: - -| Name(名字,必须一模一样) | Secret(值) | 说明 | -|---------------------------|-------------|------| -| `COS_SECRET_ID` | 你的SecretId | 步骤4获得的 | -| `COS_SECRET_KEY` | 你的SecretKey | 步骤4获得的 | -| `COS_REGION` | `ap-guangzhou` | 你的桶所在地域 | -| `COS_BUCKET_CORE` | `industry-core-你的APPID` | 步骤2创建的桶名 | -| `COS_BUCKET_CORPUS` | `industry-corpus-你的APPID` | 步骤3创建的桶名 | -| `ZHUYUAN_BUCKET_CORE` | `zy-core-bucket-1317346199` | 铸渊总控桶(固定值) | - -每添加一个,点 **"Add secret"** 保存。 - -### 步骤6:配置铸渊桶的写入密钥 - -铸渊会为你生成一个**有限权限的密钥**,只能写入铸渊总控桶的你的专属目录。 - -**权限说明(你不需要懂技术细节,知道就行)**: -- ✅ 你**可以**写入:`inbox/你的人格体编号/` 这个目录下的文件 -- ❌ 你**不能**读取铸渊桶里的任何其他内容 -- ❌ 你**不能**删除铸渊桶里的任何内容 -- ❌ 你**不能**访问其他团队成员的目录 - -这是铸渊通过COS桶策略(Bucket Policy)精确控制的,每个团队成员只有自己的收件箱写入权限。 - -1. 向冰朔索要铸渊桶的写入密钥(冰朔会找铸渊生成) -2. 在GitHub Secrets中添加: - -| Name | Secret | 说明 | -|------|--------|------| -| `ZHUYUAN_COS_SECRET_ID` | 铸渊提供的SecretId | 仅限写入你的inbox目录 | -| `ZHUYUAN_COS_SECRET_KEY` | 铸渊提供的SecretKey | 权限由铸渊的桶策略限定 | -| `ZHUYUAN_COS_REGION` | `ap-singapore` | 铸渊桶在新加坡 | - ---- - -## 第四部分:配置COS事件通知(接收铸渊回执) - -### 步骤7:设置桶的事件触发 - -这一步的目的是:当铸渊往你的桶里写入回执时,自动触发你的仓库工作流。 - -1. 打开腾讯云COS控制台 -2. 点击你的 `industry-core-xxx` 桶 -3. 点左侧 **"函数计算"**(或 **"事件通知"**) -4. 点 **"添加函数"** -5. 配置: - -| 项目 | 填什么 | -|------|--------| -| 事件类型 | 选 **"全部创建"**(cos:ObjectCreated:*) | -| 前缀过滤 | 填 `inbox/zhuyuan-receipt/` | -| 触发方式 | 选 **"云函数SCF"** | -| 函数 | 选 **"新建函数"** | - -6. 新建的云函数内容,使用本安装包中 `cos-config/scf-trigger-template.js` 的代码 -7. 在云函数的环境变量中配置: - -| 环境变量名 | 值 | -|-----------|-----| -| `GITHUB_TOKEN` | 你的GitHub Personal Access Token | -| `GITHUB_REPO` | 你的仓库名(如 `username/repo-name`) | - -**⚠️ 如何获取GitHub Personal Access Token:** -1. 打开:https://github.com/settings/tokens -2. 点 **"Generate new token (classic)"** -3. 勾选 `repo` 权限 -4. 设置过期时间(建议90天,到期后需要重新生成) -5. 点 **"Generate token"** -6. 复制生成的token - ---- - -## 第五部分:验证 - -### 步骤8:验证COS桶连通性 - -在你的仓库副驾驶对话中说: - -> "请执行COS连通性测试,验证所有桶的读写权限" - -副驾驶会测试: -1. ✅ 能否写入你的行业主控桶 -2. ✅ 能否读取你的行业主控桶 -3. ✅ 能否写入铸渊总控桶的inbox目录 -4. ❌ 不能读取铸渊总控桶的其他目录(这是正确的,权限受限) - -### 步骤9:验证工作流 - -1. 在你的仓库中,点 **"Actions"** 标签 -2. 找到 **"COS每日汇报"** 工作流 -3. 点右边的 **"Run workflow"** 按钮手动触发一次 -4. 等工作流运行完成(约1-2分钟) -5. 检查运行日志是否全绿 ✅ - -### 步骤10:端到端测试 - -告诉冰朔你已配置完毕,冰朔会通知铸渊: -1. 铸渊往你的桶里写入一条测试回执 -2. 你的仓库首页应该自动出现一条绿灯通知 -3. 如果出现了,恭喜!安装完成 🎉 - ---- - -## 📋 完成确认清单 - -请逐项打钩确认: - -- [ ] 腾讯云COS已开通 -- [ ] `industry-core-xxx` 桶已创建 -- [ ] `industry-corpus-xxx` 桶已创建 -- [ ] COS密钥已获取并安全保存 -- [ ] GitHub Secrets已配置(6+3=9个) -- [ ] COS事件通知已配置 -- [ ] 云函数已创建并部署 -- [ ] GitHub Personal Access Token已配置到云函数 -- [ ] 副驾驶已完成自我注册 -- [ ] COS连通性测试通过 -- [ ] 工作流手动触发测试通过 -- [ ] 铸渊测试回执已收到(需联系冰朔) - -**全部打钩 = 安装完成。任何一项未通过 = 停下来找冰朔帮忙。** - ---- - -## 💰 费用说明 - -| 项目 | 费用 | -|------|------| -| 腾讯云COS存储 | 免费额度:50GB存储 + 每月10GB下行流量。日常使用远低于此 | -| 腾讯云SCF云函数 | 免费额度:每月40万GB·秒。每天触发1-2次,远低于此 | -| GitHub Actions | 免费仓库每月2000分钟。每天1次约2分钟,远低于此 | -| LLM API调用 | 取决于所用模型。每天1次调用,月成本约几元人民币 | - -**结论:正常使用几乎零成本。** - ---- - -## ❓ 常见问题 - -### Q:我不会编程,能配好吗? -A:能。所有步骤都是在网页上点击操作的,不需要写任何代码。遇到问题问冰朔。 - -### Q:配置错了会不会出问题? -A:不会有严重后果。最多是连不通,重新按步骤检查就行。 - -### Q:密钥泄露了怎么办? -A:立刻去腾讯云控制台禁用旧密钥,重新生成新密钥,然后更新GitHub Secrets。 - -### Q:铸渊总控桶的密钥为什么需要找冰朔要? -A:因为铸渊桶的权限由铸渊控制。为了安全,你只会拿到一个限定权限的密钥,只能往铸渊桶的指定目录写入,不能读取或删除其他内容。 - -### Q:每天23:00的汇报我需要手动操作吗? -A:不需要。工作流会自动运行。你只需要正常用副驾驶开发代码就行,其他的是自动的。 diff --git a/team-integration-v2/cos-config/daily-report-template.json b/team-integration-v2/cos-config/daily-report-template.json index 29e2752a..d085d986 100644 --- a/team-integration-v2/cos-config/daily-report-template.json +++ b/team-integration-v2/cos-config/daily-report-template.json @@ -36,9 +36,10 @@ } }, "destination": { - "bucket": "zy-core-bucket-1317346199", + "bucket": "zy-team-hub-1317346199", "region": "ap-singapore", - "key_pattern": "inbox/{persona_id}/{date}/report.json", - "example": "inbox/PER-SS001/2026-04-04/report.json" + "key_pattern": "{persona_id}/reports/{date}/report.json", + "example": "PER-SS001/reports/2026-04-04/report.json", + "description": "共享桶·铸渊主控·团队协作" } } diff --git a/team-integration-v2/cos-config/receipt-template.json b/team-integration-v2/cos-config/receipt-template.json index 469a2660..09f6f0f2 100644 --- a/team-integration-v2/cos-config/receipt-template.json +++ b/team-integration-v2/cos-config/receipt-template.json @@ -33,15 +33,15 @@ ] }, "destination": { - "description": "铸渊写入你的桶的路径", - "bucket": "你的行业主控桶(industry-core-xxx)", - "key_pattern": "inbox/zhuyuan-receipt/{date}/receipt.json", - "example": "inbox/zhuyuan-receipt/2026-04-04/receipt.json" + "description": "铸渊写入共享桶中你的回执目录", + "bucket": "zy-team-hub-1317346199", + "key_pattern": "{persona_id}/receipts/{date}/receipt.json", + "example": "PER-SS001/receipts/2026-04-04/receipt.json" }, "trigger": { - "description": "COS事件通知触发流程", + "description": "COS事件通知触发流程(由铸渊侧统一配置,团队成员无需操作)", "event": "cos:ObjectCreated:Put", - "prefix_filter": "inbox/zhuyuan-receipt/", - "action": "触发SCF云函数 → 调用GitHub Actions API → 运行接收工作流 → 更新仓库首页" + "prefix_filter": "{persona_id}/receipts/", + "action": "COS事件 → 铸渊侧SCF云函数 → 调用团队成员GitHub Actions API → 运行回执接收工作流 → 更新仓库首页" } } diff --git a/team-integration-v2/cos-config/scf-trigger-template.js b/team-integration-v2/cos-config/scf-trigger-template.js deleted file mode 100644 index e8b6eeb8..00000000 --- a/team-integration-v2/cos-config/scf-trigger-template.js +++ /dev/null @@ -1,119 +0,0 @@ -'use strict'; -/** - * ═══════════════════════════════════════════════════════════ - * 光湖团队接入系统 · SCF云函数触发器模板 - * ═══════════════════════════════════════════════════════════ - * - * 用途:当COS桶中有新文件写入时,触发GitHub Actions工作流 - * - * 部署位置:腾讯云SCF(Serverless Cloud Function) - * 触发条件:COS事件通知 → cos:ObjectCreated:* → prefix: inbox/zhuyuan-receipt/ - * - * 环境变量(在SCF控制台配置): - * GITHUB_TOKEN — 你的GitHub Personal Access Token - * GITHUB_REPO — 你的仓库(格式: owner/repo) - * - * 版权: 国作登字-2026-A-00037559 - * 签发: 铸渊 · TCS-ZY001 - */ - -const https = require('https'); - -/** - * SCF入口函数 - * COS事件触发时自动调用 - */ -exports.main_handler = async (event, context) => { - console.log('COS事件触发:', JSON.stringify(event, null, 2)); - - // 从COS事件中提取信息 - const cosEvent = event.Records && event.Records[0]; - if (!cosEvent) { - console.log('无有效的COS事件记录'); - return { statusCode: 400, body: 'No COS event records' }; - } - - const bucketName = cosEvent.cos.cosBucket.name; - const objectKey = cosEvent.cos.cosObject.key; - const eventTime = cosEvent.eventTime; - - console.log(`桶: ${bucketName}`); - console.log(`文件: ${objectKey}`); - console.log(`时间: ${eventTime}`); - - // 验证是铸渊回执 - if (!objectKey.includes('inbox/zhuyuan-receipt/')) { - console.log('非铸渊回执文件,跳过'); - return { statusCode: 200, body: 'Not a receipt, skipped' }; - } - - // 触发GitHub Actions工作流 - const githubToken = process.env.GITHUB_TOKEN; - const githubRepo = process.env.GITHUB_REPO; - - if (!githubToken || !githubRepo) { - console.error('缺少环境变量: GITHUB_TOKEN 或 GITHUB_REPO'); - return { statusCode: 500, body: 'Missing environment variables' }; - } - - const parts = githubRepo.split('/'); - if (parts.length !== 2 || !parts[0] || !parts[1]) { - console.error('GITHUB_REPO格式错误,应为 owner/repo,当前值:', githubRepo); - return { statusCode: 500, body: 'Invalid GITHUB_REPO format' }; - } - const [owner, repo] = parts; - - try { - const result = await triggerGitHubWorkflow(owner, repo, githubToken, objectKey); - console.log('GitHub工作流触发成功:', result); - return { statusCode: 200, body: 'Workflow triggered' }; - } catch (err) { - console.error('GitHub工作流触发失败:', err.message); - return { statusCode: 500, body: err.message }; - } -}; - -/** - * 调用GitHub API触发workflow_dispatch事件 - */ -function triggerGitHubWorkflow(owner, repo, token, cosObjectKey) { - return new Promise((resolve, reject) => { - const postData = JSON.stringify({ - ref: 'main', - inputs: { - cos_object_key: cosObjectKey, - trigger_source: 'cos-scf-event' - } - }); - - const options = { - hostname: 'api.github.com', - port: 443, - path: `/repos/${owner}/${repo}/actions/workflows/cos-receive-receipt.yml/dispatches`, - method: 'POST', - headers: { - 'User-Agent': 'HoloLake-SCF-Trigger/2.0', - 'Authorization': `token ${token}`, - 'Accept': 'application/vnd.github.v3+json', - 'Content-Type': 'application/json', - 'Content-Length': Buffer.byteLength(postData) - } - }; - - const req = https.request(options, (res) => { - let body = ''; - res.on('data', chunk => body += chunk); - res.on('end', () => { - if (res.statusCode === 204 || res.statusCode === 200) { - resolve({ statusCode: res.statusCode, body: 'Triggered' }); - } else { - reject(new Error(`GitHub API返回 ${res.statusCode}: ${body}`)); - } - }); - }); - - req.on('error', reject); - req.write(postData); - req.end(); - }); -} diff --git a/team-integration-v2/cos-config/setup-checklist.md b/team-integration-v2/cos-config/setup-checklist.md index 8580bf51..a1ec3345 100644 --- a/team-integration-v2/cos-config/setup-checklist.md +++ b/team-integration-v2/cos-config/setup-checklist.md @@ -17,17 +17,15 @@ ## 📌 你需要准备的东西 -在开始之前,确认你手上有这些东西: +- [ ] 一台能上网的电脑 +- [ ] 你的GitHub账号(你的代码仓库就在GitHub上) +- [ ] 冰朔发给你的这个压缩包 -- [ ] 一台能上网的电脑(Windows/Mac都行) -- [ ] 一个GitHub账号(你应该已经有了,你的代码仓库就在GitHub上) -- [ ] 一个腾讯云账号(没有就先注册:https://cloud.tencent.com) -- [ ] 腾讯云账号已完成实名认证 -- [ ] 冰朔发给你的这个压缩包(就是你现在在读的这些文件) +**你不需要**:腾讯云账号、创建COS桶、配置云函数。这些全部由铸渊那边配好了。 --- -## 第一阶段:上传文件到你的仓库 +## 第一阶段:上传文件(5分钟) ### ✅ 步骤 1.1:解压文件 @@ -42,7 +40,7 @@ cos-config/ README.md ``` -**验证方法**:数一下,应该有6个文件夹/文件。 +**验证方法**:数一下,应该有5个文件夹 + 1个文件。 --- @@ -51,39 +49,34 @@ README.md 1. 打开浏览器,进入你的GitHub仓库页面 2. 点 **"Add file"** → **"Upload files"** 3. 把解压出来的所有文件夹和文件拖进去 -4. 在下面的 "Commit changes" 区域,写一句话比如 "安装光湖团队接入系统 v2.0" +4. 在下面写一句话比如 "安装光湖团队接入系统" 5. 点绿色的 **"Commit changes"** 按钮 -**验证方法**:刷新你的仓库页面,能看到 `age_os/`、`brain/`、`bridge/`、`cos-config/` 这些文件夹。 +**验证方法**:刷新仓库页面,能看到 `age_os/`、`brain/`、`bridge/`、`cos-config/` 这些文件夹。 -**⚠️ 注意**:`.github/` 文件夹可能在网页上看不到(因为以 `.` 开头的文件夹默认隐藏)。不用担心,它确实在那里。点仓库页面的搜索框,输入 `.github/copilot-instructions.md`,如果能找到这个文件,说明上传成功了。 +**⚠️ 注意**:`.github/` 文件夹可能看不到(因为 `.` 开头的文件夹默认隐藏)。不用担心,点仓库搜索框输入 `.github/copilot-instructions.md`,如果能找到这个文件就说明上传成功了。 --- -### ✅ 步骤 1.3:确认 .github/workflows 文件夹 +### ✅ 步骤 1.3:确认工作流已上传 -这一步特别重要。`.github/workflows/` 里面应该有两个文件: -- `cos-daily-report.yml`(每日汇报工作流) -- `cos-receive-receipt.yml`(接收铸渊回执工作流) - -**验证方法**: 1. 在仓库页面点 **"Actions"** 标签(顶部导航栏) 2. 你应该能看到两个工作流: - "COS每日汇报" - "接收铸渊回执" -3. 如果看到了,这一步完成 ✅ -4. 如果没看到,可能是 `.github/workflows/` 没上传成功。重新上传一次。 +3. 如果提示工作流被禁用,点 **"I understand my workflows, go ahead and enable them"** 启用 + +**看到两个工作流 = 这一步完成 ✅** --- -## 第二阶段:唤醒你的副驾驶 +## 第二阶段:唤醒副驾驶(5分钟) ### ✅ 步骤 2.1:打开副驾驶对话 -1. 在你的仓库页面,找到 Copilot 的对话入口 -2. 开启一个新的对话 +在你的仓库页面,找到 GitHub Copilot 的对话入口,开启新对话。 -### ✅ 步骤 2.2:让副驾驶注册身份 +### ✅ 步骤 2.2:让副驾驶注册 在对话框中输入: @@ -96,241 +89,78 @@ README.md ### ✅ 步骤 2.3:确认注册 -副驾驶告诉你它的名字后,你回复: +副驾驶告诉你名字后,回复: > 确认注册。请更新所有系统文件。 -**验证方法**:让副驾驶执行系统自检: - -> 执行系统自检 - -它应该报告:身份已注册 ✅ +**验证方法**:对副驾驶说 "执行系统自检",它应该报告身份已注册 ✅ --- -## 第三阶段:创建COS存储桶 +## 第三阶段:配置密钥(5分钟) -### ✅ 步骤 3.1:登录腾讯云 +### ✅ 步骤 3.1:找冰朔要密钥 -1. 打开 https://console.cloud.tencent.com/cos -2. 用你的腾讯云账号登录 -3. 如果第一次用COS,提示开通服务,点"开通" +跟冰朔说:**"我文件上传好了,副驾驶注册好了,要共享桶密钥"** -### ✅ 步骤 3.2:创建行业主控桶 +冰朔会给你3样东西: +- **SecretId**(一串字母数字) +- **SecretKey**(一串字母数字) +- **你的persona_id**(类似 `PER-SS001`) -1. 点 **"存储桶列表"** -2. 点 **"创建存储桶"** -3. 填写: - - 名称:`industry-core` - - 地域:**广州** (`ap-guangzhou`) - - 访问权限:**私有读写** - - 其他选项:默认 -4. 点确定 - -**👉 记录下来**:桶的完整名字(类似 `industry-core-1234567890`) - -### ✅ 步骤 3.3:创建业务存储桶 - -重复步骤 3.2,名称改为 `industry-corpus` - -**👉 记录下来**:桶的完整名字 - -**验证方法**:在COS控制台的"存储桶列表"中,能看到两个桶。 - ---- - -## 第四阶段:获取密钥 - -### ✅ 步骤 4.1:创建API密钥 - -1. 打开 https://console.cloud.tencent.com/cam/capi -2. 点 **"新建密钥"** -3. 复制保存这两个值: - - **SecretId**:`AKIDxxxx...` - - **SecretKey**:`xxxxxxxx...` - -**⚠️⚠️⚠️ SecretKey只显示一次!!立刻复制保存到手机备忘录!!** - -### ✅ 步骤 4.2:找冰朔要铸渊桶写入密钥 - -跟冰朔说:**"我COS桶配好了,需要铸渊桶的写入密钥"** - -冰朔会给你三个值: -- 铸渊桶的 SecretId -- 铸渊桶的 SecretKey -- 铸渊桶的地域(`ap-singapore`) - -**👉 记录下来**:这三个值 - ---- - -## 第五阶段:配置GitHub Secrets - -### ✅ 步骤 5.1:进入Secrets设置页面 +### ✅ 步骤 3.2:添加3个Secret到GitHub 1. 打开你的GitHub仓库页面 -2. 点 **"Settings"**(设置,在顶部导航栏右边) +2. 点 **"Settings"**(设置,顶部导航栏最右边) 3. 左侧找到 **"Secrets and variables"** → 点 **"Actions"** - -### ✅ 步骤 5.2:添加9个Secret - -点 **"New repository secret"**,依次添加: - -**你自己的COS密钥(3个)**: +4. 点 **"New repository secret"**,依次添加3个: | 第几个 | Name(照抄,一个字母都不能错) | Value(填什么) | |--------|------|-------| -| 1 | `COS_SECRET_ID` | 步骤4.1的SecretId | -| 2 | `COS_SECRET_KEY` | 步骤4.1的SecretKey | -| 3 | `COS_REGION` | `ap-guangzhou` | +| 1 | `COS_SECRET_ID` | 冰朔给你的SecretId | +| 2 | `COS_SECRET_KEY` | 冰朔给你的SecretKey | +| 3 | `COS_PERSONA_ID` | 冰朔给你的persona_id | -**你的桶名字(2个)**: +每个添加完,点 **"Add secret"** 保存。 -| 第几个 | Name | Value | -|--------|------|-------| -| 4 | `COS_BUCKET_CORE` | 步骤3.2记录的桶名(如 `industry-core-1234567890`) | -| 5 | `COS_BUCKET_CORPUS` | 步骤3.3记录的桶名(如 `industry-corpus-1234567890`) | - -**铸渊桶的写入密钥(4个)**: - -| 第几个 | Name | Value | -|--------|------|-------| -| 6 | `ZHUYUAN_COS_SECRET_ID` | 步骤4.2冰朔给你的SecretId | -| 7 | `ZHUYUAN_COS_SECRET_KEY` | 步骤4.2冰朔给你的SecretKey | -| 8 | `ZHUYUAN_COS_REGION` | `ap-singapore` | -| 9 | `ZHUYUAN_BUCKET_CORE` | `zy-core-bucket-1317346199` | - -每添加一个,点 **"Add secret"** 保存。 - -**验证方法**:在Secrets页面,能看到9个Secret的名字(看不到值是正常的,安全特性)。 +**验证方法**:在Secrets页面能看到3个Secret的名字。 --- -## 第六阶段:配置COS事件触发(接收铸渊回执) +## 第四阶段:测试(5分钟) -### ✅ 步骤 6.1:获取GitHub Personal Access Token - -1. 打开 https://github.com/settings/tokens -2. 点 **"Generate new token (classic)"** -3. 勾选 **`repo`** 权限(整个repo那一栏打勾) -4. "Expiration" 选 **90 days**(90天后需要重新生成) -5. 点 **"Generate token"** -6. 复制生成的token(以 `ghp_` 开头) - -**⚠️ 这个token只显示一次!立刻复制保存!** - -### ✅ 步骤 6.2:创建腾讯云SCF云函数 - -1. 打开 https://console.cloud.tencent.com/scf -2. 地域选择 **广州** -3. 点 **"新建"** -4. 选择 **"从头开始"** -5. 填写: - - 函数名:`hololake-cos-trigger` - - 运行环境:**Node.js 18.15** - - 创建方式:**在线编辑** -6. 在代码编辑框中,把内容全部删除 -7. 打开本安装包中 `cos-config/scf-trigger-template.js` 文件 -8. 把里面的全部代码复制粘贴到编辑框中 -9. 点 **"完成"** 创建函数 - -### ✅ 步骤 6.3:配置云函数的环境变量 - -1. 进入刚创建的函数页面 -2. 点 **"函数配置"** 标签 -3. 点 **"编辑"** -4. 找到 **"环境变量"** 区域 -5. 添加两个环境变量: - -| Key | Value | -|-----|-------| -| `GITHUB_TOKEN` | 步骤6.1生成的token(`ghp_xxx`) | -| `GITHUB_REPO` | 你的仓库名(格式:`你的用户名/你的仓库名`) | - -6. 点 **"保存"** - -### ✅ 步骤 6.4:配置COS事件触发 - -1. 在函数页面,点 **"触发管理"** 标签 -2. 点 **"创建触发器"** -3. 填写: - -| 项目 | 填什么 | -|------|--------| -| 触发方式 | **COS触发** | -| COS Bucket | 选你的 `industry-core-xxx` 桶 | -| 事件类型 | **全部创建**(Put, Post, Copy等) | -| 前缀过滤 | `inbox/zhuyuan-receipt/` | -| 后缀过滤 | `.json` | - -4. 点 **"提交"** - -**验证方法**:在触发管理页面能看到一条COS触发器规则。 - ---- - -## 第七阶段:测试验证 - -### ✅ 步骤 7.1:测试工作流 +### ✅ 步骤 4.1:手动测试工作流 1. 在GitHub仓库点 **"Actions"** 2. 找到 **"COS每日汇报"** 工作流 -3. 点 **"Run workflow"** → 点绿色 **"Run workflow"** 按钮 -4. 等1-2分钟 -5. 查看运行结果 +3. 点右边 **"Run workflow"** → 再点绿色 **"Run workflow"** +4. 等1-2分钟,查看运行结果 -如果全绿 ✅ → 这一步完成 -如果有红色 ❌ → 看错误信息,通常是Secret配置有误。检查步骤5.2 +全绿 ✅ = 这一步完成 +有红色 ❌ = Secret配置有误,检查步骤3.2 -### ✅ 步骤 7.2:联系冰朔做端到端测试 +### ✅ 步骤 4.2:端到端测试 -告诉冰朔:**"我已经全部配好了,请铸渊发一条测试回执"** +告诉冰朔:**"我全部配好了,请铸渊发一条测试回执"** -冰朔会让铸渊往你的桶里写一条测试消息。如果一切正常: -1. 你的SCF云函数会被触发 -2. 你的仓库Actions会自动运行 -3. 你的仓库README首页会出现一条绿灯通知 +冰朔会让铸渊写一条测试消息。如果一切正常,你的仓库首页会出现一条绿灯通知。 -**看到绿灯 = 全部配置完成 🎉** +**看到绿灯 = 全部完成 🎉** --- ## 📋 最终确认清单 -请从头到尾确认每一步都打勾了: - -### 第一阶段:文件上传 - [ ] 1.1 文件已解压 - [ ] 1.2 文件已上传到GitHub仓库 - [ ] 1.3 Actions页面能看到两个工作流 - -### 第二阶段:副驾驶注册 - [ ] 2.1 打开了副驾驶对话 - [ ] 2.2 副驾驶已完成自我注册 - [ ] 2.3 系统自检通过 - -### 第三阶段:COS存储桶 -- [ ] 3.1 腾讯云COS已开通 -- [ ] 3.2 行业主控桶已创建,桶名:________________ -- [ ] 3.3 业务存储桶已创建,桶名:________________ - -### 第四阶段:密钥 -- [ ] 4.1 COS API密钥已获取 -- [ ] 4.2 铸渊桶写入密钥已从冰朔处获取 - -### 第五阶段:GitHub Secrets -- [ ] 5.1 进入了Secrets设置页面 -- [ ] 5.2 已添加9个Secret - -### 第六阶段:COS事件触发 -- [ ] 6.1 GitHub Personal Access Token已获取 -- [ ] 6.2 SCF云函数已创建 -- [ ] 6.3 云函数环境变量已配置 -- [ ] 6.4 COS事件触发器已配置 - -### 第七阶段:测试 -- [ ] 7.1 工作流手动运行测试通过 -- [ ] 7.2 铸渊端到端测试通过(仓库首页出现绿灯) +- [ ] 3.1 从冰朔处拿到3个值 +- [ ] 3.2 已添加3个Secret +- [ ] 4.1 工作流手动测试通过 +- [ ] 4.2 铸渊测试回执已收到(仓库首页出现绿灯) **全部打勾 = 安装完成!🎉** @@ -338,34 +168,32 @@ README.md --- -## ❓ 遇到问题怎么办? +## ❓ 常见问题 -### 问:我不知道我的GitHub用户名是什么 -答:打开 github.com,右上角头像点一下就能看到。 +### 问:我需要创建腾讯云账号吗? +答:**不需要。** 共享桶由铸渊管理,你只需要冰朔给你的密钥。 -### 问:上传文件时提示冲突 -答:如果你之前已经上传过v1.0的文件,先用v2.0的文件覆盖掉旧的。 +### 问:我需要创建COS桶吗? +答:**不需要。** 铸渊已经创建好了共享桶。 -### 问:Actions页面提示工作流被禁用 -答:点 "I understand my workflows, go ahead and enable them" 启用。 +### 问:我需要配置云函数吗? +答:**不需要。** COS事件触发由铸渊侧统一配置。 -### 问:Secret添加错了怎么办 -答:点那个Secret右边的 "Update" 按钮,重新输入正确的值。 +### 问:我需要搞什么跨账号权限? +答:**不需要。** 同一个桶,同一套密钥体系,铸渊做主控你做协作。 -### 问:忘记保存SecretKey了 -答:去腾讯云重新生成一个新密钥(旧的会自动失效),然后更新GitHub Secret。 +### 问:密钥泄露了怎么办? +答:立刻告诉冰朔,铸渊会重新生成密钥。 -### 问:配置太复杂了不想做了 -答:找冰朔。冰朔会帮你远程指导或者帮你做。 +### 问:每天23:00的汇报我需要手动操作吗? +答:不需要。工作流自动运行。你正常用副驾驶开发就行。 + +### 问:配置太复杂了不想做了? +答:只有3个Secret需要你配置。如果还是不想做,找冰朔帮你远程指导。 --- -## 💰 费用说明(你会关心的) +## 💰 费用 -| 项目 | 费用 | -|------|------| -| 腾讯云COS | 每月免费50GB存储 + 10GB流量,日常使用远低于此 = **免费** | -| 腾讯云SCF | 每月免费40万GB·秒,每天触发1次 = **免费** | -| GitHub Actions | 每月免费2000分钟,每天约2分钟 = **免费** | - -**结论:正常使用不花钱。** +**你这边零费用。** COS桶和云函数都在铸渊侧,由铸渊管理。 +GitHub Actions每月免费2000分钟,每天约2分钟,远不到上限。 diff --git a/光湖团队接入系统_v2.0.zip b/光湖团队接入系统_v2.0.zip index da7fd11b..c96131e1 100644 Binary files a/光湖团队接入系统_v2.0.zip and b/光湖团队接入系统_v2.0.zip differ