|
为高拟真度 AI 角色实现自动上下文管理的完整方案。
┌─────────────────────────────────────────────────────────────┐
│ Prompt 构建结构 │
├─────────────────────────────────────────────────────────────┤
│ [System Prompt] ← 核心记忆 (永不压缩) │
│ ───────────────────────────────────────────────────────── │
│ 【历史摘要】 ← 长期记忆 (压缩后的摘要) │
│ 【用户档案】 ← 结构化用户信息 │
│ ───────────────────────────────────────────────────────── │
│ [近期消息] ← 工作记忆 (保留最近 N 条) │
│ ───────────────────────────────────────────────────────── │
│ [用户新消息] ← 当前输入 │
└─────────────────────────────────────────────────────────────┘
python
from scripts.memory_manager import (
AutoSummarizationLoop,
MemoryConfig,
MemoryBlock,
TriggerType
)
python
config = MemoryConfig(
max_tokens=200000, # 最大上下文限制
softlimitratio=0.7, # 70% 时异步压缩
hardlimitratio=0.9, # 90% 时同步拦截
working_messages=20, # 保留最近 20 条
summarymaxtokens=2000, # 摘要最大长度
summarizefn=yoursummarize_func # 摘要生成函数
)
python
manager = AutoSummarizationLoop(config)
memory = MemoryBlock(
core_memory=你是埃隆·马斯克...,
working_memory=[],
longtermsummary=
)
| 阈值 | 状态 | 动作 |
|---|---|---|
| < 70% | 正常 | 继续 |
| 70-90% |
python
async def summarizefn(oldtext: str, oldsummary: str, maxtokens: int) -> dict:
prompt = f请总结以下对话...
旧摘要:{old_summary}
{old_text}
输出 JSON:{{summary: ..., user_facts: {{}}}}
result = await call_model(prompt, model=mini)
return json.loads(result)
提示词模板详见 references/summary_prompts.md
session/
├── core_memory # System Prompt
├── working_memory # 最近消息 (JSON 数组)
├── longtermsummary # 压缩后的摘要
├── user_facts # 用户档案
└── last_update # 最后更新时间
python
async def chat(sessionid: str, usermessage: str):
session = loadsession(sessionid)
# 检查是否需要压缩
trigger = manager.checkwatermark(session.workingmemory)
if trigger != TriggerType.NORMAL:
await manager.handle_trigger(trigger, session)
# 构建消息
messages = manager.buildprompt(usermessage, session)
# 调用大模型
response = await call_api(messages)
# 保存到工作记忆
session.workingmemory.append({role: user, content: usermessage})
session.working_memory.append({role: assistant, content: response})
savesession(sessionid, session)
return response
生成摘要时确保包含:
这样大模型在读取摘要时能更精准地把握用户特征。
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 auto-summarization-loop-1776276613 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 auto-summarization-loop-1776276613 技能
skillhub install auto-summarization-loop-1776276613
文件大小: 9.62 KB | 发布时间: 2026-4-17 14:09