Skip to content

save_memory 工具把你告知 AI 的重要事实追加到 ~/.gemini/GEMINI.md 文件,下次启动时自动加载,实现跨会话记忆。write_todos 工具让 AI 维护一份任务列表,显示在 CLI 界面上方,你可以随时用 Ctrl+T 展开或折叠详细视图,了解 AI 当前的工作进度。

记忆与任务工具参考

save_memory(持久化记忆)

将特定事实、用户偏好或项目信息持久化,使其在未来所有会话中都可用。

参数

参数类型必填说明
factstring用自然语言写的清晰、自包含的事实陈述

存储机制

记忆内容被追加到 ~/.gemini/GEMINI.md 全局上下文文件的 ## Gemini Added Memories 区块,以无序列表形式存储:

markdown
## Gemini Added Memories

- 用户偏好函数式编程风格,避免类继承
- 项目数据库使用 PostgreSQL 15,不用 MongoDB
- 代码注释统一用英文,用户消息用中文回复

每次启动 Gemini CLI 时,这个文件会被自动加载进上下文,AI 无需用户重复说明就能记住这些偏好。

何时使用

当你希望 AI 在所有未来会话中都记住某个信息时,可以直接告诉 AI 记住它:

记住:我们的 API 始终用 REST,不用 GraphQL
请记住:部署时只推到 staging,不直接推 production
帮我记一下:这个项目的默认端口是 8080

与 GEMINI.md 的关系

save_memory 写入的是用户级全局文件(~/.gemini/GEMINI.md)。你也可以在项目目录的 .gemini/GEMINI.md 中手动维护项目专属上下文。两者都会被自动加载,项目级配置优先级更高。

详见 GEMINI.md 上下文文件 文档。


write_todos(任务追踪)

让 AI 代理维护一份内部任务列表,实时展示在 CLI 界面的输入框上方,帮助你了解 AI 当前的执行计划。

参数

参数类型必填说明
todosarray完整的任务列表(每次调用替换整个列表)

每个任务对象包含:

字段类型说明
descriptionstring任务的技术性描述
statusenumpendingin_progresscompletedcancelledblocked 之一

行为规则

  • 唯一进行中任务:同时只能有一个任务标记为 in_progress
  • 进度指示器:界面上方显示简洁的当前进度摘要
  • Ctrl+T 切换:按 Ctrl+T 可展开/折叠完整任务列表视图
  • 会话内有效:任务状态仅在当前会话中保持,会话结束后清除

示例展示

在执行复杂任务时,CLI 界面上方会显示类似:

⟳ [2/5] 创建数据库迁移文件...

Ctrl+T 展开后看到完整列表:

✓ 分析现有数据库结构
⟳ 创建数据库迁移文件
○ 更新 ORM 模型
○ 编写测试用例
○ 运行测试并验证

适用场景

  • 多文件重构:跨多个文件的修改任务,让你知道 AI 处理到哪一步
  • 复杂功能开发:需要多个步骤的功能实现,实时了解进度
  • 长时间运行的任务:避免等待时不清楚 AI 是否在工作还是卡住了

常见问题

Q: save_memory 保存的内容可以手动编辑吗?

A: 可以。直接编辑 ~/.gemini/GEMINI.md 文件即可,增删改都支持。注意保持 Markdown 格式,确保 ## Gemini Added Memories 区块存在。

Q: 记忆内容太多会影响性能吗?

A: 记忆内容每次都会加载到上下文中,过多会消耗 Token 并可能影响响应速度。建议定期清理不再需要的记忆条目,或将项目专属信息迁移到项目级 .gemini/GEMINI.md

Q: write_todos 的任务列表对 AI 有约束力吗?

A: 任务列表是 AI 自己维护的计划工具,不是硬性约束。你可以随时改变指令,AI 会据此更新任务列表。如果 AI 偏离计划,直接在 Prompt 中说明即可。


tracker_*(任务图追踪,实验性)

注意:此功能为实验性功能,正在积极开发中。

tracker_* 系列工具让代理维护一个持久化的任务依赖图,相比 write_todos 的简单列表,提供更细粒度的任务管理能力(支持 epic/task/bug 层级和依赖关系)。

可用工具

工具名说明
tracker_create_task创建新任务(类型:epic/task/bug
tracker_update_task更新任务状态或描述
tracker_get_task通过 6 位十六进制 ID 获取任务详情
tracker_list_tasks列出任务(可按状态、类型、父任务过滤)
tracker_add_dependency添加任务依赖关系(确保拓扑执行顺序)
tracker_visualize渲染当前任务图的 ASCII 树形视图

任务状态

openin_progressblocked(等待依赖) / closed

存储位置

任务状态保存在 .gemini/tmp/tracker/<session-id> 目录,仅在当前会话内有效。

write_todos 的对比

能力write_todostracker_*
任务层级扁平列表epic / task / bug 层级
依赖管理支持 DAG 依赖图
可视化简单状态显示ASCII 树形结构
状态稳定功能实验性

适合:协调多文件重构项目、追踪代码库内的 bug 和功能请求、需要细粒度进度可见性的长时任务。


activate_skill(激活 Skill)

activate_skill 工具让代理按需加载专项能力(Skill),而不是把所有 Skill 的指令一直占用上下文窗口。

参数

参数类型必填说明
nameenum要激活的 Skill 名称(如 code-reviewerpr-creatordocs-writer

行为

  • 只在代理判断任务与某 Skill 匹配时才激活
  • 激活后,代理的行为由该 Skill 的专项指令引导,直到任务完成
  • 激活特定 Skill 后可能获得该 Skill 专属的额外工具

注意activate_skill 是代理专用的内部工具,你不能手动调用它,但可以通过描述任务类型隐式触发(如"审查一下这段代码"会触发 code-reviewer Skill)。

如何创建自定义 Skill:创建自定义 Skills