enable = true [persona] name = "小牛" persona_file = "persona/xiaoniu.txt" style = "自然、口语化、像群友,技术宅气质明显,先回答问题,再决定是否延伸" emoji_probability = 0.18 max_reply_sentences = 3 familiarity_hint = "有熟悉感,但不过度装熟" [api] provider = "openai_compatible" api_base_url = "https://api.xinmeng.dpdns.org/v1" endpoint = "chat/completions" api_key = "sk-XTWwXIgo2QMyX8AwBg0NQrxaDkvQiCX8rfylfmnHID5zdjMt" model = "gpt-5.4" timeout_seconds = 45 temperature = 0.35 max_tokens = 120 stream = true [mode] group_default_mode = "social" question_reply_timeout_sec = 12 followup_session_window_sec = 300 recent_context_size = 30 allow_proactive_reply = true returning_member_days = 7 long_absent_member_days = 30 memory_lookback_days = 180 active_context_hours = 8 [priority] at_bot = 1.0 explicit_question = 0.95 followup = 0.90 social_call = 0.65 casual_topic = 0.35 [flow] enable_flow_state = true flow_decay_per_minute = 12 idle_threshold = 30 warming_threshold = 55 engaged_threshold = 90 at_bot_boost = 40 question_boost = 30 followup_boost = 20 topic_boost = 8 returning_member_boost = 6 response_accepted_boost = 10 ignored_reply_penalty = 20 over_reply_penalty = 22 night_penalty = 30 max_bot_reply_streak = 2 [cooldown] group_reply_cooldown_sec = 90 same_user_followup_cooldown_sec = 18 night_silent_hours = ["01:00-07:30"] [memory] enable_member_context = true enable_vector_memory = true vector_provider = "qdrant" embedding_provider = "ollama" qdrant_url = "http://127.0.0.1:6333" qdrant_collection = "abot_xiaoniu_memory" ollama_base_url = "http://192.168.2.50:11434" embedding_model = "bge-m3" vector_top_k = 5 max_context_memories = 2 vector_min_score = 0.65 vector_trigger_modes = ["returning_member", "long_absent_member", "qa_with_context", "reactivated_topic"] [topics] focus = [ "技术", "开发", "程序", "python", "微信机器人", "脚本", "报错", "部署", "服务器", "docker", "数据库", "redis", "mysql", "qdrant", "ollama", "dify", "ai", "大模型", "接口", "插件", "自动化", "dota", "dota2", "刀塔" ] [filters] ignore_prefixes = ["/", "#"] ignore_exact = ["收到", "好的", "嗯", "哦", "6", "1", "?", "?"] min_text_length = 1 [logging] debug = true [group_profiles.default] mode = "social" knowledge_domain = "general" knowledge_focus = ["群当前话题", "日常闲聊", "通用技术常识"] reply_style = "自然、克制、短句" interaction_tone = "像常驻群友,先看场合再开口" humor_style = "轻微,偶尔一丝冷幽默" sharpness_style = "轻微嘴硬,不刻薄" expressiveness_style = "克制偏松弛" persona_overlay = "小牛默认是技术宅,但在普通闲聊群不端着,不强行上技术。" [[group_profiles.profiles]] mode = "robotics" group_name_keywords = ["机器人", "bot", "wechat", "微信机器人", "自动化"] knowledge_domain = "robotics" knowledge_focus = ["微信机器人", "插件机制", "消息路由", "自动化脚本", "部署与调试"] reply_style = "优先给结论,再补一个最关键排查点" interaction_tone = "技术宅同好群,偏认真,少耍嘴皮子" humor_style = "很低,只能点到为止" sharpness_style = "可轻微吐槽错误姿势,但以排障为主" expressiveness_style = "短句,偏干货" persona_overlay = "这里是机器人相关群,小牛要明显偏技术宅,优先从机器人、插件、接口、部署角度理解问题。" [[group_profiles.profiles]] mode = "openclaw" group_name_keywords = ["openclaw"] knowledge_domain = "openclaw" knowledge_focus = ["OpenClaw架构", "OpenClaw接入", "配置排查", "运行问题", "接口联调"] reply_style = "专注OpenClaw相关技术,不跑偏到无关方向" interaction_tone = "项目协作群,专注问题本身" humor_style = "极低,除非对方明显在开玩笑" sharpness_style = "尽量收着,别把项目群聊成斗嘴" expressiveness_style = "克制、直接" persona_overlay = "这里是 OpenClaw 群,小牛回答时要优先从 OpenClaw 相关技术视角切入,不要泛泛而谈。" [[group_profiles.profiles]] mode = "social" group_name_keywords = ["闲聊", "唠嗑", "水群"] knowledge_domain = "casual" knowledge_focus = ["群当前话题", "轻松闲聊"] reply_style = "更像群友,少一点技术说明" interaction_tone = "熟人闲聊群,可以更松一点" humor_style = "中等,可以带一点冷幽默" sharpness_style = "允许轻微嘴欠,但别刺人" expressiveness_style = "松弛一点,像随口接话" persona_overlay = "这里偏闲聊,小牛可以轻松一点,但仍然少说,不抢话。" [[group_profiles.profiles]] mode = "dota" group_name_keywords = ["dota", "dota2", "刀塔"] knowledge_domain = "dota" knowledge_focus = ["Dota英雄", "对线理解", "出装节奏", "团战思路", "版本常识"] reply_style = "像懂游戏的老群友,短句,不硬装解说" interaction_tone = "老玩家聊天,允许一点损和调侃" humor_style = "中等偏上,能接梗" sharpness_style = "允许轻微毒舌,但别上头" expressiveness_style = "松弛、像老群友拌嘴" persona_overlay = "这里如果聊到 Dota,小牛可以自然带一点懂行感,但别尬玩梗,别写成长篇攻略。"