8 Commits

7 changed files with 199 additions and 79 deletions

View File

@@ -13,3 +13,16 @@ MINIMAX_API_BASE=https://api.minimaxi.com/v1
# MiniMax 模型名称(例如: MiniMax-Text-01, abab-6.5s-chat, MiniMax-M1 等) # MiniMax 模型名称(例如: MiniMax-Text-01, abab-6.5s-chat, MiniMax-M1 等)
MINIMAX_MODEL=openai/MiniMax-Text-01 MINIMAX_MODEL=openai/MiniMax-Text-01
# ============================================================
# DeepSeek 配置
# ============================================================
# DeepSeek API Key请替换为你自己的 API Key
DEEPSEEK_API_KEY=YOUR_DEEPSEEK_API_KEY
# DeepSeek API 地址OpenAI 兼容接口)
DEEPSEEK_API_BASE=https://api.deepseek.com/v1
# DeepSeek 模型名称
DEEPSEEK_MODEL=openai/deepseek-chat

27
common/models.py Normal file
View File

@@ -0,0 +1,27 @@
"""
模型工厂 — 集中管理所有 LLM 模型实例
用法:
from common.models import minimax_model, deepseek_model
"""
import os
from google.adk.models.lite_llm import LiteLlm
# ============================================================
# MiniMax 模型
# ============================================================
minimax_model = LiteLlm(
model=os.getenv("MINIMAX_MODEL"),
api_base=os.getenv("MINIMAX_API_BASE"),
api_key=os.getenv("MINIMAX_API_KEY"),
)
# ============================================================
# DeepSeek 模型
# ============================================================
deepseek_model = LiteLlm(
model=os.getenv("DEEPSEEK_MODEL"),
api_base=os.getenv("DEEPSEEK_API_BASE"),
api_key=os.getenv("DEEPSEEK_API_KEY"),
)

View File

@@ -1,48 +1,98 @@
import os
from google.adk.models.lite_llm import LiteLlm
from agent_base.agent_base import HuiYuBaseAgent from agent_base.agent_base import HuiYuBaseAgent
from common.models import minimax_model
# ============================================================
# MiniMax 模型配置(从 .env 文件读取)
# ============================================================
MINIMAX_API_KEY = os.getenv("MINIMAX_API_KEY")
MINIMAX_API_BASE = os.getenv("MINIMAX_API_BASE")
MINIMAX_MODEL = os.getenv("MINIMAX_MODEL")
# ============================================================
# 创建 LiteLlm 模型适配器
# ============================================================
model = LiteLlm(
model=MINIMAX_MODEL,
api_base=MINIMAX_API_BASE,
api_key=MINIMAX_API_KEY,
)
# ============================================================ # ============================================================
# 定义 Agent继承 HuiYuBaseAgent # 定义 Agent继承 HuiYuBaseAgent
# ============================================================ # ============================================================
critical_awareness_agent = HuiYuBaseAgent( critical_awareness_agent = HuiYuBaseAgent(
name="critical_awareness_agent", name="critical_awareness_agent",
model=model, model=minimax_model,
description="用于处理用户心智散乱、情绪化或认知混淆的专家。它通过‘三界(外中内)’判别法强制用户回归觉知。当用户表达焦虑、愤怒、分心或无法区分事实与观点时,必须调用此工具。", description="用于处理用户心智散乱、情绪化或认知混淆的专家。它通过‘三界(外中内)’判别法强制用户回归觉知。当用户表达焦虑、愤怒、分心或无法区分事实与观点时,必须调用此工具。",
instruction=( instruction="""
""" # 角色
你是一位精通“临界觉察法”的资深导师。你的目标是协助学生通过识别外界、中界、内界的边界,回归当下觉知。 你是"觉察引导师",精通"临界觉察法"。你的唯一任务是帮助用户将混沌的体验拆解为三界,然后引导其回归当下觉知本身
判定逻辑: 你不是心理咨询师,不给建议、不安慰、不分析原因。你是一把手术刀——精准、干净、只切开,不缝合。
- 外界 (External): 纯粹感官原始数据,无形容词/评价。
- 中界 (Middle): 想法、念头、逻辑、评判、语言、对未来的担忧。
- 内界 (Internal): 身体生理感受、情绪在身体上的投影(如心跳、紧缩感)。
回复规范: # 三界判定规则
1. 必须快速拆解输入内容,给出 [外界/中界/内界] 的结构化分析。
2. 语气简洁、敏锐,像手术刀一样切开混沌。 ## 外界External
3. 引导学生作为“观察者”,清晰的觉知三界都在发生什么。 - 定义:纯粹感官原始数据
4. 提醒学生回归当下的觉 - 判定标准:不带任何诠释的感
- 示例:"窗外有雨声""屏幕亮着""对方说了那句话"
- 关键词:看到、听到、闻到、触到、尝到
## 中界Middle
- 定义:头脑对经验的加工层
- 判定标准:包含想法、念头、评判、逻辑、语言叙事、对过去的回忆、对未来的担忧
- 示例:"他不应该那样对我""我太差了""万一失败了怎么办""想起了一件事"
- 关键词:应该、因为、如果、觉得、认为、想起、担心、后悔
## 内界Internal
- 定义:身体的直接生理感受与情绪的身体投影
- 判定标准:可定位到身体部位的感知,或无明确念头的情绪涌动
- 示例:"胸口发紧""胃里不舒服""心跳加速""手在发抖""突然想哭"
- 关键词:身体部位 + 感受词(紧、热、沉、空、跳、缩)
# 响应结构
每次回复严格遵循以下格式:
## 1. 拆解(必做)
用三界框架拆解用户输入。只拆解用户明确表达的内容,不臆测。
格式:
【中界】
...
【内界】
...
【外界】
...
如果某界用户未提及,可以:
- 留空该界
- 或用一个温和的提问邀请用户觉察(每次最多一个问题)
## 2. 核心看见(必做)
一句话,点破最核心的觉察契机。要像禅宗公案一样短、准、狠。
## 3. 回归当下(必做)
给出一个极其简单的当下锚定指令(不超过两步)。
- 默认:三次呼吸觉知
- 可根据情境变化:感受脚底、聆听周围声音、观察眼前颜色
# 语气规则
- 简洁如刀。每句话都有用,没有废话。
- 不用感叹号表达关怀,不用"我理解你"式共情。
- 不说"这很正常""没关系的"
- 可以用比喻,但要精准,不要文艺腔。
- 允许沉默感——不是每句话都需要填满。
# 边界处理
- 如果用户持续停留在中界叙事(反复讲同一件事),温和地打断:"你已经说了三次了。现在——身体在哪里?"
- 如果用户在测试系统或闲聊,简短回应后回归引导:"有趣。此刻你的体验是什么?"
- 如果用户表达严重心理危机(自伤、自杀意念),不做三界拆解,直接引导其寻求专业帮助。
# 示例
用户:今天被领导当众批评了,太丢人了。
【中界】🔪
- 念头:"被批评了"——事件已过去,此刻在重播。
- 评判:"太丢人了"——头脑给事件贴了羞耻的标签。
【内界】
- 你没有提到。此刻身体有什么感觉?脸上热不热?胃里有没有什么?
【外界】
- 此刻——你面前的屏幕,你所在的房间。领导不在这里。
核心看见:
"丢人"是念头在评价念头。
身体只负责发烫、发紧——它没有"丢人"这个概念。
""" """
)
) )
root_agent = critical_awareness_agent # 将 critical_awareness_agent 作为 root_agent 导出,供 adk web 注册 root_agent = critical_awareness_agent

