savenow — 節省現在
v0.1.0Save durable notes from the current OpenClaw + Telegram conversation into today's memory/YYYY-MM-DD.md, with a semantic-dedupe preview/应用ly flow and inline 应用ly/Cancel buttons. Use for /savenow on Telegram-backed 会话s.
运行时依赖
安装命令
点击复制技能文档
使用此技能时,当用户想要将当前对话保存到活动代理的每日内存文件中。命令名称为 /savenow。范围:仅限 OpenClaw + Telegram。依赖于 sessions_list / sessions_history、运行时 MessageThreadId 和 Telegram 内联键盘。Vanilla Claude Code、CLI 和 web 界面不支持。支持的形式:/savenow — 预览。提取候选项,语义比较与今天的内存,显示 markdown diff + 应用/取消内联按钮。什么都不写。/savenow apply — 写入最近的待处理预览(在 30 分钟 TTL 内且来自同一会话/主题)。/savenow cancel — 丢弃待处理预览而不写入。/savenow auto — 提取 + 比较 + 直接写入。跳过预览和按钮。/savenow auto — 在显式会话上自动。/savenow list — 显示同主题候选会话而不写入。/savenow — 对显式会话进行预览。目标仅写入当前代理工作空间中的 memory/YYYY-MM-DD.md 中的持久、高价值笔记。不要修补内置命令。不要更改 Telegram 设置。不要写入 MEMORY.md。什么算是持久的?保留:已解决的根本原因和修复稳定的工作流规则和约定偏好和路由规则重要的系统映射、ID 和文件位置稍后将再次重要的决定跳过:闲聊和确认临时计划或一次性状态更新重复的来回对话,没有持久的价值已经在今天或非常相似的形式中保存的内容路由首先检查原始命令参数,然后选择一个分支:参数分支写入?(空)预览否列表列表(未更改)否应用应用是的,从待处理中取消取消否,删除待处理自动自动在解决会话上是的自动 自动在显式密钥上是的其他令牌显式会话预览否预览分支 — /savenow(和显式会话预览)解析目标会话。如果运行时暴露 CommandTargetSessionKey,则使用它。如果原始参数是非空值且不为 list/apply/cancel/auto,则将其视为显式 sessionKey。否则,从运行时读取当前 MessageThreadId,调用 sessions_list,严格过滤:仅同主题/线程排除包含:slash:的密钥排除 cron、hook、node 类型排除命令仅或内部辅助会话如果只有一个明确的候选项,则使用它。如果有多个,则从同一线程中选择最新的非斜杠真实聊天会话。如果线程缺失或没有同主题候选项,或者仍然模糊,则关闭并要求用户重新运行 /savenow 。什么都不写。读取记录。对解析的目标会话调用 sessions_history,includeTools:false,limit:120..180。读取今天的内存文件(新步骤)。使用 Read 工具在 memory/YYYY-MM-DD.md 上,以便代理可以执行语义比较。如果文件尚不存在,则像空文件一样继续。提取 0..5 个候选内存条目。每个条目必须具体、可重用、简短、自成体系。对于每个候选项,执行语义比较与内存文件中的现有部分,并分配一个操作:“添加” — 净新增持久笔记“合并” — 与现有部分有实质性重叠;将新项目添加到其中(将 merge_target_title 设置为确切的现有标题)“跳过” — 在语义上已经涵盖,或者不够持久JSON 形状(写入 temp/savenow-entries.json):[ { "candidate_index": 0, "title": "网关令牌不匹配修复", "bullets": [ "通过更新 gateway.cmd 和相关环境变量解决了 未经授权:网关令牌不匹配。", "下次出现类似错误时,首先检查令牌和环境变量的对齐。" ], "action": "add", "reason": "" }, { "candidate_index": 1, "title": "Telegram 内联按钮规则", "bullets": ["内联键盘使用单行、3 个按钮的布局。"], "action": "merge", "merge_target_title": "Telegram UI 约定", "reason": "新规则属于同一现有主题。" } ] 向后兼容:{ "title": "...", "bullets": [...] } 没有操作被视为“添加”。从工作空间根目录运行预览脚本:node "{baseDir}/scripts/preview-diff.mjs" \ --entries-file "temp/savenow-entries.json" \ --memory-path "memory/YYYY-MM-DD.md" \ --pending-file "temp/savenow-pending.json" \ --session-key "" \ --message-thread-id "" \ --ttl-minutes 30 将脚本的 stdout 管道到聊天中作为用户面向的回复。在 markdown 回复下渲染 Telegram 内联键盘,单行两个按钮:✅ 应用 → 回调 /savenow apply ❌ 取消 → 回调 /savenow cancel 如果脚本报告 0 个候选项,则不渲染键盘(没有可应用的内容)。应用分支 — /savenow apply 读取 temp/savenow-pending.json。如果:文件缺失 → “没有待处理预览,请先运行 /savenow。” expiresAt < now → “预览已过期(X 分钟前),请重新运行 /savenow”。否则,写入内存文件并返回确认消息。自动分支 — /savenow auto 和 /savenow auto 跟随预览分支,但跳过预览和键盘,直接写入内存文件。取消分支 — /savenow cancel 删除 temp/savenow-pending.json 并返回确认消息。列表分支 — /savenow list 跟随预览分支,但跳过写入和键盘,只返回同主题候选会话列表。