zcbot/config/agent.yaml

75 lines
4.2 KiB
YAML

# 默认模型档案: <family>.<variant>,对应 config/models/<family>.yaml
default_model: deepseek_v4.flash
models_dir: config/models
# 模型档位(per-account 模型访问控制,见 core/model_access.py)。users.plan 存档位名;
# plan 为空 / 未知 → 落 `default` 档;role=admin 始终全开,不受此限制。
# 每档列出可用的模型 id:文本 = `family.variant`(config/models/);图/视频 = variant key
# (config/media/doubao.yaml)。成员含 `"*"` = 全开(含未来新增模型)。
# 三个 list 端点(/v1/models、/v1/image_models、/v1/video_models)按档过滤,用户只看到本档模型;
# 新建/切换/发媒体时再硬校验(老 task 续跑读 task.model_profile 不打断)。改后重启 web 生效。
model_tiers:
default: # 基线:所有未分配档位的用户(= 公测期默认可用)
- deepseek_v4.flash
- deepseek_v4.pro
- local.r1 # 内网模型(涉密任务)
- local.qwen3
- seedream_5 # 图(config/media/doubao.yaml image 段)
- seedance_2_fast # 视频
- seedance_2_pro
pro: # 基线 + 豆包 Seed 2.1 + GLM
- deepseek_v4.flash
- deepseek_v4.pro
- local.r1 # 内网模型(涉密任务)
- local.qwen3
- doubao.turbo
- doubao.pro
- doubao.evolving
- glm.pro
- glm.pro52
- seedream_5
- seedance_2_fast
- seedance_2_pro
skills_dir: skills
workspace_dir: workspace
system_prompt: prompts/system/general_v1.md
# 媒体生成每账号每日配额(usage_events.kind=image/video 计数,服务器本地 00:00 重置)。
# 失败任务不算(record_*_usage 只在成功 + 下载完才落库)。≤ 0 视为不限。
# 跨 task 跨 variant 全口径合计。改后 重启 web 生效。
quotas:
images_per_day: 20 # seedream 等图像 tool 调用上限
videos_per_day: 5 # seedance 等视频 tool 调用上限
# per-user 工作目录总字节上限(包括上传 + tool 写的所有产物);≤ 0 视为不限。
# 写前 gate(/v1/files/upload + DockerExecutor.write/edit),超额返 [Error] 硬阻。
# 实测靠 lifespan 后台 15min 扫描 user_disk_usage 表,扫描间隙轻微突破接受
# (跟 image/video 配额 race-tolerant 一致);外部用户开放前再上 OS 层 xfs prjquota 兜底。
disk_bytes_per_user: 5gb # 支持 5gb / 500mb / 1073741824(整数 bytes)
disk_scan_interval_seconds: 900 # 后台扫描周期,默 15 分钟
# 优雅 drain(SIGTERM / systemctl restart):先拒新 POST /messages(返 503 + Retry-After,
# 客户端退避重试覆盖),等在跑的 run 自然收尾;超 drain_timeout 还没完的转协作式 cancel
# (下个 chunk 间隙退、标 idle 不报 error);再过 cancel_grace 仍没退的留给 systemd SIGKILL,
# 下次启动 reaper 标 error(最坏退化 = 改前行为)。改后重启 web 生效。
# ★ systemd unit 的 TimeoutStopSec 必须 > drain_timeout + cancel_grace + 余量(见 RUN.md 部署 SOP)。
shutdown:
drain_timeout_seconds: 30 # 等在跑 run 收尾的上限 = 部署期 503 窗口上限;超时转 cancel
# (= 用户按停止,标 idle 可重发,非 error),故偏短更安全
cancel_grace_seconds: 15 # 超时转 cancel 后再给的退场宽限
# Sandbox 容器资源限制(docker run flag,env 可 override);改后重启 web 生效,
# 新起的容器用新值,已 running 的不变(idle 5min 回收后下次起)。
sandbox:
memory: 2g # --memory (env: ZCBOT_SANDBOX_MEMORY)
cpus: 1.0 # --cpus (env: ZCBOT_SANDBOX_CPUS)
pids_limit: 256 # --pids-limit (env: ZCBOT_SANDBOX_PIDS_LIMIT)
shm_size: 512m # --shm-size (env: ZCBOT_SANDBOX_SHM_SIZE);chromium/mmdc 渲 mermaid 的 /dev/shm,默 64MB 不够会挂
# 容器 DNS server 显式配置(docker run --dns,容器 /etc/resolv.conf 直接写,
# 绕过 docker daemon 上游 DNS 探测路径;腾讯云轻量 / 部分云上 daemon 探测
# systemd-resolved 上游会失败,导致 embedded DNS 127.0.0.11 forward 出去也跪)。
# 默公共 DNS,国内访问通畅;留空(`dns: []`)走 docker 默认探测。
dns:
- "8.8.8.8" # Google
- "114.114.114.114" # 国内通用