【免费下载链接】deeptide
Built by DeepSeek, for DeepSeek — a Swift-native macOS coding agent
DeepTide(deeptide)是一款为 DeepSeek 打造的 macOS 原生编程智能体(coding agent),其上下文管理是长时间编码任务的关键能力:它通过上下文窗口自动压缩、三级上下文警告与Checkpoint 回滚机制,让模型在超长会话中始终"记得住、压得下、退得回"。
为什么编程 Agent 特别怕"上下文爆炸"
多轮编码会话会不断累积消息:你的每条指令、Agent 的每次回答、每一次工具调用的输入与输出,都会进入模型的上下文窗口。一旦超过窗口上限,请求要么被拒绝,要么历史被粗暴截断,Agent 就会"失忆"。
DeepTide 的解决方案由三条防线组成:
| 防线 | 作用 | 对应模块 |
|---|---|---|
| 🪟 自动压缩 | 把旧对话折叠成一条滚动摘要 | context_window.rs |
| ⚠️ 上下文警告 | 80% / 90% / 95% 三级提醒 | repl.rs |
| 🔙 Checkpoint 回滚 | 给会话存档,随时回到任意快照 | checkpoints.rs |
窗口有多大:按模型自动适配的上下文预算
DeepTide 不会用一个写死的窗口值,而是根据当前模型自动选择预算,核心逻辑在 memory.rs 的model_context_window()中:
| 模型 | 上下文窗口 |
|---|---|
| deepseek-v4(旗舰) | 1,000,000 |
| deepseek-v4-flash | 512,000 |
| Gemini 系列 | 1,000,000 |
| Qwen3 系列 | 262,144 |
| Claude 3.5 系列 | 200,000 |
| GLM-4.7-Flash | 131,072 |
| deepseek-v3 / 默认兜底 | 128,000 |
切换模型时会调用 refresh_context_window 重新校准预算,因此自动压缩的触发点始终与当前模型的窗口匹配,而不是固定值。Token 统计采用轻量估算(约 4 字符 ≈ 1 个 token),避免了引入完整 tokenizer 的依赖。
自动压缩:滑动窗口 + 滚动摘要
核心实现在 ContextWindowManager,它把压缩过程设计成"软阈值 → 摘要 → 硬阈值兜底"的三步流水线:
1️⃣ 软阈值(85%)——开始压缩
当转录总长度超过max_tokens × 0.85,管理器才会启动压缩;不到线时什么都不做,避免无谓的重写。
2️⃣ 滑动窗口(默认 6 条)——最近的内容原样保留
压缩时只保留最近 6 条消息的原文(足以覆盖你最近的一轮提问、Agent 的回复和追问),更早的消息全部交给摘要器折叠成一条带[context-summary]前缀的合成消息。摘要刻意保留"修改线索"——文件路径、工具调用、关键决策——让 Agent 不用重读完整历史就能继续干活。
一个贴心的细节:压缩边界会向前对齐到下一条 assistant 消息,确保tool_use/tool_result这对消息永远不会被拆散(详见 compress_at 实现),这是工具调用类模型对消息交替顺序的硬性要求。
3️⃣ 硬阈值(98%)——兜底裁剪
如果摘要之后仍超出预算,管理器会逐条丢弃最旧的消息直到塞进窗口,保证"绝不把超预算的转录交给模型"。
三级上下文警告:在"失忆"之前提醒你
除了静默压缩,DeepTide 还会主动向你"打招呼"。阈值定义在 CONTEXT_WARN_THRESHOLDS:
- 80%:温柔提醒 "consider
/compactwhen convenient" - 90%:建议尽快 "compact soon —
/compactsummarises the transcript without losing key facts" - 95%:强警告 "running out of headroom —
/compactor/newstrongly recommended NOW"
警告是一次性的:每个级别只提醒一次(latch 机制),不会刷屏;执行/new、/clear或/compact后计数清零,下一轮填满时会重新提醒。渲染逻辑见 render_context_warn_message。
/auto-compact:让压缩全自动
不想盯着警告手动敲/compact?开启智能自动压缩即可:
/auto-compact 查看当前状态 /auto-compact on 以默认阈值 95% 开启 /auto-compact 90 开启并把阈值设为 90% /auto-compact threshold <N> 仅调整阈值(范围 50~99%) /auto-compact reset 重置累计触发计数关键设计(见 AutoCompactConfig):
- 默认关闭——因为"悄悄改写你的对话记录"可能让人意外,DeepTide 选择让你显式开启;
- 每轮只触发一次:首次越过阈值时压缩,随后重置警告 latch,等上下文再次填满才可能再触发,避免"每轮都压缩";
- 触发后会打印一行确认,例如
↻ auto-compact triggered at 95% (threshold 95%): folded 12 message(s) into a summary,并通过/auto-compact status查看累计触发次数。
当然,你也可以随时手动压缩:/compact(别名/compress,实现见 commands.rs)会无条件折叠旧轮次,不等任何阈值。
Checkpoint 回滚:给会话存"存档"
压缩解决"太长",Checkpoint 解决"改错了"。checkpoints.rs 提供了一组会话内快照,配合/checkpoint与/rewind命令,可以精准撤销多轮失误,无需重启会话、也不丢失成本统计遥测。
| 命令 | 功能 |
|---|---|
/checkpoint pre-refactor | 打快照(可带标签) |
/checkpoint list | 查看所有快照(id、时间、消息数) |
/checkpoint restore <选择器> | 回滚到指定快照 |
/rewind [选择器] | 快捷回滚,缺省回滚到最新快照 |
/checkpoint drop/clear | 删除单个 / 清空全部 |
选择器语法非常灵活(见 resolve 实现):空选择器或latest取最新;支持 1 起始的序号(对应列表里的位置);支持 8 位十六进制 ID、ID 前缀(至少 2 位,歧义时会列出候选)以及精确标签匹配。
两个值得注意的存储策略:
- 仅内存、FIFO 上限 20 个(
MAX_CHECKPOINTS):每个快照都完整克隆转录,上限把最坏内存占用控制在约 20 倍单份转录,防止长会话把内存撑爆; - 跨会话请走
/sessions+/resume:Checkpoint 只在本会话内有效,需要跨会话恢复历史时,使用落盘的会话存储。
一张表总结:上下文管理实战速查
| 场景 | 该做什么 | 命令 / 机制 |
|---|---|---|
| 对话越拉越长 | 等待自动压缩,或手动压缩 | 软阈值 85% 自动触发 //compact |
| 终端出现 ⚠ 警告 | 按提示级别处理,95% 必须行动 | 三级警告(80/90/95%) |
| 希望完全自动 | 开启智能自动压缩 | /auto-compact on |
| 想回到之前某个状态 | 先存快照,再回滚 | /checkpoint+/rewind |
| 长会话结束 | 会话落盘,下次继续 | /sessions+/resume |
这套"压缩—警告—回滚"三层机制让 DeepTide 在超长编码任务中既省钱(历史折叠成短摘要)、又安全(98% 硬阈值兜底)、还可控(随时回到存档点)。相关行为均有集成测试覆盖,可在 auto_compact.rs、context_warn.rs 与 checkpoint.rs 中查看各机制的完整断言。
【免费下载链接】deeptide
Built by DeepSeek, for DeepSeek — a Swift-native macOS coding agent
相关推荐
YOLO11架构解析:极简设计如何实现高效NPU推理服务
YOLO11架构解析:极简设计如何实现高效NPU推理服务 在人工智能视觉应用快速发展的今天, YOLO11 作为最新的目标检测模型,以其卓越的性能和精度引领着实
后端深度学习计算机视觉LongAlign-13B-64k:64K上下文窗口如何重塑长文本处理范式
LongAlign 13B 64k:64K上下文窗口如何重塑长文本处理范式 导语 清华ChatGLM团队推出的LongAlign 13B 64k开源模型,通过创
大模型人工智能深度学习LocalAI 上下文压缩(Context Compression)配置指南:为长对话自动压缩聊天历史并守护上下文窗口
LocalAI 上下文压缩(Context Compression)配置指南:为长对话自动压缩聊天历史并守护上下文窗口 本文以 LocalAI 仓库 conte
人工智能大模型模型推理服务本地部署LLM 网关多模态AI AgentRAGMCP 服务
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考