fix: 通用智能体注入当前登录用户的 api_key
通用智能体没有 owner,配置文件默认也不写 api_key。 复用普通 bot 的 owner token 逻辑:按 user_identifier 查 agent_user.new_api_token。 若配置文件里显式配置了 api_key,则优先用配置的。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
cf5cbe06b9
commit
f4f39e4356
@ -606,12 +606,27 @@ async def fetch_bot_config_from_db(bot_user_id: str, user_identifier: Optional[s
|
|||||||
from agent.db_pool_manager import get_db_pool_manager
|
from agent.db_pool_manager import get_db_pool_manager
|
||||||
from utils.settings import NEW_API_BASE_URL
|
from utils.settings import NEW_API_BASE_URL
|
||||||
|
|
||||||
# 通用智能体直接从配置文件读取
|
pool = get_db_pool_manager().pool
|
||||||
|
|
||||||
|
# 通用智能体从配置文件读取,并注入当前登录用户的 api_key
|
||||||
if is_general_agent_id(bot_user_id):
|
if is_general_agent_id(bot_user_id):
|
||||||
from utils.general_agent_config import get_general_agent_runtime_config
|
from utils.general_agent_config import get_general_agent_runtime_config
|
||||||
return get_general_agent_runtime_config(user_identifier)
|
config = get_general_agent_runtime_config(user_identifier)
|
||||||
|
if not config.get("api_key") and user_identifier:
|
||||||
pool = get_db_pool_manager().pool
|
async with pool.connection() as conn:
|
||||||
|
async with conn.cursor() as cursor:
|
||||||
|
await cursor.execute(
|
||||||
|
"SELECT new_api_token FROM agent_user WHERE username = %s",
|
||||||
|
(user_identifier,)
|
||||||
|
)
|
||||||
|
row = await cursor.fetchone()
|
||||||
|
if row and row[0]:
|
||||||
|
config["api_key"] = row[0]
|
||||||
|
logger.info(
|
||||||
|
f"Fetched general agent config: model={config['model']}, "
|
||||||
|
f"api_key={'*' + config['api_key'][-4:] if config.get('api_key') else 'N/A'}"
|
||||||
|
)
|
||||||
|
return config
|
||||||
|
|
||||||
async with pool.connection() as conn:
|
async with pool.connection() as conn:
|
||||||
async with conn.cursor() as cursor:
|
async with conn.cursor() as cursor:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user