agent-120 .env只留必要回退: - .env.example KOOK移4可选业务字段(RECEIVE_MODE/WEBHOOK_PATH/VERIFY_TOKEN/ENCRYPT_KEY),只留token/base_url; channelAccountsFromEnv不读这4个; 说明业务字段走channelConfigForm.channels.json - 黑名单/限流/receive_mode等走管理面板热更新, env仅必要连接回退 agent-121 删除渠道列表同步(根因: adminListChannels枚举caps,删除不同步caps): - adminListChannels 以channels.json为准: 遍历caps时已删账号adapter跳过(s.channels注入时), 删除/保存后列表=channels.json, 删除即消失 - (capReg Remove后续可加,范围外标注) agent-122 渠道管理分两块显示(主人:不割裂): - ①可用适配器类型(顶部PLATFORM_TYPES全集grid卡片,已配置/未配置Tag,点新建配置) - ②已保存配置(下方AdminTable过滤accounts>0,账号+bot身份+掩码token提示+连接/断开/删除) - 拆 channelConfigForm.tsx(248行) 表单抽出; Channels.tsx 463→306行; token只回填hint不写值(保存留空不改secret) 全仓 build/vet/test绿+前端build绿(356KB)
128 lines
6.7 KiB
Bash
128 lines
6.7 KiB
Bash
# ============================================
|
||
# Cyrene v2 配置文件 (.env)
|
||
# 复制为 .env 后修改。所有配置均从环境变量注入,代码内禁硬编码。
|
||
# 注意:.env 仅用于本地开发;生产用 systemd / env_file。
|
||
# 敏感信息(API Key / JWT_SECRET)一律不要写进日志。
|
||
# ============================================
|
||
|
||
# ---- 运行环境 ----
|
||
ENV=development
|
||
LOG_LEVEL=debug
|
||
TZ=Asia/Shanghai
|
||
|
||
# ---- 数据目录(未设置时按 OS 惯例解析) ----
|
||
DATA_DIR=./data
|
||
|
||
# ---- 服务器(网关,唯一对外端口) ----
|
||
HOST=0.0.0.0
|
||
PORT=8080
|
||
|
||
# ---- 认证 / 管理员 ----
|
||
# JWT_SECRET 必填,长度 >= 32;缺失或过短会在启动时 panic。
|
||
JWT_SECRET=change-me-to-a-random-string-at-least-32-characters
|
||
ADMIN_USERNAME=admin
|
||
ADMIN_PASSWORD=admin12345
|
||
REGISTRATION_ENABLED=true
|
||
|
||
# ---- 数据库 ----
|
||
# SQLite 为默认(单二进制、无需外部服务)。
|
||
DB_SQLITE_PATH=./data/cyrene.db
|
||
# PostgreSQL + pgvector 为可选增强;未配置时走 SQLite。相关向量能力在 M4 接入。
|
||
# DB_PG_URL=postgres://cyrene:cyrene_pass@localhost:5432/cyrene_ai?sslmode=disable
|
||
|
||
# ---- LLM 多供应商(LLM_PROVIDER 显式声明协议:openai / anthropic,默认 openai) ----
|
||
# ⚠️ 本节是【兜底】:管理面板「LLM 模型」页保存会写入本地 models.json(默认 <DATA_DIR>/models.json,已 gitignore),
|
||
# 只要 models.json 存在且有效,运行中的 LLM 就优先用它的多厂商多模型组,并支持面板实时保存→热更新(无需重启)。
|
||
# 仅当 models.json 不存在/无效时才回退到下面的 .env。
|
||
# Provider = openai:OpenAI 兼容 /chat/completions(含 OpenAI 兼容网关,也可经它承载 Anthropic 模型,但失去原生 tool input 对象优势)
|
||
LLM_PROVIDER=openai
|
||
|
||
LLM_BASE_URL=https://api.openai.com/v1
|
||
LLM_API_KEY=sk-xxxxx
|
||
LLM_MODEL=gpt-4o
|
||
LLM_FALLBACK_MODEL=gpt-4o-mini
|
||
|
||
# ---- LLM 视觉模型(多模态路由:含图片的请求路由到此模型) ----
|
||
# 不配置则图片路由回主模型;仅当启用多模态能力时设置。
|
||
# LLM_VISION_MODEL=gpt-4o-mini
|
||
|
||
# Provider = anthropic:Anthropic Messages /v1/messages(tool_use.input 为结构化对象,工具循环更稳)
|
||
# ANTHROPIC_BASE_URL=https://api.anthropic.com
|
||
# ANTHROPIC_API_KEY=sk-ant-xxxxx
|
||
# ANTHROPIC_MODEL=claude-sonnet-4-20250514
|
||
# ANTHROPIC_FALLBACK_MODEL=claude-haiku-3-5
|
||
|
||
# ---- 记忆嵌入(可选,真语义) ----
|
||
# 不配置时使用内置 n-gram / FTS 向量(dim=256)。配置后必须真实走语义路径。
|
||
# EMBEDDING_API_URL 是【完整 /embeddings 端点】(不是 base)——例:Ollama / llama.cpp = http://localhost:11434/v1/embeddings
|
||
# EMBEDDING_API_URL=http://localhost:11434/v1/embeddings
|
||
# EMBEDDING_API_KEY=
|
||
# EMBEDDING_MODEL=Qwen3-Embedding-0.6B # 推荐(Q8_0 ~639MB、dim=1024、ModelScope 国内可下)
|
||
|
||
# ---- IoT 设备提供者 ----
|
||
# mock = 模拟智能家居设备(开发测试用);none = 禁用 IoT。
|
||
IOT_PROVIDER=mock
|
||
|
||
# ---- 语音服务 ----
|
||
TTS_PROVIDER=edge-tts
|
||
STT_PROVIDER=dashscope
|
||
# DASHSCOPE_API_KEY=sk-xxxxx
|
||
|
||
# ---- 后台思考 ----
|
||
ENABLE_BACKGROUND_THINKING=true
|
||
THINK_INTERVAL_SEC=300
|
||
THINK_SILENCE_TIMEOUT_SEC=120
|
||
# 安静时段(本地时钟小时,默认 23:00-07:00;两端相等且非 0 则关闭)。
|
||
# 同时用于 backthink 后台思考与 channelbridge 公共平台安静时段轻思考(design/12 §6 策略五)。
|
||
QUIET_START_HOUR=23
|
||
QUIET_END_HOUR=7
|
||
|
||
# ---- WebSocket ----
|
||
WS_MAX_CONNECTIONS=1000
|
||
SESSION_IDLE_TIMEOUT_MIN=30
|
||
|
||
# ---- MCP 服务器(可选,JSON 数组字符串;每台 server 含 name/command/args/url/enabled) ----
|
||
# stdio 子进程示例:
|
||
# MCP_SERVERS_JSON=[{"name":"calc","command":"mcp-calc","args":["--stdio"],"enabled":true}]
|
||
# SSE 端点示例:
|
||
# MCP_SERVERS_JSON=[{"name":"weather","url":"http://localhost:3001/sse","enabled":true}]
|
||
|
||
# ---- 本地执行沙箱(exec/terminal 工具;默认关闭,授权放权) ----
|
||
# 只有 Enabled=true 时 agent 才可执行命令;仍需命令白名单与根目录边界。
|
||
# EXEC_SANDBOX_ENABLED=false
|
||
# EXEC_SANDBOX_COMMANDS=git,ls,cat,pwd
|
||
# EXEC_SANDBOX_ROOTS=./data
|
||
# EXEC_SANDBOX_ENV=PATH
|
||
|
||
# ---- 跨域白名单 ----
|
||
ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000
|
||
|
||
# ---- KOOK(KaiHeiLa)渠道 ----
|
||
# 单账号走环境变量;多账号走下方 CHANNELS_JSON。
|
||
# .env 仅提供【必要连接兜底】;接收模式 / webhook 回调路由 / verify_token / encrypt_key 等
|
||
# 业务·高级项一律在管理面板「渠道管理」配置(写入 channels.json,热更新),不落 .env。
|
||
# CHANNEL_KOOK_TOKEN 为 KOOK 开发者中心机器人 token(敏感,勿写日志/提交)。
|
||
# CHANNEL_KOOK_BASE_URL 可选,默认 https://www.kookapp.cn/api/v3。
|
||
# CHANNEL_KOOK_TOKEN=
|
||
# CHANNEL_KOOK_BASE_URL=
|
||
|
||
# ---- IM 多账号 / 黑白名单(可选,design/16 §4.6 §5-6) ----
|
||
# ⚠️ 本节是【兜底】:管理面板「渠道管理」页保存会写入本地 channels.json(默认 <DATA_DIR>/channels.json,已 gitignore),
|
||
# 只要 channels.json 存在且有效,运行中的渠道 adapter 就优先用它的多平台账号配置,并支持面板实时保存→热更新(无需重启)。
|
||
# 仅当 channels.json 不存在/无效时才回退到下面的 CHANNELS_JSON 与 CHANNEL_<NAME>_*。
|
||
# 业务·高级项(接收模式 receive_mode / webhook 回调路由与 verify_token、encrypt_key / 黑白名单 / 限流)
|
||
# 一律在管理面板「渠道管理」配置:写 channels.json、热更新;.env 仅作无文件时的必要连接回退(token/base_url 等)。
|
||
# 单账号仍走上面 CHANNEL_<NAME>_* 环境变量;这里提供独立的 JSON 注册表,
|
||
# 支持同一平台配多个接入配置(多账号),并配群聊/私聊黑白名单(代码层拦截,
|
||
# 被拉黑/不在白名单的群或用户消息不进 LLM,且有审计)。形如:
|
||
# CHANNELS_JSON={"telegram":[{"id":"conf0","config":{"bot_token":"..."},"denyUsers":["12345"],"denyGroups":["-100"]}]}
|
||
# 每个 account 字段:id(平台内唯一)、config(平台特有凭据 map)、
|
||
# allowGroups/denyGroups(群黑白名单,allowGroups 非空则成为白名单)、
|
||
# allowUsers/denyUsers(私聊用户黑白名单)。未配置时按单账号 env 路径处理。
|
||
# 群/总限流与总上限(可选,design/12 §6 策略三/四,公共平台防刷屏/最小化打扰):
|
||
# groupMsgPerMin 群聊每分钟上限(0=用默认6,-1=不限,正整数=该值)
|
||
# msgPerMin 非主人消息每分钟总上限(>0 生效,0/-1=不限)
|
||
# maxMessages 待处理上限,接近上限时由审查模型剔除低价值消息(0=用默认50,-1=不限,正整数=该值)
|
||
# 旧账号不配这些字段默认走「保护性默认/不限」,保持向后兼容。
|
||
# CHANNELS_JSON=
|