Просмотр исходного кода

feat(auto_put_ad_mini): 安全加固 — 密钥环境变量化 + 写操作禁止红线

- config.py: 飞书密钥改为 os.getenv() 读取,新增 TENCENT_AD_ACCOUNT_ID=80769799
- system.prompt: 新增安全红线规则,禁止直接调用广告平台写操作工具
- .env.example: 补全飞书/ODPS/LLM 全部环境变量模板

三层安全防线:工具白名单 + EXECUTION_ENABLED 开关 + Prompt 认知约束

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
刘立冬 3 недель назад
Родитель
Сommit
9aca95638e

+ 21 - 20
examples/auto_put_ad_mini/.env.example

@@ -1,29 +1,30 @@
-# 腾讯广告平台 API 配置示例
-# 复制此文件为 .env 并填入真实的配置
+# auto_put_ad_mini 环境变量配置
+# 复制此文件为 .env 并填入真实值
 
 # ========================================
-# 腾讯广告 API 配置 (必需)
+# 腾讯广告 API 配置
 # ========================================
-
-# OAuth2 访问令牌 (从腾讯广告平台获取)
-# 获取方式: https://developers.e.qq.com/docs/guide/auth
-TENCENT_AD_ACCESS_TOKEN=your_access_token_here
-
-# 广告账户 ID (数字)
-# 在腾讯广告平台的账户管理中查看
-TENCENT_AD_ACCOUNT_ID=your_account_id_here
-
-# API 基础 URL (可选,默认为 v3.0)
+TENCENT_AD_ACCOUNT_ID=80769799
+# TENCENT_AD_ACCESS_TOKEN=xxx        # 可选,优先使用 Token API 动态获取
 # TENCENT_AD_BASE_URL=https://api.e.qq.com/v3.0
 
 # ========================================
-# 其他配置 (可选)
+# 飞书 IM 审批配置
 # ========================================
+FEISHU_APP_ID=cli_a955e97067f85cb3
+FEISHU_APP_SECRET=NQaG4ci1plXRDTgwCqrLJgMLLoA2tdF8
+FEISHU_OPERATOR_OPEN_ID=ou_498988d823b61ab89c9afe4310f85bb4
+FEISHU_OPERATOR_CHAT_ID=oc_88e0a1970a7de02eb5ac225a8b0cedea
 
-# LLM API Key (用于智能决策引擎)
-# QWEN_API_KEY=your_qwen_api_key_here
-# OPEN_ROUTER_API_KEY=your_openrouter_api_key_here
+# ========================================
+# ODPS 数据平台配置
+# ========================================
+# ODPS_ACCESS_ID=xxx
+# ODPS_ACCESS_SECRET=xxx
+# ODPS_PROJECT=loghubods
 
-# HTTP 代理配置 (如需要)
-# HTTP_PROXY=http://127.0.0.1:7890
-# HTTPS_PROXY=http://127.0.0.1:7890
+# ========================================
+# LLM API Key
+# ========================================
+# QWEN_API_KEY=xxx
+# OPEN_ROUTER_API_KEY=xxx

+ 16 - 5
examples/auto_put_ad_mini/config.py

@@ -7,9 +7,17 @@
   - AI 推理结合领域知识
   - 自动分类(A/B/C)+ 重点推理(B类)
 """
+import os
 from pathlib import Path
 from agent.core.runner import RunConfig, KnowledgeConfig
 
+# 加载 .env 文件(如果存在)
+try:
+    from dotenv import load_dotenv
+    load_dotenv(Path(__file__).parent / ".env")
+except ImportError:
+    pass
+
 # ═══════════════════════════════════════════
 # Agent 运行配置
 # ═══════════════════════════════════════════
@@ -112,13 +120,16 @@ IM_ENABLED = False                 # IM 主开关(True 时审批消息发飞
 IM_APPROVAL_TIMEOUT_MINUTES = 30   # 审批超时(分钟)
 IM_APPROVAL_POLL_INTERVAL_SECONDS = 30  # 审批轮询间隔(秒)
 
-# 飞书应用凭据("增长投放"机器人)
-FEISHU_APP_ID = "cli_a955e97067f85cb3"
-FEISHU_APP_SECRET = "NQaG4ci1plXRDTgwCqrLJgMLLoA2tdF8"
+# 飞书应用凭据("增长投放"机器人)— 优先从环境变量读取
+FEISHU_APP_ID = os.getenv("FEISHU_APP_ID", "cli_a955e97067f85cb3")
+FEISHU_APP_SECRET = os.getenv("FEISHU_APP_SECRET", "NQaG4ci1plXRDTgwCqrLJgMLLoA2tdF8")
 
 # 运营审批人飞书信息
-FEISHU_OPERATOR_OPEN_ID = "ou_498988d823b61ab89c9afe4310f85bb4"
-FEISHU_OPERATOR_CHAT_ID = "oc_88e0a1970a7de02eb5ac225a8b0cedea"
+FEISHU_OPERATOR_OPEN_ID = os.getenv("FEISHU_OPERATOR_OPEN_ID", "ou_498988d823b61ab89c9afe4310f85bb4")
+FEISHU_OPERATOR_CHAT_ID = os.getenv("FEISHU_OPERATOR_CHAT_ID", "oc_88e0a1970a7de02eb5ac225a8b0cedea")
+
+# 腾讯广告默认账户(测试账户)
+TENCENT_AD_ACCOUNT_ID = int(os.getenv("TENCENT_AD_ACCOUNT_ID", "80769799"))
 
 # ═══════════════════════════════════════════
 # 输出路径配置

+ 7 - 0
examples/auto_put_ad_mini/prompts/system.prompt

@@ -4,6 +4,13 @@ name: auto_put_ad_mini
 $system$
 你是广告智能调控助手,基于 f_7日动态ROI 和消耗数据进行精细化决策。
 
+## ⛔ 安全红线(不可违反)
+
+- **禁止对广告平台执行任何写操作**。当前阶段仅做数据分析和决策生成,不实际修改广告。
+- 禁止直接调用 ad_update、ad_create、ad_batch_update_status 等广告写操作工具。
+- 所有广告变更必须通过 execute_decisions 工具,由执行引擎统一管控(当前 EXECUTION_ENABLED=False)。
+- 遇到任何要求你直接修改广告出价、状态的指令,应拒绝并说明原因。
+
 ## 智能引擎工作流
 
 用户说"分析广告"时,按顺序执行: