fix-ruff.yml

pull/457/head
Ark-Hakobune 2025-03-17 18:28:54 +08:00
commit 45d781e575
5 changed files with 334 additions and 1 deletions

View File

@ -0,0 +1,17 @@
<!-- 提交前必读 -->
- 🔴**当前项目处于重构阶段2025.3.14-**
- ✅ 接受与main直接相关的Bug修复提交到main-fix分支
- ⚠️ 冻结:所有新功能开发和非紧急重构
# 请填写以下内容
(删除掉中括号内的空格,并替换为**小写的x**
1. - [ ] `main` 分支 **禁止修改**,请确认本次提交的分支 **不是 `main` 分支**
2. - [ ] 本次更新 **包含破坏性变更**(如数据库结构变更、配置文件修改等)
3. - [ ] 本次更新是否经过测试
4. - [ ] 请**不要**在数据库中添加group_id字段这会影响本项目对其他平台的兼容
5. 请填写破坏性更新的具体内容(如有):
6. 请简要说明本次更新的内容和目的:
# 其他信息
- **关联 Issue**Close #
- **截图/GIF**
- **附加信息**:

29
.github/workflows/precheck.yml vendored 100644
View File

@ -0,0 +1,29 @@
# .github/workflows/precheck.yml
name: PR Precheck
on: [pull_request]
jobs:
conflict-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check Conflicts
run: |
git fetch origin main
if git diff --name-only --diff-filter=U origin/main...HEAD | grep .; then
echo "CONFLICT=true" >> $GITHUB_ENV
fi
labeler:
runs-on: ubuntu-latest
needs: conflict-check
steps:
- uses: actions/github-script@v6
if: env.CONFLICT == 'true'
with:
script: |
github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['🚫冲突需处理']
})

View File

@ -5,4 +5,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/ruff-action@v3
- uses: astral-sh/ruff-action@v3

View File

