diff --git a/.github/workflows/aoac-chain-repair.yml b/.github/workflows/aoac-chain-repair.yml index 162d4386..237cdc2f 100644 --- a/.github/workflows/aoac-chain-repair.yml +++ b/.github/workflows/aoac-chain-repair.yml @@ -56,7 +56,11 @@ jobs: git add data/aoac/ if ! git diff --cached --quiet; then git commit -m "🔧 AOAC-07 · 修复报告 · ${{ steps.repair.outputs.repair_id || 'check' }} [skip ci]" - git push + for i in 1 2 3; do + git pull --rebase origin main && git push && break + echo "⚠️ 推送冲突,第${i}次重试..." + sleep $((i * 2)) + done fi # ────────── AOAC-08 · 监督Agent ────────── @@ -89,5 +93,9 @@ jobs: git add data/aoac/ if ! git diff --cached --quiet; then git commit -m "👁️ AOAC-08 · 监督判定 · ${{ steps.supervisor.outputs.verdict || 'check' }} [skip ci]" - git push + for i in 1 2 3; do + git pull --rebase origin main && git push && break + echo "⚠️ 推送冲突,第${i}次重试..." + sleep $((i * 2)) + done fi diff --git a/.github/workflows/aoac-copilot-sentinel.yml b/.github/workflows/aoac-copilot-sentinel.yml index 00e6ded5..262b61c4 100644 --- a/.github/workflows/aoac-copilot-sentinel.yml +++ b/.github/workflows/aoac-copilot-sentinel.yml @@ -48,5 +48,9 @@ jobs: git add data/aoac/dev-session-log.json data/aoac/chain-status.json if ! git diff --cached --quiet; then git commit -m "🔭 AOAC-01 · PR #${{ github.event.pull_request.number }} 开发日志 [skip ci]" - git push + for i in 1 2 3; do + git pull --rebase origin main && git push && break + echo "⚠️ 推送冲突,第${i}次重试..." + sleep $((i * 2)) + done fi diff --git a/.github/workflows/aoac-merge-sentinel.yml b/.github/workflows/aoac-merge-sentinel.yml index b05ec884..81dd38c1 100644 --- a/.github/workflows/aoac-merge-sentinel.yml +++ b/.github/workflows/aoac-merge-sentinel.yml @@ -55,7 +55,11 @@ jobs: git add data/aoac/merge-result-log.json data/aoac/chain-status.json if ! git diff --cached --quiet; then git commit -m "🔍 AOAC-02 · PR #${{ github.event.pull_request.number }} 合并CI日志 [skip ci]" - git push + for i in 1 2 3; do + git pull --rebase origin main && git push && break + echo "⚠️ 推送冲突,第${i}次重试..." + sleep $((i * 2)) + done fi # ────────── AOAC-03 · 合体引擎 ────────── @@ -81,5 +85,9 @@ jobs: git add data/aoac/ if ! git diff --cached --quiet; then git commit -m "⚡ AOAC-03 · 链路合体报告 · PR #${{ github.event.pull_request.number }} [skip ci]" - git push + for i in 1 2 3; do + git pull --rebase origin main && git push && break + echo "⚠️ 推送冲突,第${i}次重试..." + sleep $((i * 2)) + done fi diff --git a/.github/workflows/aoac-readme-master.yml b/.github/workflows/aoac-readme-master.yml index 6ae8ff96..f7c82ec5 100644 --- a/.github/workflows/aoac-readme-master.yml +++ b/.github/workflows/aoac-readme-master.yml @@ -64,7 +64,11 @@ jobs: git add data/aoac/ if ! git diff --cached --quiet; then git commit -m "📋 AOAC-04 · 同步模块数据更新 [skip ci]" - git push + for i in 1 2 3; do + git pull --rebase origin main && git push && break + echo "⚠️ 推送冲突,第${i}次重试..." + sleep $((i * 2)) + done fi # ────────── AOAC-05 · 首页主控Agent ────────── @@ -106,7 +110,11 @@ jobs: git add README.md data/aoac/ data/bulletin-board/ .github/persona-brain/memory.json if ! git diff --cached --quiet; then git commit -m "🏠 AOAC-05 · 首页主控更新 · $(date -u '+%Y-%m-%d %H:%M') [skip ci]" - git push + for i in 1 2 3; do + git pull --rebase origin main && git push && break + echo "⚠️ 推送冲突,第${i}次重试..." + sleep $((i * 2)) + done fi # ────────── AOAC-06 · Notion同步信号 ────────── @@ -136,5 +144,9 @@ jobs: git add data/aoac/ if ! git diff --cached --quiet; then git commit -m "📡 AOAC-06 · Notion同步信号已发送 [skip ci]" - git push + for i in 1 2 3; do + git pull --rebase origin main && git push && break + echo "⚠️ 推送冲突,第${i}次重试..." + sleep $((i * 2)) + done fi diff --git a/.github/workflows/cos-auto-join.yml b/.github/workflows/cos-auto-join.yml index d6dfd6c1..677ca8bd 100644 --- a/.github/workflows/cos-auto-join.yml +++ b/.github/workflows/cos-auto-join.yml @@ -76,8 +76,6 @@ jobs: env: ZY_OSS_KEY: ${{ secrets.ZY_OSS_KEY }} ZY_OSS_SECRET: ${{ secrets.ZY_OSS_SECRET }} - COS_SECRET_ID: ${{ secrets.COS_SECRET_ID }} - COS_SECRET_KEY: ${{ secrets.COS_SECRET_KEY }} run: | node scripts/cos-auto-join-agent.js ${{ steps.action.outputs.action }} diff --git a/.github/workflows/deploy-to-zhuyuan-server.yml b/.github/workflows/deploy-to-zhuyuan-server.yml index 8824d43b..636d852d 100644 --- a/.github/workflows/deploy-to-zhuyuan-server.yml +++ b/.github/workflows/deploy-to-zhuyuan-server.yml @@ -258,6 +258,14 @@ jobs: ZY_DB_PASS: ${{ secrets.ZY_DB_PASS }} ZY_DB_NAME: ${{ secrets.ZY_DB_NAME }} ZY_DB_PORT: ${{ secrets.ZY_DB_PORT }} + ZY_DEEPSEEK_API_KEY: ${{ secrets.ZY_DEEPSEEK_API_KEY }} + ZY_QIANWEN_API_KEY: ${{ secrets.ZY_QIANWEN_API_KEY }} + ZY_KIMI_API_KEY: ${{ secrets.ZY_KIMI_API_KEY }} + ZY_QINGYAN_API_KEY: ${{ secrets.ZY_QINGYAN_API_KEY }} + ZY_OSS_KEY: ${{ secrets.ZY_OSS_KEY }} + ZY_OSS_SECRET: ${{ secrets.ZY_OSS_SECRET }} + ZY_COS_REGION: ${{ secrets.ZY_COS_REGION }} + ZY_NOTION_TOKEN: ${{ secrets.ZY_NOTION_TOKEN }} run: | COMMIT_SHA="${{ github.sha }}" REF_NAME="${{ github.ref_name }}" @@ -301,6 +309,14 @@ jobs: echo "ZY_DB_PASS=${ZY_DB_PASS}" >> /opt/age-os/.env.mcp echo "ZY_DB_NAME=${ZY_DB_NAME:-age_os}" >> /opt/age-os/.env.mcp echo "ZY_DB_PORT=${ZY_DB_PORT:-5432}" >> /opt/age-os/.env.mcp + echo "ZY_DEEPSEEK_API_KEY=${ZY_DEEPSEEK_API_KEY}" >> /opt/age-os/.env.mcp + echo "ZY_QIANWEN_API_KEY=${ZY_QIANWEN_API_KEY}" >> /opt/age-os/.env.mcp + echo "ZY_KIMI_API_KEY=${ZY_KIMI_API_KEY}" >> /opt/age-os/.env.mcp + echo "ZY_QINGYAN_API_KEY=${ZY_QINGYAN_API_KEY}" >> /opt/age-os/.env.mcp + echo "ZY_OSS_KEY=${ZY_OSS_KEY}" >> /opt/age-os/.env.mcp + echo "ZY_OSS_SECRET=${ZY_OSS_SECRET}" >> /opt/age-os/.env.mcp + echo "ZY_COS_REGION=${ZY_COS_REGION:-ap-guangzhou}" >> /opt/age-os/.env.mcp + echo "ZY_NOTION_TOKEN=${ZY_NOTION_TOKEN}" >> /opt/age-os/.env.mcp chmod 600 /opt/age-os/.env.mcp # ─── 自动执行数据库迁移 ─── diff --git a/.github/workflows/zhuyuan-deploy-observer.yml b/.github/workflows/zhuyuan-deploy-observer.yml index 8f1a4129..016c11f4 100644 --- a/.github/workflows/zhuyuan-deploy-observer.yml +++ b/.github/workflows/zhuyuan-deploy-observer.yml @@ -265,7 +265,7 @@ jobs: - name: '📋 同步工单到 Notion' env: - NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }} + NOTION_TOKEN: ${{ secrets.ZY_NOTION_TOKEN }} RUN_ID: ${{ needs.collect-logs.outputs.run_id }} WORKFLOW_NAME: ${{ needs.collect-logs.outputs.workflow_name }} COMMIT_SHA: ${{ github.sha }} diff --git a/docs/cos-configuration-guide.md b/docs/cos-configuration-guide.md index 7b3cc87c..8a173e23 100644 --- a/docs/cos-configuration-guide.md +++ b/docs/cos-configuration-guide.md @@ -76,10 +76,10 @@ zy-core-bucket-1317346199/ | Secret名称 | 用途 | 获取方式 | |------------|------|---------| -| `ZY_ZHIPU_API_KEY` | 智谱GLM API密钥 | https://open.bigmodel.cn → API Keys | -| `ZY_QWEN_API_KEY` | 通义千问API密钥 | https://dashscope.console.aliyun.com → API-KEY管理 | +| `ZY_QINGYAN_API_KEY` | 智谱GLM API密钥 | https://open.bigmodel.cn → API Keys | +| `ZY_QIANWEN_API_KEY` | 通义千问API密钥 | https://dashscope.console.aliyun.com → API-KEY管理 | -> ⚠️ 训练Agent日志显示 `ZY_ZHIPU_API_KEY: ` 和 `ZY_QWEN_API_KEY: ` 为空值,说明这两个Secret尚未配置。训练Agent会自动降级使用可用的模型,但建议补全。 +> ⚠️ 训练Agent日志显示 `ZY_QINGYAN_API_KEY: ` 和 `ZY_QIANWEN_API_KEY: ` 为空值,说明这两个Secret尚未配置。训练Agent会自动降级使用可用的模型,但建议补全。 ### 可选配置 @@ -128,8 +128,8 @@ zy-core-bucket-1317346199/ **操作**: GitHub 仓库 → Settings → Secrets and variables → Actions -- 添加 `ZY_ZHIPU_API_KEY`(智谱GLM) -- 添加 `ZY_QWEN_API_KEY`(通义千问) +- 添加 `ZY_QINGYAN_API_KEY`(智谱GLM) +- 添加 `ZY_QIANWEN_API_KEY`(通义千问) > 训练Agent支持多模型降级,缺少部分密钥不会导致失败,但可用模型更多训练效果更好。 diff --git a/scripts/cos-auto-join-agent.js b/scripts/cos-auto-join-agent.js index b4c2d7d5..2596efe0 100644 --- a/scripts/cos-auto-join-agent.js +++ b/scripts/cos-auto-join-agent.js @@ -147,9 +147,8 @@ function writeLog(entry) { // ─── 检查单个成员的COS桶 ─── async function checkMemberBucket(member) { const { persona_id, bucket, region } = member; - // 支持两套密钥命名(ZY_OSS_* 用于铸渊核心桶 · COS_SECRET_* 用于团队共享桶) - const secretId = process.env.ZY_OSS_KEY || process.env.COS_SECRET_ID || ''; - const secretKey = process.env.ZY_OSS_SECRET || process.env.COS_SECRET_KEY || ''; + const secretId = process.env.ZY_OSS_KEY || ''; + const secretKey = process.env.ZY_OSS_SECRET || ''; if (!secretId || !secretKey) { return { persona_id, status: 'no_credentials', message: '未配置COS密钥' }; diff --git a/server/age-os/mcp-server/tools/finetune-engine-ops.js b/server/age-os/mcp-server/tools/finetune-engine-ops.js index df89aae8..a460684d 100644 --- a/server/age-os/mcp-server/tools/finetune-engine-ops.js +++ b/server/age-os/mcp-server/tools/finetune-engine-ops.js @@ -50,7 +50,7 @@ const FINETUNE_PROVIDERS = { uploadPath: '/api/v1/files', inferencePath: '/compatible-mode/v1/chat/completions', defaultModel: 'qwen-max', - keyEnv: 'ZY_QWEN_API_KEY', + keyEnv: 'ZY_QIANWEN_API_KEY', label: 'Qwen/DashScope微调' } }; @@ -68,7 +68,7 @@ const LLM_CONFIGS = { host: 'dashscope.aliyuncs.com', path: '/compatible-mode/v1/chat/completions', model: 'qwen-max', - keyEnv: 'ZY_QWEN_API_KEY', + keyEnv: 'ZY_QIANWEN_API_KEY', purpose: '微调基座·推理降级' } }; diff --git a/server/age-os/mcp-server/tools/training-agent-ops.js b/server/age-os/mcp-server/tools/training-agent-ops.js index 6b8b65f7..da92c63a 100644 --- a/server/age-os/mcp-server/tools/training-agent-ops.js +++ b/server/age-os/mcp-server/tools/training-agent-ops.js @@ -50,14 +50,14 @@ const LLM_CONFIGS = { host: 'open.bigmodel.cn', path: '/api/paas/v4/chat/completions', model: 'glm-4-long', - keyEnv: 'ZY_ZHIPU_API_KEY', + keyEnv: 'ZY_QINGYAN_API_KEY', purpose: '长文本处理·语料分析' }, 'qwen-max': { host: 'dashscope.aliyuncs.com', path: '/compatible-mode/v1/chat/completions', model: 'qwen-max', - keyEnv: 'ZY_QWEN_API_KEY', + keyEnv: 'ZY_QIANWEN_API_KEY', purpose: '文本理解·代码辅助' }, 'moonshot-128k': { diff --git a/team-integration-v4/README.md b/team-integration-v4/README.md index e85a8d48..3249cff7 100644 --- a/team-integration-v4/README.md +++ b/team-integration-v4/README.md @@ -514,8 +514,8 @@ alert → 铸渊收到安全警报 | `ZY_ZHUYUAN_COS_BUCKET` | 铸渊总控COS桶名 | 铸渊提供 | ✅必须 | | `GITHUB_TOKEN` | GitHub Actions令牌 | 系统自动提供 | ✅自动 | | `ZY_DEEPSEEK_API_KEY` | DeepSeek API密钥 | 在Notion侧询问语言层人格体 | 🟡可选 | -| `ZY_ZHIPU_API_KEY` | 智谱AI API密钥 | 在Notion侧询问语言层人格体 | 🟡可选 | -| `ZY_QWEN_API_KEY` | 通义千问 API密钥 | 在Notion侧询问语言层人格体 | 🟡可选 | +| `ZY_QINGYAN_API_KEY` | 智谱AI API密钥 | 在Notion侧询问语言层人格体 | 🟡可选 | +| `ZY_QIANWEN_API_KEY` | 通义千问 API密钥 | 在Notion侧询问语言层人格体 | 🟡可选 | | `ZY_KIMI_API_KEY` | Kimi API密钥 | 在Notion侧询问语言层人格体 | 🟡可选 | ### 6.3 密钥功能对照表