可选功能
示例配置只有一个 Discord 角色。下面的功能都是在 jingmei.config.json 里按需加,每段写明需要的环境变量(写进 .env,格式 key: value)。字段含义见配置参考。
Telegram:需要 .env 里的 TELEGRAM_LUNA_TOKEN(BotFather 给的 token)。顶层加 telegram 段,并在角色里加 telegram 账号;设置步骤见 Telegram 设置。
"telegram": { "chatIds": ["-1001234567890"] }"telegram": { "tokenEnv": "TELEGRAM_LUNA_TOKEN" }第二段加在 personas[] 里对应角色对象中,与 discord 并列。
语音(Fish Audio):需要 FISH_AUDIO_API_KEY。referenceId 是 32 位十六进制音色 ID;角色默认使用语音,可用 voiceEnabled: false 关闭。
"voice": {
"apiKeyEnv": "FISH_AUDIO_API_KEY",
"referenceId": "00000000000000000000000000000000",
"model": "s2.1-pro-free"
}画图:不需要环境变量,而是 Antigravity 的 OAuth 登录,步骤见画图。模型默认 gemini-3.1-flash-image,只有要换模型时才需要写:
"imageGeneration": { "model": "gemini-3.1-flash-image" }看图模型:角色的主模型不能看图时,用另一个模型描述图片。需要该 provider 的凭据(bun run jingmei login <provider> 或它的 API key 环境变量)。
"visionModel": "openrouter/google/gemini-2.5-flash"K 线图与长文转图:不需要环境变量,默认关闭,见 K 线图、长文转图。
"kline": { "enabled": true },
"textImage": { "enabled": true, "thresholdChars": 300 }功能开关(features):默认全部开启。下面几项可以单独关掉,工具和提示词随之去掉,用不到的依赖也不再加载。
"features": { "history": false, "memory": false, "soul": false, "search": false, "audit": false }| 开关 | 关闭后 |
|---|---|
history | 不建消息索引,没有 related_messages / search_history,上下文行不再带“(相关 N 条)”;不下载约 96 MB 的 embedding 模型,不加载 fastembed 与 sqlite-vec。与 events 同时配置会报配置错误 |
memory | 没有 remember_member_fact / recall_member_memory,也不再被动收集成员档案、偏好、关系和聊天里自述的生日。保留:/memory、/forget 仍可查看和删除已有数据,/birthday 仍可手动登记生日(celebrations 的生日祝福靠它) |
soul | 没有 update_soul,不再把已存的私人 soul 备忘注入 system prompt;已存数据保留在数据库中 |
search | 没有 search_web,也不预取搜索结果;DEEPSEEK_API_KEY 仍是默认模型的凭据 |
audit | 不再对最终文字做自然度审查(泄漏标记检查仍在);接话判断由 jev.replyDecision 单独控制 |
run_js 始终启用。修改配置后会自动优雅重载,当前对话完成后应用新开关。
Jev(秒回表情、记忆排序,接话判断也会使用):远程 Jev 需要 TYPESAFE_API_KEY;省略 apiKeyEnv 则只用进程内包装器,此时必须有 DEEPSEEK_API_KEY(或写 localJev),否则启动报配置错误。详见 Jev。
"jev": {
"apiKeyEnv": "TYPESAFE_API_KEY",
"quickReactions": true,
"memoryScoring": true
}话题(events):需要能解析出决策客户端,即上面的 Jev 配置,或 DEEPSEEK_API_KEY;summaryModel 的 provider 需要凭据。首次启动会下载 embedding 模型。
"events": { "summaryModel": "deepseek/deepseek-flash" }节日与生日祝福:不需要环境变量。space 与 channelId 必须是上面已配置的服务器/频道,personaId 是发祝福的角色。
"celebrations": [
{
"space": "discord:000000000000000000",
"channelId": "000000000000000001",
"personaId": "luna",
"timeZone": "Australia/Sydney",
"calendar": "both"
}
]