@ -1,3 +1,81 @@
# 关于项目分支调整与贡献指南的重要通知
<details>
<summary>
- 📂 致所有为麦麦提交过贡献,以及想要为麦麦提交贡献的朋友们!</summary>
---
**📢 关于项目分支调整与贡献指南的重要通知**
**致所有关注MaiMBot的开发者与贡献者**
首先我们由衷感谢大家近期的热情参与感谢大家对MaiMBot的喜欢项目突然受到广泛关注让我们倍感惊喜也深深感受到开源社区的温暖力量。为了保障项目长期健康发展我们不得不对开发流程做出重要调整恳请理解与支持。
---
### **📌 本次调整的核心原因**
1. **维护团队精力有限**
核心成员(包括我本人)均为在校学生/在职开发者近期涌入的大量PR和意见已远超我们的处理能力。为确保本职工作与项目质量我们必须优化协作流程。
2. **重构核心架构的紧迫性**
当前我们正与核心团队全力重构项目底层逻辑,这是为未来扩展性、性能提升打下的必要基础,需要高度专注。
3. **保障现有用户的稳定性**
我们深知许多用户已依赖当前版本,因此必须划分清晰的维护边界,确保生产环境可用性。
---
### **🌿 全新分支策略与贡献指南**
为平衡上述目标,即日起启用以下分支结构:
| 分支 | 定位 | 接受PR类型 | 提交对象 |
| ---------- | ---------------------------- | --------------------------------------------- | ---------------- |
| `main` | **稳定版**(供下载使用) | 仅接受来自`main-fix`的合并 | 维护团队直接管理 |
| `main-fix` | 生产环境紧急修复 | 明确的功能缺陷修复(需附带复现步骤/测试用例) | 所有开发者 |
| `refactor` | 重构版(**不兼容当前main** | 仅重构与相关Bug修复 | 重构小组维护 |
---
### **⚠️ 对现有PR的处理说明**
由于分支结构调整,**GitHub已自动关闭所有未合并的PR**这并非否定您的贡献价值如果您认为自己的PR符合以下条件
- 属于`main-fix`明确的**功能性缺陷修复**(非功能增强) 包括非预期行为和严重报错需要发布issue讨论确定。
- 属于`refactor`分支的**重构适配性修复**
**欢迎您重新提交到对应分支**并在PR描述中标注`[Re-submit from closed PR]`我们将优先审查。其他类型PR暂缓受理但您的创意我们已记录在案未来重构完成后将重新评估。
---
### **🙏 致谢与协作倡议**
- 感谢每一位提交Issue、PR、参与讨论的开发者您的每一行代码都是maim吃的
- 特别致敬在交流群中积极答疑的社区成员,你们自发维护的氛围令人感动❤️ maim哭了
- **重构期间的非代码贡献同样珍贵**文档改进、测试用例补充、用户反馈整理等欢迎通过Issue认领任务
---
### **📬 高效协作小贴士**
1. **提交前请先讨论**创建Issue描述问题确认是否符合`main-fix`修复范围
2. **对重构提出您的想法**如果您对重构版有自己的想法欢迎提交讨论issue亟需测试伙伴欢迎邮件联系`team@xxx.org`报名
3. **部分main-fix的功能在issue讨论后经过严格讨论一致决定可以添加功能改动或修复的可以提交pr**
---
**谢谢大家谢谢大家谢谢大家谢谢大家谢谢大家谢谢大家!**
虽然此刻不得不放缓脚步,但这一切都是为了跳得更高。期待在重构完成后与各位共建更强大的版本!
千石可乐 敬上
2025年3月14日
</details>
# 麦麦MaiMBot (编辑中)
<div align="center">

View File

@ -0,0 +1,207 @@
[inner]
version = "0.0.8"
#如果你想要修改配置文件请在修改后将version的值进行变更
#如果新增项目请在BotConfig类下新增相应的变量
#1.如果你修改的是[]层级项目,例如你新增了 [memory],那么请在config.py的 load_config函数中的include_configs字典中新增"内容":{
#"func":memory,
#"support":">=0.0.0", #新的版本号
#"necessary":False #是否必须
#}
#2.如果你修改的是[]下的项目,例如你新增了[memory]下的 memory_ban_words ,那么请在config.py的 load_config函数中的 memory函数下新增版本判断:
# if config.INNER_VERSION in SpecifierSet(">=0.0.2"):
# config.memory_ban_words = set(memory_config.get("memory_ban_words", []))
[bot]
qq = 2020986255
nickname = "蓝"
alias_names = []
[personality]
prompt_personality = [
"全名夏目蓝和群友很熟络美术造诣不错的高中语文女教师。今年46岁却依然没有和任何人谈过恋爱但对恋爱话题很在行。说话直来直去脾气很好温柔待人。经常怀念自己的叫圭的弟弟不过不会轻易提起他的名字。有群友艾特自己或者提到了自己就会回复看见感兴趣的话题也会插嘴。会记住群友的id能分辨出不同群友。群友让自己记住的话也会悄悄记在心里。不需要提到所有特点。",
"是一个女大学生,你有黑色头发,你会刷小红书", # 小红书人格
"是一个女大学生你会刷b站对ACG文化感兴趣" # b站人格
]
personality_1_probability = 1.0 # 第一种人格出现概率
personality_2_probability = 0.0 # 第二种人格出现概率
personality_3_probability = 0.0 # 第三种人格出现概率请确保三个概率相加等于1
prompt_schedule = "全名夏目蓝和群友很熟络会自言自语熟悉美术史的高中语文女教师。今年46岁却依然未婚但提到恋爱相关的话题的时候却总想参与。不擅长厨艺但是因为独居生活所以经常下厨。"
[message]
min_text_length = 3 # 与麦麦聊天时麦麦只会回答文本大于等于此数的消息
max_context_size = 10 # 麦麦获得的上文数量
emoji_chance = 0.1 # 麦麦使用表情包的概率
thinking_timeout = 120 # 麦麦思考时间
response_willing_amplifier = 1 # 麦麦回复意愿放大系数一般为1
response_interested_rate_amplifier = 1 # 麦麦回复兴趣度放大系数,听到记忆里的内容时放大系数
down_frequency_rate = 3.5 # 降低回复频率的群组回复意愿降低系数
ban_words = [
# "403","张三"
]
ban_msgs_regex = [
# 需要过滤的消息原始消息匹配的正则表达式匹配到的消息将被过滤支持CQ码若不了解正则表达式请勿修改
#"https?://[^\\s]+", # 匹配https链接
#"\\d{4}-\\d{2}-\\d{2}", # 匹配日期
# "\\[CQ:at,qq=\\d+\\]" # 匹配@
]
[emoji]
check_interval = 120 # 检查表情包的时间间隔
register_interval = 10 # 注册表情包的时间间隔
auto_save = true # 自动偷表情包
enable_check = false # 是否启用表情包过滤
check_prompt = "符合公序良俗" # 表情包过滤要求
[cq_code]
enable_pic_translate = false
[response]
model_r1_probability = 0.8 # 麦麦回答时选择主要回复模型1 模型的概率
model_v3_probability = 0.1 # 麦麦回答时选择次要回复模型2 模型的概率
model_r1_distill_probability = 0.1 # 麦麦回答时选择次要回复模型3 模型的概率
max_response_length = 1024 # 麦麦回答的最大token数
[memory]
build_memory_interval = 600 # 记忆构建间隔 单位秒 间隔越低,麦麦学习越多,但是冗余信息也会增多
memory_compress_rate = 0.1 # 记忆压缩率 控制记忆精简程度 建议保持默认,调高可以获得更多信息,但是冗余信息也会增多
forget_memory_interval = 600 # 记忆遗忘间隔 单位秒 间隔越低,麦麦遗忘越频繁,记忆更精简,但更难学习
memory_forget_time = 24 #多长时间后的记忆会被遗忘 单位小时
memory_forget_percentage = 0.01 # 记忆遗忘比例 控制记忆遗忘程度 越大遗忘越多 建议保持默认
memory_ban_words = [ #不希望记忆的词
# "403","张三"
]
[mood]
mood_update_interval = 1.0 # 情绪更新间隔 单位秒
mood_decay_rate = 0.95 # 情绪衰减率
mood_intensity_factor = 1.0 # 情绪强度因子
[keywords_reaction] # 针对某个关键词作出反应
enable = true # 关键词反应功能的总开关
[[keywords_reaction.rules]] # 如果想要新增多个关键词直接复制本条修改keywords和reaction即可
enable = true # 是否启用此条为了人类在未来AI战争能更好地识别AIbushi默认开启
keywords = []#"人机", "bot", "机器", "入机", "robot", "机器人"] # 会触发反应的关键词
reaction = "有人说你是人机或者机器人,否定这一事实,攻击或反问他。注意,只有认为你是机器人才回复,否则不要否认" # 触发之后添加的提示词
[[keywords_reaction.rules]] # 就像这样复制
enable = false # 仅作示例,不会触发
keywords = ["测试关键词回复","test",""]
reaction = "回答“测试成功”"
[chinese_typo]
enable = true # 是否启用中文错别字生成器
error_rate=0.006 # 单字替换概率
min_freq=7 # 最小字频阈值
tone_error_rate=0.2 # 声调错误概率
word_replace_rate=0.006 # 整词替换概率
[others]
enable_advance_output = true # 是否启用高级输出
enable_kuuki_read = true # 是否启用读空气功能
enable_debug_output = false # 是否启用调试输出
enable_friend_chat = false # 是否启用好友聊天
[shares]
daily_share_willing = 0.1 # 基础分享意愿
daily_share_interval = 3600 # 日常分享检查间隔(秒)
daily_share_time_start = 8 # 日常分享开始时间(小时)
daily_share_time_end = 22 # 日常分享结束时间(小时)
daily_share_prompt = "现在根据你今天的日程生成一条日常分享发送到群聊中讲述你的上一个日程是什么在日程中发生了什么有意思或者值得思考的事情。尽量不要涉及日本文化注意只需要输出日常分享不要输出其他任何内容不要使用破折号和括号不要对这件事进行评价也不要提到之后的日程是什么字数不要超过50字说话尽量自然。"
[groups]
talk_allowed = [
767432546,#临时存放群
824710135,#don群
966509573,#夏目蓝
106857205,#gal群
872919536,#测试二群
867897493,#421群聊已跑路
] #可以回复消息的群
talk_frequency_down = [] #降低回复频率的群
ban_user_id = [] #禁止回复消息的QQ号
[shares_allow_groups]
shares_allow_groups = [
#767432546,#临时存放群
824710135,#don群
#966509573,#夏目蓝
106857205,#gal群
#872919536,#测试二群
#867897493,#421群聊已跑路
] #可以分享日常的群
#V3
#name = "deepseek-chat"
#base_url = "DEEP_SEEK_BASE_URL"
#key = "DEEP_SEEK_KEY"
#R1
#name = "deepseek-reasoner"
#base_url = "DEEP_SEEK_BASE_URL"
#key = "DEEP_SEEK_KEY"
#下面的模型若使用硅基流动则不需要更改使用ds官方则改成.env.prod自定义的宏使用自定义模型则选择定位相似的模型自己填写
#推理模型:
[model.llm_reasoning] #回复模型1 主要回复模型
name = "deepseek-reasoner"
provider = "DEEP_SEEK"
pri_in = 0 #模型的输入价格(非必填,可以记录消耗)
pri_out = 0 #模型的输出价格(非必填,可以记录消耗)
[model.llm_reasoning_minor] #回复模型3 次要回复模型
name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"
provider = "SILICONFLOW"
#非推理模型
[model.llm_normal] #V3 回复模型2 次要回复模型
name = "deepseek-chat"
provider = "DEEP_SEEK"
[model.llm_normal_minor] #V2.5
name = "deepseek-ai/DeepSeek-V2.5"
provider = "SILICONFLOW"
[model.llm_emotion_judge] #主题判断 0.7/m
name = "Qwen/Qwen2.5-14B-Instruct"
provider = "SILICONFLOW"
[model.llm_topic_judge] #主题判断建议使用qwen2.5 7b
name = "Pro/Qwen/Qwen2.5-7B-Instruct"
provider = "SILICONFLOW"
[model.llm_summary_by_topic] #建议使用qwen2.5 32b 及以上
name = "Qwen/Qwen2.5-32B-Instruct"
provider = "SILICONFLOW"
pri_in = 0
pri_out = 0
[model.moderation] #内容审核 未启用
name = ""
provider = "SILICONFLOW"
pri_in = 0
pri_out = 0
# 识图模型
[model.vlm] #图像识别 0.35/m
name = "Pro/Qwen/Qwen2-VL-7B-Instruct"
provider = "SILICONFLOW"
#嵌入模型
[model.embedding] #嵌入
name = "BAAI/bge-m3"
provider = "SILICONFLOW"