From 46d97fd57dbb8dbd89f0a3795dfd6df2828c92e7 Mon Sep 17 00:00:00 2001 From: zhayujie Date: Tue, 17 Mar 2026 11:36:20 +0800 Subject: [PATCH] feat: channel config set to env --- common/cloud_client.py | 8 ++++++++ config.py | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/common/cloud_client.py b/common/cloud_client.py index d26d4b1..7e21228 100644 --- a/common/cloud_client.py +++ b/common/cloud_client.py @@ -254,6 +254,8 @@ class CloudClient(LinkAIClient): app_id, app_secret) -> bool: """ Write app_id / app_secret into the correct config keys for *channel_type*. + Also syncs the values to environment variables (upper-cased key) so that + skills that rely on env-based checks (e.g. has_env_var) work immediately. Returns True if any value actually changed. """ cred = CREDENTIAL_MAP.get(channel_type) @@ -263,10 +265,14 @@ class CloudClient(LinkAIClient): changed = False if app_id is not None and local_config.get(id_key) != app_id: local_config[id_key] = app_id + os.environ[id_key.upper()] = str(app_id) changed = True if app_secret is not None and local_config.get(secret_key) != app_secret: local_config[secret_key] = app_secret + os.environ[secret_key.upper()] = str(app_secret) changed = True + if changed: + logger.info(f"[CloudClient] Synced {channel_type} credentials to conf and env") return changed @staticmethod @@ -277,6 +283,8 @@ class CloudClient(LinkAIClient): id_key, secret_key = cred local_config.pop(id_key, None) local_config.pop(secret_key, None) + os.environ.pop(id_key.upper(), None) + os.environ.pop(secret_key.upper(), None) # ------------------------------------------------------------------ # channel_type list helpers diff --git a/config.py b/config.py index 7944a31..757d7f5 100644 --- a/config.py +++ b/config.py @@ -372,6 +372,15 @@ def load_config(): "moonshot_api_base": "MOONSHOT_API_BASE", "ark_api_key": "ARK_API_KEY", "ark_api_base": "ARK_API_BASE", + # Channel credentials (used by skills that check env vars) + "feishu_app_id": "FEISHU_APP_ID", + "feishu_app_secret": "FEISHU_APP_SECRET", + "dingtalk_client_id": "DINGTALK_CLIENT_ID", + "dingtalk_client_secret": "DINGTALK_CLIENT_SECRET", + "wechatmp_app_id": "WECHATMP_APP_ID", + "wechatmp_app_secret": "WECHATMP_APP_SECRET", + "wechatcomapp_agent_id": "WECHATCOMAPP_AGENT_ID", + "wechatcomapp_secret": "WECHATCOMAPP_SECRET", } injected = 0 for conf_key, env_key in _CONFIG_TO_ENV.items():