常见使用场景
以下场景从“使用目标”出发,不需要你理解所有内部机制。
1) 我的模型支持无限长度上下文
目标:不做任何截断,只保留完整对话。
推荐方案:使用 Quick Session(只记录)。
python
agent.enable_quick_session()
# ... 对话 ...
print(agent.session.full_chat_history)注意:即便模型允许无限上下文,成本和延迟仍可能增长。
2) 模型服务端会自己管理上下文
目标:由服务端(如 thread/session id)管理上下文,本地只做记录。
推荐方案:不要 attach Session(避免自动注入 chat_history),单独维护一个 Session 作为日志。
python
from agently.core import Session
log_session = Session().use_lite(chars=0, messages=0)
# 请求模型时不 attach session
reply = agent.input("...").get_text()
# 手动记录
log_session.append_message({"role": "user", "content": "..."})
log_session.append_message({"role": "assistant", "content": reply})备注:如果未来希望恢复对话,可用 log_session.to_json() 导出。
3) 我已经维护好 memo,该如何继续使用?
目标:把 memo 注入 prompt 或持久化存储。
常见做法:
python
# 直接注入 prompt
agent.info({"memo": agent.session.memo})
# 或构造 system/instruct
agent.system(f"User memo: {agent.session.memo}")持久化:
python
saved = agent.session.to_json()
# 下次恢复
agent.enable_quick_session(load=saved)4) 有限上下文模型上实现“无限长度”对话
目标:用 memo + 滑动窗口让对话可持续。
推荐方案:
python
from agently.core import Session
session = Session(agent=agent).configure(
mode="memo",
limit={"chars": 6000, "messages": 12},
every_n_turns=2,
)
agent.attach_session(session)关键点:
current_chat_history始终受限(控制成本)memo持续累积稳定信息- 需要更强摘要时:
session.resize(force="deep") - 若要完整回放:同时把
full_chat_history导出到外部存储
5) 多用户 / 多会话隔离
目标:每个用户一个会话。
python
from agently.core import Session
sessions = {}
def get_session(user_id):
if user_id not in sessions:
sessions[user_id] = Session().use_memo(chars=6000, messages=12)
return sessions[user_id]
agent.attach_session(get_session(user_id))6) 低成本快速问答
目标:不做 memo,只保留最近窗口。
python
agent.enable_session_lite(chars=8000, messages=6)7) 需要审计 / 导出对话
目标:保存完整历史用于审计或复盘。
python
agent.enable_quick_session()
# ... 对话 ...
backup = agent.session.to_json()8) 你有自己的摘要系统
目标:用自研摘要替换默认 memo 更新。
python
def custom_memo(memo, messages, attachments, settings):
# 调你的摘要服务
return memo
session.set_memo_update_handler(custom_memo)