Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
188 lines (154 loc) · 9.24 KB
/
Copy path.env.example
File metadata and controls
188 lines (154 loc) · 9.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# .env — Video Analysis Pro 实际生效的环境变量
> ⚠️ 本文件只列**代码真正会读取**的环境变量(grep 实测,audit-blinds P1-1 修正)。
> 历史版本曾列 `VAP_LLM_PROVIDER/BASE_URL/MODEL/API_KEY`、`VAP_MONITOR_DIR` 等,
> 但代码从未消费——监控分析的真实凭据来源是 GUI 的「LastUsed」配置(见下方说明)。
## 一、headless HTTP 服务
```bash
# 鉴权(生产强制):非空则 POST /analyze 需 Bearer Token;空=禁用(仅本地用)
# v6.0:启动时检测 <16 字符弹弱 Token 警告(建议 >=32 字符随机串)
VAP_HEADLESS_TOKEN=
# 上传上限 MB(默认 512)
VAP_MAX_UPLOAD_MB=512
# 分析并发上限(默认 1=串行,单 GPU 安全;CPU 环境可调大)
VAP_ANALYZE_CONCURRENCY=1
# v6.0:同 IP 限流(默认 10 req/min,防恶意刷 /analyze;0=禁用)
VAP_IP_RATE_LIMIT_PER_MIN=10
# 服务端口
VAP_PORT=8000
# v10.2 P1-2 skills 闭环:自动蒸馏开关(默认 1=开)
# 1=开(默认):loader 安全前端命中危险项时默认不自动 enabled(可手动开启)
# 0=关(零回归):完全保持旧 loader 行为,不因安全扫描改变 enabled 列表
VAP_SKILLS_AUTODISTILL=1
```
## 二、Ollama 本地模型
```bash
# 上下文窗口大小(默认 4096;长视频/长转录调大防截断)
VAP_OLLAMA_NUM_CTX=4096
```
## 二.5、NVIDIA 多 key 路由调优(ProviderRouter)
```bash
# 503/5xx 短退避秒数:worker 池满时同 key 重试前的等待时间
# 默认 1.5s(实测 NVIDIA 503 "Worker 16/16" 频繁,立即切 key 只会让 11 个 key
# 同时撞墙;退避 1.5s 给 worker 池留空槽时间)
VAP_NV_BACKOFF_SEC=1.5
# 同 key 重试次数:503/5xx 时先短退避重试同 key 多少次才切下一个 key
# 默认 2 次(退避 1.5s × 重试 2 次同 key,仍 5xx 才切 key,减少空转)
VAP_NV_SAME_KEY_RETRIES=2
# 每 key 并发上限:单 key 同时在飞的请求数
# 默认 2(11 key 全打满反互挤,每 key 并发 2 更稳;CPU/高配可调大)
VAP_NV_MAX_CONCURRENT_PER_KEY=2
```
> 这三个变量由 `src/core/provider_router.py:load_router_config_from_env`
> 读取,返回 dict 供调用方(`batch_tab._build_router`)传给 `ProviderRouter`。
> 不配则用模块级默认值(1.5 / 2 / 2)。消费位置见下方「代码消费点实测」表。
## 二.6、GCGuard 长跑内存守护(v10.0.0 F4)
```bash
# GCGuard 触发 gc.collect 的 RSS 阈值(MB)。超阈值触发 GC + 记内存基线趋势。
# 默认 2048(2GB),7×24 监控/批跑场景按机器调大。VAP_GC_THRESHOLD_MB=0 不合法。
VAP_GC_THRESHOLD_MB=2048
# 采样间隔(秒)。默认 60s 一次 RSS 采样。过短会增加 psutil 开销。
VAP_GC_INTERVAL_SEC=60
```
> 由 `src/web/app.py:lifespan` 装配 `src/core/runtime/gc_guard.install_gc_guard`
> 读取。失败不阻断启动(防御性)。前端可经 `GET /api/runtime/gc` 看基线/趋势。
## 三、监控分析(SurveillanceAgent)— 真实凭据来源说明
监控分析的 LLM 凭据 **不读环境变量**,而是读 GUI 里保存的「LastUsed」配置
(`config/app_config.ini` 的 `[LastUsed]` 段 + keyring 密钥环)。
如需在 headless/脚本场景用监控分析,在 `surveillance_tab.py` 的配置面板填入
api_url / api_key / model 并保存,或直接编辑 `config/app_config.ini`:
```ini
[LastUsed]
client_type = 1
api_url = https://your-gateway/v1
api_key = (实际存于 keyring,不落 ini)
model_name = glm-5.3-flash
```
## 四、代码消费点实测(grep 实证)
| 变量 | 消费位置 |
|------|---------|
| VAP_HEADLESS_TOKEN | src/server/headless.py:182 |
| VAP_MAX_UPLOAD_MB | src/server/headless.py:226 |
| VAP_ANALYZE_CONCURRENCY | src/server/headless.py:38 |
| VAP_IP_RATE_LIMIT_PER_MIN | src/server/headless.py:42 |
| VAP_PORT | src/server/headless.py:293 |
| VAP_OLLAMA_NUM_CTX | src/core/logic.py:830 |
| VAP_NV_BACKOFF_SEC | src/core/provider_router.py:load_router_config_from_env |
| VAP_NV_SAME_KEY_RETRIES | src/core/provider_router.py:load_router_config_from_env |
| VAP_NV_MAX_CONCURRENT_PER_KEY | src/core/provider_router.py:load_router_config_from_env |
> 不在此表的变量(如 `VAP_LLM_API_KEY`、`VAP_RTSP_URL`)代码不读取,
> 配置了也不生效——以本表为准。
## 五、Agent 框架模式开关(v11.x 新增)
```bash
# Agent 后端实现(v10.3.1 默认 react;非法值回退 react):
# react = ReactLoopAgent(新架构:Session 持久化 + 监督层 + 写审批 + 分层记忆,
# v10.3 全能力所在路径 —— 默认启用)
# legacy = 旧版 AgentOrchestrator(显式设 legacy 可回退;无审批/监督/记忆治理)
# 前端可在 /chat 请求头用 X-Agent-Backend: react|legacy 逐请求覆盖本开关
VAP_AGENT_BACKEND=react
# 工具沙箱隔离:agent 工具执行是否进沙箱(默认 false=直跑,true=隔离执行,
# 依赖 src/core/runtime/sandbox.py 自动选型;Windows 无 pywin32 时自动降级 NullSandbox)
VAP_SANDBOX_ENABLED=false
# 分层记忆(三层记忆,默认 1=开):
# WorkingMemory 热层(最近会话事实注入 system)+ Experience 语义层(FTS5
# 混合评分)+ TripleStore 时序图。关=不记录不注入(agent 行为零回归)。
# 读 src/core/memory/connector.py:MemoryLayeredConnector.from_env
VAP_MEMORY_LAYERED=1
# skills 渐进披露(roster 按需分配,react 路径装配):v10.3.1 默认 1=按意图召回
# 相关 skill 子集注入(显式 triggers > 领域语义路由 > description token;
# 禁用 skill 一律不返回)。0=退回旧 match_skills 全量匹配。
VAP_SKILLS_ROSTER=1
# Agent 监督层(卡死检测/上下文压缩/成本预算):v10.3.1 默认 true=启用
# (重复工具 3 次→STUCK、会话超 50 事件→压缩(摘要替换全量投影,真实省
# token)、单轮 5 万 token / 累计 50 万 token→BUDGET)。
# false=禁用(回退 v10.2 行为)。读 src/core/agent/supervisor.py
VAP_AGENT_SUPERVISOR=true
# 工具审批(scope_guard):以下开关按工具名模式放行写操作;默认全关=写操作
# 一律走人工审批(前端经 SSE 收到 approval-request 事件后调
# POST /api/agent/approval/{pin}/decide 确认;超时默认拒绝,安全侧)
VAP_ALLOW_WRITE_GENERAL=false # 1=放行一般写操作(create/update/trigger/send 等)
VAP_ALLOW_WRITE_CUT=false # 1=放行剪辑落盘类写操作(highlight_cut 等)
VAP_ALLOW_WRITE_DELETE=false # 1=放行危险删除类写操作(delete_* 等)
VAP_ALLOW_WRITE_PUBLISH=false # 1=放行营销真实发布(marketing-publish skill 的分发)
# 默认 false:当前实现仅 Mock 分发清单,绝不真实调用
# 公众号/小红书/微博/抖音接口(付费红线)
```
## 六、浏览器/CDP 自动化(P2-3,web_auto 工具包)
```bash
# 浏览器自动化 provider(src/core/tools/web_auto/browser.py 读取):
# playwright = 真实 Playwright chromium headless(本机浏览器二进制需已装)
# mock = 强制 mock(不启动浏览器,返回标注结果,不伪造真实页面)
# 其它/缺省 = auto:本机可用则真实,不可用则 mock 且标注
VAP_WEB_AUTO_PROVIDER=playwright
# CDP 调试端点(src/core/tools/web_auto/cdp.py 读取):
# 提供真实 Chrome DevTools 端口(如 http://127.0.0.1:9222)→ 尝试真实连接;
# 缺省/空 → mock 模式(返回标注占位,不伪造)
VAP_CDP_URL=
# 桌面 CUA 服务开关(Electron 主进程 desktop/cua-service.js 读取;
# 注意:当前 CUA 仅为 IPC handler 骨架 + mock 截图/点击标注,无真实桌面控制)
VAP_CUA_ENABLED=false
```
## 六、内容生产工具 Provider(P2-1 视频生成/剪辑 Agent 工具集)
```bash
# 媒体工具 provider 选择。默认 mock = 占位执行(付费红线,绝不真调真实 API)。
# 免费本地能力(ffmpeg/moviepy/已有 faster-whisper 转录)在工具内部真实执行,
# 与这里无关;这里只控制「是否需要外部商用 provider」。
# 非 mock 值(如 xunfei_asr / azure_tts / veo_gen)缺对应 key 时一律回落 mock。
VAP_MEDIA_ASR_PROVIDER=mock # 商用 ASR(讯飞等)。mock=本地 faster-whisper 转录可用时真实
VAP_MEDIA_TTS_PROVIDER=mock # 商用 TTS(Azure/腾讯云等)。mock=本地 pyttsx3/edge-tts 可用时真实
VAP_MEDIA_VIDEO_PROVIDER=mock # 商用视频生成(Runway/Veo 等)。mock=本地 ffmpeg/moviepy 合成
```
## 七、MCP server 对外暴露(src/mcp,批 B-P3-1)
```bash
# 写工具对外放行开关(默认 0=严格拒绝)。对外只暴露白名单内的
# 读/安全工具;写工具默认不放行。`1` 且 allowlist 显式加该写工具
# (src/config/mcp/tools_allowlist.json)后方可执行(双闸)。
# 读工具(get_*/search_*/kb_*/web_browser_snapshot/cdp_evaluate 等)
# 不受此开关影响,默认在 allowlist 内。
VAP_MCP_ALLOW_WRITE=0
# 可选的 MCP 工具白名单覆盖(逗号分隔)。设置后**替换** default allowlist,
# 只暴露列出的工具。示例(显式放行一个写工具 + 常用读工具):
# VAP_MCP_TOOLS=get_video_meta,search_kb,scan_videos,make_voiceover
VAP_MCP_TOOLS=
```
# Agent 单步软超时(秒);空/0=不超时(v10.5.0 P1-10)
# VAP_AGENT_STEP_TIMEOUT=30