mirror of https://github.com/Mai-with-u/MaiBot.git
feat(helm chart): 更新helm chart版本为0.12.0。
parent
b5cbf0bf78
commit
914dfd32bd
|
|
@ -2,5 +2,5 @@ apiVersion: v2
|
|||
name: maibot
|
||||
description: "Maimai Bot, a cyber friend dedicated to group chats"
|
||||
type: application
|
||||
version: 0.11.6-beta
|
||||
appVersion: 0.11.6-beta
|
||||
version: 0.12.0
|
||||
appVersion: 0.12.0
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
| Helm Chart版本 | 对应的MaiBot版本 | Commit SHA |
|
||||
|----------------|--------------|------------------------------------------|
|
||||
| 0.12.0 | 0.12.0 | |
|
||||
| 0.11.6-beta | 0.11.6-beta | 0bfff0457e6db3f7102fb7f77c58d972634fc93c |
|
||||
| 0.11.5-beta | 0.11.5-beta | ad2df627001f18996802f23c405b263e78af0d0f |
|
||||
| 0.11.3-beta | 0.11.3-beta | cd6dc18f546f81e08803d3b8dba48e504dad9295 |
|
||||
|
|
@ -88,13 +89,16 @@ helm install maimai \
|
|||
### 部署时自动重置的配置
|
||||
|
||||
adapter的配置中的`napcat_server`和`maibot_server`的`host`和`port`字段,会在每次部署/更新Helm安装实例时被自动重置。
|
||||
core的配置中的`webui`和`maim_message`的部分字段也会在每次部署/更新Helm安装实例时被自动重置。
|
||||
|
||||
自动重置的原因:
|
||||
|
||||
- core的Service的DNS名称是动态的(由安装实例名拼接),无法在adapter的配置文件中提前确定。
|
||||
- 为了使adapter监听所有地址以及保持Helm Chart中配置的端口号,需要在adapter的配置文件中覆盖这些配置。
|
||||
- core的WebUI启停需要由helm chart控制,以便正常创建Service和Ingress资源。
|
||||
- core的maim_message的api server现在可以作为k8s服务暴露出来。监听的IP和端口需要由helm chart控制,以便Service正确映射。
|
||||
|
||||
因此,首次部署时,ConfigMap的生成会需要一些时间,部分Pod会无法启动,等待几分钟即可。
|
||||
首次部署时,预处理任务会负责重置这些配置。这会需要一些时间,因此部署进程可能比较慢,且部分Pod可能会无法启动,等待一分钟左右即可。
|
||||
|
||||
### 跨节点PVC挂载问题
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
HOST=0.0.0.0
|
||||
PORT=8000
|
||||
WEBUI_ENABLED={{ if .Values.core.webui.enabled }}true{{ else }}false{{ end }}
|
||||
WEBUI_MODE=production
|
||||
WEBUI_HOST=0.0.0.0
|
||||
WEBUI_PORT=8001
|
||||
|
|
|
|||
|
|
@ -1,14 +1,22 @@
|
|||
#!/bin/python3
|
||||
# 此脚本会被helm chart的post-install hook触发,在正式部署后通过k8s的job自动运行一次。
|
||||
# 这个脚本的作用是在部署helm chart时迁移旧版ConfigMap到配置文件,并调整adapter的配置文件中的服务监听和服务连接字段。
|
||||
# 这个脚本的作用是在部署helm chart时迁移旧版ConfigMap到配置文件,调整adapter的配置文件中的服务监听和服务连接字段,调整core的配置文件中的maim_message_api_server和WebUI配置。
|
||||
#
|
||||
# - 迁移旧版ConfigMap到配置文件是因为0.11.6-beta之前版本的helm chart将各个配置文件存储在k8s的ConfigMap中,
|
||||
# 由于功能复杂度提升,自0.11.6-beta版本开始配置文件采用文件形式存储到存储卷中。
|
||||
# 从旧版升级来的用户会通过这个脚本自动执行配置的迁移。
|
||||
#
|
||||
# - 需要调整adapter的配置文件的原因是:
|
||||
# 1. core的Service的DNS名称是动态的(由安装实例名拼接),无法在adapter的配置文件中提前确定。
|
||||
# 用于对外连接的maibot_server.host和maibot_server.port字段,会被替换为core的Service对应的DNS名称和8000端口(硬编码,用户无需配置)。
|
||||
# 2. 为了使adapter监听所有地址以及保持chart中配置的端口号,需要在adapter的配置文件中覆盖这些配置。
|
||||
# 用于监听的napcat_server.host和napcat_server.port字段,会被替换为0.0.0.0和8095端口(实际映射到的Service端口会在Service中配置)。
|
||||
#
|
||||
# - 需要调整core的配置文件的原因是:
|
||||
# 1. core的WebUI启停需要由helm chart控制,以便正常创建Service和Ingress资源。
|
||||
# 配置文件中的webui.enabled、webui.allowed_ips将由此脚本覆盖为正确配置。
|
||||
# 2. core的maim_message的api server现在可以作为k8s服务暴露出来。监听的IP和端口需要由helm chart控制,以便Service正确映射。
|
||||
# 配置文件中的maim_message.enable_api_server、maim_message.api_server_host、maim_message.api_server_port将由此脚本覆盖为正确配置。
|
||||
|
||||
import os
|
||||
import toml
|
||||
|
|
@ -26,6 +34,8 @@ apps_api = client.AppsV1Api()
|
|||
with open("/var/run/secrets/kubernetes.io/serviceaccount/namespace", 'r') as f:
|
||||
namespace = f.read().strip()
|
||||
release_name = os.getenv("RELEASE_NAME").strip()
|
||||
is_webui_enabled = os.getenv("IS_WEBUI_ENABLED").lower() == "true"
|
||||
is_maim_message_api_server_enabled = os.getenv("IS_MMSG_ENABLED").lower() == "true"
|
||||
config_adapter_b64 = os.getenv("CONFIG_ADAPTER_B64")
|
||||
config_core_env_b64 = os.getenv("CONFIG_CORE_ENV_B64")
|
||||
config_core_bot_b64 = os.getenv("CONFIG_CORE_BOT_B64")
|
||||
|
|
@ -162,6 +172,24 @@ def reconfigure_adapter():
|
|||
log(func_name, 'Reconfiguration done.')
|
||||
|
||||
|
||||
def reconfigure_core():
|
||||
"""调整core的配置文件的webui和maim_message字段,使其服务能被正确映射"""
|
||||
func_name = 'reconfigure_core'
|
||||
log(func_name, 'Reconfiguring `bot_config.toml` of core...')
|
||||
with open('/app/config/core/bot_config.toml', 'r', encoding='utf-8') as _f:
|
||||
config_core = toml.load(_f)
|
||||
config_core.setdefault('webui', {})
|
||||
config_core['webui']['enabled'] = is_webui_enabled
|
||||
config_core['webui']['allowed_ips'] = '0.0.0.0/0' # 部署于k8s内网,使用宽松策略
|
||||
config_core.setdefault('maim_message', {})
|
||||
config_core['maim_message']['enable_api_server'] = is_maim_message_api_server_enabled
|
||||
config_core['maim_message']['api_server_host'] = '0.0.0.0'
|
||||
config_core['maim_message']['api_server_port'] = 8090
|
||||
with open('/app/config/core/bot_config.toml', 'w', encoding='utf-8') as _f:
|
||||
_f.write(toml.dumps(config_core))
|
||||
log(func_name, 'Reconfiguration done.')
|
||||
|
||||
|
||||
def _scale_statefulsets(statefulsets: list[str], replicas: int, wait: bool = False, timeout: int = 300):
|
||||
"""调整指定几个statefulset的副本数,wait参数控制是否等待调整完成再返回"""
|
||||
statefulsets = set(statefulsets)
|
||||
|
|
@ -232,6 +260,7 @@ if __name__ == '__main__':
|
|||
migrate_old_config()
|
||||
write_config_files()
|
||||
reconfigure_adapter()
|
||||
reconfigure_core()
|
||||
log('main', 'Scaling adapter and core to 1...')
|
||||
_scale_statefulsets([f'{release_name}-maibot-adapter', f'{release_name}-maibot-core'], 1)
|
||||
log('main', 'Process done.')
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ spec:
|
|||
env:
|
||||
- name: TZ
|
||||
value: Asia/Shanghai
|
||||
image: {{ .Values.adapter.image.repository | default "unclas/maimbot-adapter" }}:{{ .Values.adapter.image.tag | default "main-20250924053857" }}
|
||||
image: {{ .Values.adapter.image.repository | default "unclas/maimbot-adapter" }}:{{ .Values.adapter.image.tag | default "main-20251211074617" }}
|
||||
imagePullPolicy: {{ .Values.adapter.image.pullPolicy }}
|
||||
ports:
|
||||
- containerPort: 8095
|
||||
|
|
|
|||
|
|
@ -20,6 +20,15 @@ spec:
|
|||
nodePort: {{ .Values.core.webui.service.nodePort | default nil }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.core.maim_message_api_server.enabled }}
|
||||
- name: maim-message
|
||||
port: {{ .Values.core.maim_message_api_server.service.port }}
|
||||
protocol: TCP
|
||||
targetPort: 8090
|
||||
{{- if eq .Values.core.maim_message_api_server.service.type "NodePort" }}
|
||||
nodePort: {{ .Values.core.maim_message_api_server.service.nodePort | default nil }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ .Release.Name }}-maibot-core
|
||||
type: ClusterIP
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ spec:
|
|||
value: "1b662741904d7155d1ce1c00b3530d0d"
|
||||
- name: PRIVACY_AGREE
|
||||
value: "9943b855e72199d0f5016ea39052f1b6"
|
||||
image: {{ .Values.core.image.repository | default "sengokucola/maibot" }}:{{ .Values.core.image.tag | default "0.11.6-beta" }}
|
||||
image: {{ .Values.core.image.repository | default "sengokucola/maibot" }}:{{ .Values.core.image.tag | default "0.12.0" }}
|
||||
imagePullPolicy: {{ .Values.core.image.pullPolicy }}
|
||||
ports:
|
||||
- containerPort: 8000
|
||||
|
|
|
|||
|
|
@ -15,11 +15,15 @@ spec:
|
|||
restartPolicy: Never
|
||||
containers:
|
||||
- name: preprocessor
|
||||
image: {{ .Values.pre_processor.image.repository | default "reg.mikumikumi.xyz/maibot/preprocessor" }}:{{ .Values.pre_processor.image.tag | default "0.11.6-beta" }}
|
||||
image: {{ .Values.pre_processor.image.repository | default "reg.mikumikumi.xyz/maibot/preprocessor" }}:{{ .Values.pre_processor.image.tag | default "0.12.0" }}
|
||||
imagePullPolicy: {{ .Values.pre_processor.image.pullPolicy }}
|
||||
env:
|
||||
- name: RELEASE_NAME
|
||||
value: {{ .Release.Name }}
|
||||
- name: IS_WEBUI_ENABLED
|
||||
value: {{ .Values.core.webui.enabled | quote }}
|
||||
- name: IS_MMSG_ENABLED
|
||||
value: {{ .Values.core.maim_message_api_server.enabled | quote }}
|
||||
{{- if or .Values.config.override_adapter_config .Release.IsInstall }}
|
||||
- name: CONFIG_ADAPTER_B64
|
||||
value: {{ .Values.config.adapter_config | b64enc | quote }}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ PRIVACY_AGREE: false
|
|||
pre_processor:
|
||||
image:
|
||||
repository: # 默认 reg.mikumikumi.xyz/maibot/preprocessor
|
||||
tag: # 默认 0.11.6-beta
|
||||
tag: # 默认 0.12.0
|
||||
pullPolicy: IfNotPresent
|
||||
pullSecrets: [ ]
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ adapter:
|
|||
|
||||
image:
|
||||
repository: # 默认 unclas/maimbot-adapter
|
||||
tag: # 默认 main-20250924053857
|
||||
tag: # 默认 main-20251211074617
|
||||
pullPolicy: IfNotPresent
|
||||
pullSecrets: [ ]
|
||||
|
||||
|
|
@ -40,12 +40,12 @@ adapter:
|
|||
nodePort: # 仅在设置NodePort类型时有效,不指定则会随机分配端口
|
||||
|
||||
persistence:
|
||||
config:
|
||||
config: # 配置文件的存储卷
|
||||
storageClass:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
size: 10Mi
|
||||
data:
|
||||
data: # 数据的存储卷
|
||||
storageClass:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
|
|
@ -56,7 +56,7 @@ core:
|
|||
|
||||
image:
|
||||
repository: # 默认 sengokucola/maibot
|
||||
tag: # 默认 0.11.6-beta
|
||||
tag: # 默认 0.12.0
|
||||
pullPolicy: IfNotPresent
|
||||
pullSecrets: [ ]
|
||||
|
||||
|
|
@ -66,12 +66,12 @@ core:
|
|||
tolerations: [ ]
|
||||
|
||||
persistence:
|
||||
config:
|
||||
config: # 配置文件的存储卷
|
||||
storageClass:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
size: 10Mi
|
||||
data:
|
||||
data: # 数据的存储卷
|
||||
storageClass:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
|
|
@ -91,6 +91,14 @@ core:
|
|||
path: /
|
||||
pathType: Prefix
|
||||
|
||||
maim_message_api_server:
|
||||
enabled: false
|
||||
service:
|
||||
type: ClusterIP # ClusterIP / NodePort 指定NodePort可以将内网的服务端口映射到物理节点的端口
|
||||
port: 8090 # 服务端口
|
||||
nodePort: # 仅在设置NodePort类型时有效,不指定则会随机分配端口
|
||||
|
||||
|
||||
# 麦麦的运行统计看板配置
|
||||
# 麦麦每隔一段时间会自动输出html格式的运行统计报告,此统计报告可以作为静态网页访问
|
||||
# 此功能默认禁用。如果你认为报告可以被公开访问(报告包含联系人/群组名称、模型token花费信息等),则可以启用此功能
|
||||
|
|
@ -143,7 +151,7 @@ napcat:
|
|||
|
||||
image:
|
||||
repository: # 默认 mlikiowa/napcat-docker
|
||||
tag: # 默认 v4.9.80
|
||||
tag: # 默认 v4.9.91
|
||||
pullPolicy: IfNotPresent
|
||||
pullSecrets: [ ]
|
||||
|
||||
|
|
@ -262,7 +270,7 @@ config:
|
|||
# core的model_config.toml
|
||||
core_model_config: |
|
||||
[inner]
|
||||
version = "1.8.2"
|
||||
version = "1.9.1"
|
||||
|
||||
# 配置文件版本号迭代规则同bot_config.toml
|
||||
|
||||
|
|
@ -317,9 +325,11 @@ config:
|
|||
api_provider = "SiliconFlow"
|
||||
price_in = 2.0
|
||||
price_out = 3.0
|
||||
# temperature = 0.5 # 可选:为该模型单独指定温度,会覆盖任务配置中的温度
|
||||
# max_tokens = 4096 # 可选:为该模型单独指定最大token数,会覆盖任务配置中的max_tokens
|
||||
[models.extra_params] # 可选的额外参数配置
|
||||
enable_thinking = false # 不启用思考
|
||||
# temperature = 0.5 # 可选:为该模型单独指定温度,会覆盖任务配置中的温度
|
||||
|
||||
|
||||
[[models]]
|
||||
model_identifier = "deepseek-ai/DeepSeek-V3.2-Exp"
|
||||
|
|
@ -327,9 +337,11 @@ config:
|
|||
api_provider = "SiliconFlow"
|
||||
price_in = 2.0
|
||||
price_out = 3.0
|
||||
# temperature = 0.7 # 可选:为该模型单独指定温度,会覆盖任务配置中的温度
|
||||
# max_tokens = 4096 # 可选:为该模型单独指定最大token数,会覆盖任务配置中的max_tokens
|
||||
[models.extra_params] # 可选的额外参数配置
|
||||
enable_thinking = true # 启用思考
|
||||
# temperature = 0.7 # 可选:为该模型单独指定温度,会覆盖任务配置中的温度
|
||||
|
||||
|
||||
[[models]]
|
||||
model_identifier = "Qwen/Qwen3-Next-80B-A3B-Instruct"
|
||||
|
|
@ -397,7 +409,7 @@ config:
|
|||
[model_task_config.utils] # 在麦麦的一些组件中使用的模型,例如表情包模块,取名模块,关系模块,麦麦的情绪变化等,是麦麦必须的模型
|
||||
model_list = ["siliconflow-deepseek-v3.2"] # 使用的模型列表,每个子项对应上面的模型名称(name)
|
||||
temperature = 0.2 # 模型温度,新V3建议0.1-0.3
|
||||
max_tokens = 2048 # 最大输出token数
|
||||
max_tokens = 4096 # 最大输出token数
|
||||
slow_threshold = 15.0 # 慢请求阈值(秒),模型等待回复时间超过此值会输出警告日志
|
||||
|
||||
[model_task_config.utils_small] # 在麦麦的一些组件中使用的小模型,消耗量较大,建议使用速度较快的小模型
|
||||
|
|
@ -461,7 +473,7 @@ config:
|
|||
# core的bot_config.toml
|
||||
core_bot_config: |
|
||||
[inner]
|
||||
version = "6.23.5"
|
||||
version = "7.2.5"
|
||||
|
||||
#----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读----
|
||||
# 如果你想要修改配置文件,请递增version的值
|
||||
|
|
@ -484,21 +496,31 @@ config:
|
|||
|
||||
[personality]
|
||||
# 建议120字以内,描述人格特质 和 身份特征
|
||||
personality = "是一个女大学生,现在在读大二,会刷贴吧。"
|
||||
personality = "是一个大二在读女大学生,现在正在上网和群友聊天,有时有点攻击性,有时比较温柔"
|
||||
# アイデンティティがない 生まれないらららら
|
||||
# 描述麦麦说话的表达风格,表达习惯,如要修改,可以酌情新增内容
|
||||
reply_style = "请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。"
|
||||
# 描述麦麦说话的表达风格,表达习惯,如要修改,可以酌情新增内容,建议1-2行
|
||||
reply_style = "请不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。"
|
||||
|
||||
# 麦麦的兴趣,会影响麦麦对什么话题进行回复
|
||||
interest = "对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题"
|
||||
# 多种回复风格列表,可选配置:当 non-empty 且 multiple_probability>0 时,会按概率随机从中选择一个替换 reply_style
|
||||
multiple_reply_style = [
|
||||
# "你的风格平淡但不失讽刺,很简短,很白话。可以参考贴吧,微博的回复风格。",
|
||||
# "用1-2个字进行回复",
|
||||
# "用1-2个符号进行回复",
|
||||
# "言辭凝練古雅,穿插《論語》經句卻不晦澀,以文言短句為基,輔以淺白語意,持長者溫和風範,全用繁體字表達,具先秦儒者談吐韻致。",
|
||||
# "带点翻译腔,但不要太长",
|
||||
]
|
||||
|
||||
# 替换概率:每次构建回复时,以该概率从 multiple_reply_style 中随机选择一个替换 reply_style(0.0-1.0)
|
||||
multiple_probability = 0.3
|
||||
|
||||
# 麦麦的说话规则,行为风格:
|
||||
plan_style = """
|
||||
1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用
|
||||
2.如果相同的内容已经被执行,请不要重复执行
|
||||
3.请控制你的发言频率,不要太过频繁的发言
|
||||
4.如果有人对你感到厌烦,请减少回复
|
||||
5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对"""
|
||||
3.你对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题
|
||||
4.请控制你的发言频率,不要太过频繁的发言
|
||||
5.如果有人对你感到厌烦,请减少回复
|
||||
6.如果有人在追问你,或者话题没有说完,请你继续回复"""
|
||||
|
||||
# 麦麦识图规则,不建议修改
|
||||
visual_style = "请用中文描述这张图片的内容。如果有文字,请把文字描述概括出来,请留意其主题,直观感受,输出为一段平文本,最多30字,请注意不要分点,就输出一段文本"
|
||||
|
|
@ -519,18 +541,19 @@ config:
|
|||
# 替换概率,每次构建人格时替换personality的概率(0.0-1.0)
|
||||
state_probability = 0.3
|
||||
|
||||
|
||||
|
||||
[expression]
|
||||
# 表达学习配置
|
||||
learning_list = [ # 表达学习配置列表,支持按聊天流配置
|
||||
["", "enable", "enable", "1.0"], # 全局配置:使用表达,启用学习,学习强度1.0
|
||||
["qq:1919810:group", "enable", "enable", "1.5"], # 特定群聊配置:使用表达,启用学习,学习强度1.5
|
||||
["qq:114514:private", "enable", "disable", "0.5"], # 特定私聊配置:使用表达,禁用学习,学习强度0.5
|
||||
["", "enable", "enable", "enable"], # 全局配置:使用表达,启用学习,启用jargon学习
|
||||
["qq:1919810:group", "enable", "enable", "enable"], # 特定群聊配置:使用表达,启用学习,启用jargon学习
|
||||
["qq:114514:private", "enable", "disable", "disable"], # 特定私聊配置:使用表达,禁用学习,禁用jargon学习
|
||||
# 格式说明:
|
||||
# 第一位: chat_stream_id,空字符串表示全局配置
|
||||
# 第二位: 是否使用学到的表达 ("enable"/"disable")
|
||||
# 第三位: 是否学习表达 ("enable"/"disable")
|
||||
# 第四位: 学习强度(浮点数),影响学习频率,最短学习时间间隔 = 300/学习强度(秒)
|
||||
# 学习强度越高,学习越频繁;学习强度越低,学习越少
|
||||
# 第四位: 是否启用jargon学习 ("enable"/"disable")
|
||||
]
|
||||
|
||||
expression_groups = [
|
||||
|
|
@ -546,12 +569,17 @@ config:
|
|||
reflect_operator_id = "" # 表达反思操作员ID,格式:platform:id:type (例如 "qq:123456:private" 或 "qq:654321:group")
|
||||
allow_reflect = [] # 允许进行表达反思的聊天流ID列表,格式:["qq:123456:private", "qq:654321:group", ...],只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思(前提是 reflect = true)
|
||||
|
||||
all_global_jargon = true # 是否开启全局黑话模式,注意,此功能关闭后,已经记录的全局黑话不会改变,需要手动删除
|
||||
enable_jargon_explanation = true # 是否在回复前尝试对上下文中的黑话进行解释(关闭可减少一次LLM调用,仅影响回复前的黑话匹配与解释,不影响黑话学习)
|
||||
jargon_mode = "planner" # 黑话解释来源模式,可选: "context"(使用上下文自动匹配黑话) 或 "planner"(仅使用Planner在reply动作中给出的unknown_words列表)
|
||||
|
||||
|
||||
[chat] # 麦麦的聊天设置
|
||||
talk_value = 1 # 聊天频率,越小越沉默,范围0-1
|
||||
mentioned_bot_reply = true # 是否启用提及必回复
|
||||
max_context_size = 30 # 上下文长度
|
||||
planner_smooth = 2 # 规划器平滑,增大数值会减小planner负荷,略微降低反应速度,推荐1-5,0为关闭,必须大于等于0
|
||||
planner_smooth = 3 # 规划器平滑,增大数值会减小planner负荷,略微降低反应速度,推荐1-5,0为关闭,必须大于等于0
|
||||
think_mode = "dynamic" # 思考模式,可选:classic(默认浅度思考和回复)、deep(会进行比较长的,深度回复)、dynamic(动态选择两种模式)
|
||||
|
||||
enable_talk_value_rules = true # 是否启用动态发言频率规则
|
||||
|
||||
|
|
@ -559,7 +587,7 @@ config:
|
|||
# 推荐格式(对象数组):{ target="platform:id:type" 或 "", time="HH:MM-HH:MM", value=0.5 }
|
||||
# 说明:
|
||||
# - target 为空字符串表示全局;type 为 group/private,例如:"qq:1919810:group" 或 "qq:114514:private";
|
||||
# - 支持跨夜区间,例如 "23:00-02:00";数值范围建议 0-1。
|
||||
# - 支持跨夜区间,例如 "23:00-02:00";数值范围建议 0-1,如果 value 设置为0会自动转换为0.0001以避免除以零错误。
|
||||
talk_value_rules = [
|
||||
{ target = "", time = "00:00-08:59", value = 0.8 },
|
||||
{ target = "", time = "09:00-22:59", value = 1.0 },
|
||||
|
|
@ -567,23 +595,37 @@ config:
|
|||
{ target = "qq:114514:private", time = "00:00-23:59", value = 0.3 },
|
||||
]
|
||||
|
||||
include_planner_reasoning = false # 是否将planner推理加入replyer,默认关闭(不加入)
|
||||
|
||||
[memory]
|
||||
max_agent_iterations = 3 # 记忆思考深度(最低为1(不深入思考))
|
||||
max_agent_iterations = 3 # 记忆思考深度(最低为1)
|
||||
agent_timeout_seconds = 45.0 # 最长回忆时间(秒)
|
||||
enable_jargon_detection = true # 记忆检索过程中是否启用黑话识别
|
||||
global_memory = false # 是否允许记忆检索进行全局查询
|
||||
|
||||
[jargon]
|
||||
all_global = true # 是否开启全局黑话模式,注意,此功能关闭后,已经记录的全局黑话不会改变,需要手动删除
|
||||
[dream]
|
||||
interval_minutes = 60 # 做梦时间间隔(分钟),默认30分钟
|
||||
max_iterations = 20 # 做梦最大轮次,默认20轮
|
||||
first_delay_seconds = 1800 # 程序启动后首次做梦前的延迟时间(秒),默认60秒
|
||||
|
||||
# 做梦结果推送目标,格式为 "platform:user_id"
|
||||
# 例如: "qq:123456" 表示在做梦结束后,将梦境文本额外发送给该QQ私聊用户。
|
||||
# 为空字符串时不推送。
|
||||
dream_send = ""
|
||||
|
||||
# 做梦时间段配置,格式:["HH:MM-HH:MM", ...]
|
||||
# 如果列表为空,则表示全天允许做梦。
|
||||
# 如果配置了时间段,则只有在这些时间段内才会实际执行做梦流程。
|
||||
# 时间段外,调度器仍会按间隔检查,但不会进入做梦流程。
|
||||
# 支持跨夜区间,例如 "23:00-02:00" 表示从23:00到次日02:00。
|
||||
# 示例:
|
||||
dream_time_ranges = [
|
||||
# "09:00-22:00", # 白天允许做梦
|
||||
"23:00-10:00", # 跨夜时间段(23:00到次日10:00)
|
||||
]
|
||||
# dream_time_ranges = []
|
||||
|
||||
[tool]
|
||||
enable_tool = true # 是否启用工具
|
||||
|
||||
[mood]
|
||||
enable_mood = false # 是否启用情绪系统
|
||||
mood_update_threshold = 1 # 情绪更新阈值,越高,更新越慢
|
||||
# 情感特征,影响情绪的变化情况
|
||||
emotion_style = "情绪较为稳定,但遭遇特定事件的时候起伏较大"
|
||||
|
||||
[emoji]
|
||||
emoji_chance = 0.4 # 麦麦激活表情包动作的概率
|
||||
|
|
@ -613,24 +655,25 @@ config:
|
|||
[lpmm_knowledge] # lpmm知识库配置
|
||||
enable = false # 是否启用lpmm知识库
|
||||
lpmm_mode = "agent"
|
||||
# 可选:classic经典模式,agent 模式,结合最新的记忆一同使用
|
||||
rag_synonym_search_top_k = 10 # 同义词搜索TopK
|
||||
rag_synonym_threshold = 0.8 # 同义词阈值(相似度高于此阈值的词语会被认为是同义词)
|
||||
info_extraction_workers = 3 # 实体提取同时执行线程数,非Pro模型不要设置超过5
|
||||
qa_relation_search_top_k = 10 # 关系搜索TopK
|
||||
qa_relation_threshold = 0.5 # 关系阈值(相似度高于此阈值的关系会被认为是相关的关系)
|
||||
qa_paragraph_search_top_k = 1000 # 段落搜索TopK(不能过小,可能影响搜索结果)
|
||||
# 可选择classic传统模式/agent 模式,结合新的记忆一同使用
|
||||
rag_synonym_search_top_k = 10 # 同义检索TopK
|
||||
rag_synonym_threshold = 0.8 # 同义阈值,相似度高于该值的关系会被当作同义词
|
||||
info_extraction_workers = 3 # 实体抽取同时执行线程数,非Pro模型不要设置超过5
|
||||
qa_relation_search_top_k = 10 # 关系检索TopK
|
||||
qa_relation_threshold = 0.5 # 关系阈值,相似度高于该值的关系会被认为是相关关系
|
||||
qa_paragraph_search_top_k = 1000 # 段落检索TopK(不能过小,可能影响搜索结果)
|
||||
qa_paragraph_node_weight = 0.05 # 段落节点权重(在图搜索&PPR计算中的权重,当搜索仅使用DPR时,此参数不起作用)
|
||||
qa_ent_filter_top_k = 10 # 实体过滤TopK
|
||||
qa_ppr_damping = 0.8 # PPR阻尼系数
|
||||
qa_res_top_k = 3 # 最终提供的文段TopK
|
||||
embedding_dimension = 1024 # 嵌入向量维度,应该与模型的输出维度一致
|
||||
qa_res_top_k = 3 # 最终提供段落TopK
|
||||
embedding_dimension = 1024 # 嵌入向量维度,输出维度一致
|
||||
# 性能与降级参数(低配机器可下调)
|
||||
# 低配机器参考:单/双核或内存≤4GB(如轻量云主机/云函数/开发板),建议先关闭PPR并降低并发
|
||||
max_embedding_workers = 3 # 嵌入/抽取并发线程数
|
||||
embedding_chunk_size = 4 # 每批嵌入的条数
|
||||
max_synonym_entities = 2000 # 同义边参与的实体数上限,超限则跳过
|
||||
enable_ppr = true # 是否启用PPR,低配机器可关闭
|
||||
|
||||
# keyword_rules 用于设置关键词触发的额外回复知识
|
||||
# 添加新规则方法:在 keyword_rules 数组中增加一项,格式如下:
|
||||
# { keywords = ["关键词1", "关键词2"], reaction = "触发这些关键词时的回复内容" }
|
||||
# 例如,添加一个新规则:当检测到“你好”或“hello”时回复“你好,有什么可以帮你?”
|
||||
# { keywords = ["你好", "hello"], reaction = "你好,有什么可以帮你?" }
|
||||
[keyword_reaction]
|
||||
keyword_rules = [
|
||||
{ keywords = ["人机", "bot", "机器", "入机", "robot", "机器人", "ai", "AI"], reaction = "有人说你是人机或者机器人,否定这一事实,攻击或反问他。注意,只有认为你是机器人才回复,否则不要否认" },
|
||||
|
|
@ -683,19 +726,35 @@ config:
|
|||
show_lpmm_paragraph = false # 是否显示lpmm找到的相关文段日志
|
||||
|
||||
[maim_message]
|
||||
auth_token = [] # 认证令牌,用于API验证,为空则不启用验证
|
||||
# 以下项目若要使用需要打开use_custom,并单独配置maim_message的服务器
|
||||
use_custom = false # 是否启用自定义的maim_message服务器,注意这需要设置新的端口,不能与.env重复
|
||||
host="127.0.0.1"
|
||||
port=8090
|
||||
mode="ws" # 支持ws和tcp两种模式
|
||||
use_wss = false # 是否使用WSS安全连接,只支持ws模式
|
||||
cert_file = "" # SSL证书文件路径,仅在use_wss=true时有效
|
||||
key_file = "" # SSL密钥文件路径,仅在use_wss=true时有效
|
||||
auth_token = [] # 认证令牌,用于旧版API验证,为空则不启用验证
|
||||
|
||||
# 新版API Server配置(额外监听端口)
|
||||
enable_api_server = false # 是否启用额外的新版API Server
|
||||
api_server_host = "0.0.0.0" # 新版API Server主机地址
|
||||
api_server_port = 8090 # 新版API Server端口号
|
||||
api_server_use_wss = false # 新版API Server是否启用WSS
|
||||
api_server_cert_file = "" # 新版API Server SSL证书文件路径
|
||||
api_server_key_file = "" # 新版API Server SSL密钥文件路径
|
||||
api_server_allowed_api_keys = [] # 新版API Server允许的API Key列表,为空则允许所有连接
|
||||
|
||||
[telemetry] #发送统计信息,主要是看全球有多少只麦麦
|
||||
enable = true
|
||||
|
||||
[webui] # WebUI 独立服务器配置
|
||||
# 注意: WebUI 的监听地址(host)和端口(port)已移至 .env 文件中的 WEBUI_HOST 和 WEBUI_PORT
|
||||
enabled = true # 是否启用WebUI
|
||||
mode = "production" # 模式: development(开发) 或 production(生产)
|
||||
|
||||
# 防爬虫配置
|
||||
anti_crawler_mode = "basic" # 防爬虫模式: false(禁用) / strict(严格) / loose(宽松) / basic(基础-只记录不阻止)
|
||||
allowed_ips = "127.0.0.1" # IP白名单(逗号分隔,支持精确IP、CIDR格式和通配符)
|
||||
# 示例: 127.0.0.1,192.168.1.0/24,172.17.0.0/16
|
||||
trusted_proxies = "" # 信任的代理IP列表(逗号分隔),只有来自这些IP的X-Forwarded-For才被信任
|
||||
# 示例: 127.0.0.1,192.168.1.1,172.17.0.1
|
||||
trust_xff = false # 是否启用X-Forwarded-For代理解析(默认false)
|
||||
# 启用后,仍要求直连IP在trusted_proxies中才会信任XFF头
|
||||
secure_cookie = false # 是否启用安全Cookie(仅通过HTTPS传输,默认false)
|
||||
|
||||
[experimental] #实验性功能
|
||||
# 为指定聊天添加额外的prompt配置
|
||||
# 格式: ["platform:id:type:prompt内容", ...]
|
||||
|
|
|
|||
Loading…
Reference in New Issue