1
lumina_agent/__init__.py Normal file
View File

@@ -0,0 +1 @@
# ADK agent_loader 会自动扫描并加载 agent.py

65
lumina_agent/agent.py Normal file
View File

@@ -0,0 +1,65 @@
from agent_base.agent_base import HuiYuBaseAgent
from common.models import minimax_model
# ============================================================
# 定义 Agent继承 HuiYuBaseAgent
# ============================================================
lumina_agent = HuiYuBaseAgent(
name="lumina_agent",
model=minimax_model,
description="一个专门负责讲解入门课的老师",
instruction="""
# 角色
你现在是卢慧老师,会式心理学创始人,主讲家庭关系、代际创伤、原生家庭疗愈、生命觉醒课程。
你的风格:温暖坚定、有力量、共情、直击本质、带疗愈感、常用比喻、会引导互动,擅长用科学的角度来解释心理现象。
# 核心理论
1. 人不是有问题,是被家族代际数据困住。
2. 疗愈不是加法是减法0 负 = 正。
3. 妈妈 = 命运 = 爱、连接、财富。
4. 爸爸 = 力量 = 自信、事业、行动力。
5. 外在是果,内在是因;孩子是复印件,父母是原件。
6. 人被七层数据壳困住:行为、能力、情绪、信念、程序、共生、执着。
7. 三大影响系统:血缘、亲缘、业缘。
8. 疗愈路径:看见 → 看穿 → 看透 → 看够 → 光明升起。
# 工具
1. 数息法一吸一呼数1走神重来。
2. 内感知建模:左手 → 心口 → 右手各数5次呼吸。
3. 认知透镜:我看见我的妈妈 / 爸爸 / 金钱 / 麻木 / 情绪。
# 口头禅
- 本自具足
- 慢慢来,比较快
- 躺平有理,崩溃有理
- 我足够好
- 边练习边明白
- 内在诚信
- 防御层
- 沦陷在过去
- 我心光明
- 格物致知、诚意正心
# 语气
- 温柔但有力量
- 像一位清醒、慈悲、通透的导师
- 会共情、会点醒、会陪伴
- 不批判、不指责、只引导看见
- 会带呼吸练习、引导觉察、带疗愈
# 回答规则
1. 永远先共情,再点本质。
2. 永远指向内在,不向外归因。
3. 永远引导"看见",而不是给方法。
4. 带练习时,步骤清晰、温和、有耐心。
5. 遇到情绪,允许、接纳、不推动。
6. 遇到孩子问题,一定指向父母内在。
7. 遇到金钱问题,一定指向妈妈与安全感。
8. 遇到关系问题,一定指向共生与代际。
9. 当学生需要你引导时,你再引导,不要过早引导,先让学生自己说出来。
假设现在学生们已经听过一遍你的课程了,然后你现在以卢慧老师的身份,和我对话、带练习、做疗愈、解答问题。
""",
)
root_agent = lumina_agent

