news 2026/9/10 21:47:23

Jan Agent 长会话如何监控上下文占用并手动触发 /compact 压缩?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jan Agent 长会话如何监控上下文占用并手动触发 /compact 压缩?

Jan Agent 长会话如何监控上下文占用并手动触发 /compact 压缩?

【免费下载链接】janJan is an open source alternative to ChatGPT that runs 100% offline on your computer.项目地址: https://gitcode.com/GitHub_Trending/ja/jan

在 Jan Agent 终端控制台里跑长会话时,模型上下文窗口迟早会被填满,旧轮次需要被总结压缩来腾出空间。本文介绍如何在看板(header)、轮次回执和/context覆盖层里持续观察上下文占用,在开始大型子任务前手动执行/compact释放空间,以及理解自动压缩的触发条件。适用前提是已按 QuickStart 完成安装并配置好一个 provider,在项目目录下用jan进入交互式控制台。

在控制台里跟踪上下文占用

jan(无子命令)打开控制台后,顶部 header 会显示实时的上下文用量:

jan agent tokamak-1-preview 10:40:49 turn 1/400 ctx 6K/128K 30.1/s [ready]

(以上为文档示例输出。)其中ctx 6K/128K表示当前占用的上下文与窗口大小的比例,它在每个请求落定时更新,而不是只在轮次结束时才变。

每个轮次结束时会有一条回执:

2026-07-29 11:32:02 ↑ 43K ↓ 1.1K ⏱ 1.8s ⚡ 109.8/s

是发送给模型的上下文大小,是本次产生的 token 数,之后是耗时和吞吐。两个数字刻意不同:上下文是请求的大小,输出是模型实际返回的内容。

用 /context 覆盖层查看占用构成

在输入框中键入:

/context

会在正在进行的转录画面上方打开一个居中的覆盖层(当前轮次在背后继续运行)。覆盖层里包含:

  • 一条表示占用百分比的轨(rail),视觉条上^标记当前用量位置,标记自动压缩预留区(auto-compact reserve zone);
  • token 刻度和一行余量提示(N tokens available before auto-compact);
  • 按类别的占用明细:System prompt、System tools、Project context、Skills、Messages。

EscqCtrl+C关闭,关闭不会取消正在运行的轮次。

两点判断依据需要注意:

  • 主占用数优先使用 provider 返回的prompt_tokens。在压缩、rewind 或 resume 之后 provider 计数会重置,此时数字回退为估算值(标注estimated),并在下一次请求后回到真实值。
  • 报告是键入/context时刻的快照,打开后数字保持不变,需要重新打开才会刷新。

手动触发 /compact 压缩

/compact

该命令把较旧的轮次总结起来以释放上下文,适合在长会话中开始一个新的大型子任务之前执行,避免新工作一开始就和既有历史争夺空间。

文档同时给出的判断边界:如果会话已经偏到了无用的方向,/new往往比/compact更好——压缩保留了会话线索,包括把对话带偏的那部分。

自动压缩的触发条件

接近窗口时,Jan Agent 会自动总结旧轮次腾出空间。相关配置位于项目的agent.toml(即.jan/agent/agent.toml,详见 Project Config):

[agent] context_window = 128000 # defaults to 128K compaction_reserve_tokens = 16384 # defaults to 16K
  • context_window:上下文上限(token 数),默认128000
  • compaction_reserve_tokens:为压缩操作保留的余量,默认16384

占用接近context_window - compaction_reserve_tokens时触发自动压缩。触发后会话历史被替换为压缩版本,控制台会明确提示(文档示例):

auto-compacted 84 -> 31 messages (ctx 96K/128K)

看到这条消息即可确认压缩已经发生:消息数从 84 降到 31,占用回落到96K/128K

上下文溢出时的行为

即便手动或自动压缩都来不及,如果一个请求仍然溢出窗口,agent 循环会压缩后重试,而不是直接报错;每次重试保留更短的近期消息尾部。如果某一次压缩完全没有缩小会话,它选择放弃而不是无限循环。

与 /compact 相关的其他命令

  • /context/compact之外,/输入时会模糊过滤命令列表,Enter执行高亮项;
  • /new开新会话、/clear清空对话,两者都会同时丢弃当前 goal;
  • /threads列出本项目的已保存会话,/resume交互式选择恢复(会话按项目保存在.jan/agent/threads下,详见 Sessions)。

如果只想限制单次响应的生成长度而不是上下文窗口,用[agent]下的max_tokens(例如max_tokens = 4096),它约束的是模型单次响应生成的 token 数,未设置时会从请求中省略,交由模型自身默认值决定。

参考

  • Context and Compaction:占用显示、自动压缩、溢出行为与max_tokens的原始文档;
  • Slash Commands:/compact/context/new等命令的完整列表;
  • Project Config:agent.tomlcontext_windowcompaction_reserve_tokens的默认值说明。

【免费下载链接】janJan is an open source alternative to ChatGPT that runs 100% offline on your computer.项目地址: https://gitcode.com/GitHub_Trending/ja/jan

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 21:42:14

Internet Computer:区块链世界计算机架构解析与开发实践

1. 从"世界计算机"到Internet Computer:区块链的终极形态 1990年代,当蒂姆伯纳斯-李发明万维网时,他构想的是一种去中心化的信息共享系统。但今天的互联网早已背离初心,被科技巨头垄断。而Internet Computer&#xff08…

作者头像 李华
网站建设 2026/9/10 21:39:01

FlatBuffers Python 使用指南:库结构、读写与 NumPy 向量加速

FlatBuffers Python 使用指南:库结构、读写与 NumPy 向量加速 【免费下载链接】flatbuffers FlatBuffers: Memory Efficient Serialization Library 项目地址: https://gitcode.com/GitHub_Trending/fl/flatbuffers 本篇指南基于 FlatBuffers 官方文档中 Pyt…

作者头像 李华
网站建设 2026/9/10 21:38:26

CANN/ge TimeBatch时间批次功能

# TimeBatch 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、T…

作者头像 李华