Skip to content

常见使用场景

以下场景从“使用目标”出发,不需要你理解所有内部机制。

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)