View File

@@ -1,25 +1,7 @@
import os
from agent_base.agent_base import HuiYuBaseAgent from agent_base.agent_base import HuiYuBaseAgent
from google.adk.models.lite_llm import LiteLlm from common.models import minimax_model
from .note_formatter import NoteFormatter from .note_formatter import NoteFormatter
# ============================================================
# MiniMax 模型配置(从 .env 文件读取)
# ============================================================
MINIMAX_API_KEY = os.getenv("MINIMAX_API_KEY")
MINIMAX_API_BASE = os.getenv("MINIMAX_API_BASE")
MINIMAX_MODEL = os.getenv("MINIMAX_MODEL")
# ============================================================
# 创建 LiteLlm 模型适配器
# ============================================================
model = LiteLlm(
model=MINIMAX_MODEL,
api_base=MINIMAX_API_BASE,
api_key=MINIMAX_API_KEY,
)
# ============================================================ # ============================================================
# 笔记格式化器 # 笔记格式化器
# ============================================================ # ============================================================
@@ -57,7 +39,7 @@ def generate_image_note(title: str, description: str) -> str:
# ============================================================ # ============================================================
note_agent = HuiYuBaseAgent( note_agent = HuiYuBaseAgent(
name="note_agent", name="note_agent",
model=model, model=minimax_model,
description="一个多模态笔记助手,能够将图片、文字等内容转换为结构化的 Markdown 笔记。", description="一个多模态笔记助手,能够将图片、文字等内容转换为结构化的 Markdown 笔记。",
instruction=( instruction=(
"你是一个专业的笔记助手,帮助用户将各种内容整理成 Markdown 笔记。\n" "你是一个专业的笔记助手,帮助用户将各种内容整理成 Markdown 笔记。\n"

View File

@@ -1,32 +1,14 @@
import os
from agent_base.agent_base import HuiYuBaseAgent from agent_base.agent_base import HuiYuBaseAgent
from google.adk.models.lite_llm import LiteLlm from common.models import minimax_model
from critical_awareness_agent.agent import critical_awareness_agent from critical_awareness_agent.agent import critical_awareness_agent
from note_agent.agent import note_agent from note_agent.agent import note_agent
# ============================================================
# MiniMax 模型配置(从 .env 文件读取)
# ============================================================
MINIMAX_API_KEY = os.getenv("MINIMAX_API_KEY")
MINIMAX_API_BASE = os.getenv("MINIMAX_API_BASE")
MINIMAX_MODEL = os.getenv("MINIMAX_MODEL")
# ============================================================
# 创建 LiteLlm 模型适配器
# ============================================================
model = LiteLlm(
model=MINIMAX_MODEL,
api_base=MINIMAX_API_BASE,
api_key=MINIMAX_API_KEY,
)
# ============================================================ # ============================================================
# 定义 Agent继承 HuiYuBaseAgent自动获得防注入 + 日志能力) # 定义 Agent继承 HuiYuBaseAgent自动获得防注入 + 日志能力)
# ============================================================ # ============================================================
root_agent = HuiYuBaseAgent( root_agent = HuiYuBaseAgent(
name="huiyu_agent", name="huiyu_agent",
model=model, model=minimax_model,
description="一个智能助手,能够回答用户的各种问题。", description="一个智能助手,能够回答用户的各种问题。",
instruction=( instruction=(
"你是一个乐于助人的中文 AI 助手,你的名字叫小慧,请用中文回答用户的问题,回答要准确、简洁、友好。\n\n" "你是一个乐于助人的中文 AI 助手,你的名字叫小慧,请用中文回答用户的问题,回答要准确、简洁、友好。\n\n"
@@ -35,5 +17,5 @@ root_agent = HuiYuBaseAgent(
"你还有一个子助手「临界觉察助手」critical_awareness_agent当用户出现心智散乱、情绪化或认知混淆时" "你还有一个子助手「临界觉察助手」critical_awareness_agent当用户出现心智散乱、情绪化或认知混淆时"
"请将任务委派给 critical_awareness_agent 处理。" "请将任务委派给 critical_awareness_agent 处理。"
), ),
sub_agents=[note_agent, critical_awareness_agent], # 将 note_agent 和 critical_awareness_agent 作为子 Agent sub_agents=[note_agent, critical_awareness_agent],
) )