session-end Hook 全解析:会话收尾的清理、状态持久化与指标导出)
rufloclaude-flowsession-end Hook 全解析会话收尾的清理、状态持久化与指标导出【免费下载链接】ruflo The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo会话结束时ruflo 的session-endHook 会在对话终止、工作会话关闭、进程关闭或上下文切换前自动完成状态持久化、指标导出、总结生成与临时文件清理避免跨会话上下文与任务进度的丢失。读完本文你将掌握npx claude-flow hook session-end的全部参数与执行语义理解该 Hook 在 Claude Code / Codex 生命周期中的自动触发机制并能结合仓库源码共享 Hook 管理器、V3 CLI 命令注册、跨平台会话管理器在自己的工作流中正确配置与排障。Hook 定位会话生命周期中的收尾闸门ruflo原 claude-flow把一次编码任务抽象成一条有生命周期的会话session从session-start/session-restore打开到session-end收口。session-end是会话链条中的终止节点承担四类职责状态持久化State Persistence——保存当前上下文、记录打开的文件、保留任务进度与已做出的关键决策指标导出Metric Export——汇总会话时长、执行的命令数、修改的文件数、Token 消耗与性能数据总结生成Summary Generation——沉淀已完成工作、关键决策、解决的问题以及下一步计划清理操作Cleanup Operations——移除临时文件、清理缓存、释放资源、优化存储占用。在仓库的 Hook 生态全景中参见 Hooks 总览文档session-end与session-restore、notify同属于会话类 HookSession Hooks其事件类型在类型定义中被正式声明为HookEvent.SessionEnd hook:session-end参见 共享类型定义。命令用法与参数详解session-end以 CLI 子命令形式提供完整调用形式如下npx claude-flow hook session-end [options]参数缩写类型默认值说明--session-id, -s id-sstring当前活动会话 ID要结束的会话标识符--save-state—booleantrue是否保存当前会话状态以供后续恢复。CLI 中显式传--save-state false可跳过持久化--export-metrics—booleanfalse导出会话指标时长、命令数、修改文件数、Token 消耗、性能数据--generate-summary—booleanfalse生成会话总结已完成工作、关键决策、待办--cleanup-temp—booleanfalse清理本次会话产生的临时文件与缓存说明这是 会话结束命令文档 约定的面向用户的参数契约。在 V3 CLI 的底层实现中session-end子命令当前仅暴露--save-state见 CLI 命令定义而指标导出、daemon 停止等更细粒度开关则由对应的 MCP 工具参数exportMetrics/stopDaemon承载见 MCP 工具实现。使用前请以你所安装版本--help输出为准。典型使用示例文档给出了四种覆盖从轻量关闭到完整持久化的实战场景均可直接运行基础收尾默认保存状态npx claude-flow hook session-end --session-id dev-session-2024带完整导出的收尾npx claude-flow hook session-end -s feature-auth --export-metrics --generate-summary快速关闭跳过持久化 清理临时文件npx claude-flow hook session-end -s quick-fix --save-state false --cleanup-temp完整持久化保存 导出 总结npx claude-flow hook session-end -s major-refactor --save-state --export-metrics --generate-summary四类核心能力逐项剖析状态持久化保存什么、存到哪--save-state默认true是会话恢复的基石持久化的内容至少包括当前上下文current context当前打开的文件open files任务进度task progress已做出的关键决策decisions。在共享实现层SessionHooksManager.handleSessionEnd 会构建一个结构化的SessionStatesessionId、startTime、endTime、workingDirectory会话基础信息activeTasks[]每个任务带id / description / statuspending | in_progress | completed | failedspawnedAgents[]已派生的 Agent 及其状态active | idle | terminatedmemoryEntries[]会话期间写入的记忆条目key / namespace / typegitState当前分支、未提交改动数、最近一次提交learningMetrics学习的模式数、轨迹数、平均置信度。持久化位置因实现通道而异共享层默认以sessions/${sessionId}.json为状态路径MCP 工具实现则写入.claude/sessions/${sessionId}.json活动会话状态记录在.claude-flow/sessions/current.json见 hooks-tools.ts。指标导出一次会话的可量化账本--export-metrics导出的指标与 JSON 输出中summary/metrics字段一一对应指标含义duration会话总时长毫秒commandsRun/commandsExecuted执行的命令数filesModified修改的文件数tokensUsedToken 消耗tasksCompleted/tasksExecuted/tasksSucceeded/tasksFailed任务完成/执行/成功/失败数agentsSpawned会话期间派生的 Agent 数performance data附带性能数据这些计数并非凭空而来——共享管理器在会话运行期间通过一系列低优先级事件 Hook 持续累加trackTaskExecution监听PostTaskExecutetrackCommandExecution监听PostCommandtrackFileModification监听PostEdit去重统计trackAgentSpawn监听PostAgentSpawn见 session-hooks.ts。CLI 端在会话结束后会以表格形式渲染这些汇总见 hooks.ts。总结生成让下一次会话接得上--generate-summary会输出一份人类与模型都可读的会话总结覆盖四方面已完成工作work accomplished、关键决策key decisions made、已解决问题problems solved、下一步计划next steps identified。共享层定义了SessionSummary结构tasksExecuted/Succeeded/Failed、commandsExecuted、filesModified、agentsSpawned、duration并作为metadata.summary一并写入持久化状态保证总结与状态同源一致。清理操作不留残余、不过度激进--cleanup-temp负责移除临时文件、清空缓存、释放资源、优化存储。值得注意的是仓库实现把清理设计为尽力而为、绝不阻塞收尾在 MCP 工具实现中会话结束的持久化完成后会尝试关闭 AgentDB/ONNX 原生资源池与 memory bridge并明确注释Cleanup is best-effort and must not fail session-end见 hooks-tools.ts。同理daemon 停止失败会被捕获吞掉而不中断主流程。这一设计原则值得所有 Hook 编写者借鉴收尾链路上任何一步失败都不应阻止状态落盘。自动触发机制与配置在 Claude Code 环境中session-end并非只能手动执行而是由宿主自动调用。文档明确的自动触发时机结束一段对话Ending a conversation关闭工作会话Closing work session进程关闭前Before shutdown切换上下文时Switching contexts。在本仓库的.claude/settings.json中可以看到真实的接线方式SessionEnd事件被映射为执行hook-handler.cjs session-end超时 10 秒见 .claude/settings.json。此外PreCompact手动/自动压缩上下文时也会先执行一次session-end确保上下文压缩前状态已归档见 .claude/settings.json。整体初始化方式npx claude-flow init --hooks与 Hook 通用响应格式参见 Hook 安装文档。手动在 Agent 工作流中触发收尾的方式# At session end npx claude-flow hook session-end --session-id your-session --generate-summary返回值与输出结构Hook 以 JSON 形式返回执行结果文档给出的示例结构如下{ sessionId: dev-session-2024, duration: 7200000, saved: true, metrics: { commandsRun: 145, filesModified: 23, tokensUsed: 85000, tasksCompleted: 8 }, summaryPath: /sessions/dev-session-2024-summary.md, cleanedUp: true, nextSession: dev-session-2025 }从实现看返回字段会根据运行通道有所增补。CLI 路径的返回包含sessionId / duration / statePath / summary见 hooks.tsMCP 工具路径额外返回daemon.stopped、sessionPersistence.controller/persisted、pendingInsights、memoryEntries与learningUpdatespatternsLearned、trajectoriesRecorded等字段见 hooks-tools.ts。若希望以结构化输出对接下游如上报看板可追加--format json。状态落盘与下一次会话如何接续session-end 的价值要到下一次会话才完整显现与之配对的是session-restore加载上一次状态。共享层为存储定义了统一接口SessionStoragesave / load / list / delete / getLatest并内置InMemorySessionStorage便于测试见 session-hooks.ts。恢复时会校验状态时效超过 7 天给出 staleness 警告统计可恢复的任务 / Agent / 记忆条目数提示会话结束时仍有pending/in_progress任务未完成。在跨平台场景下仓库还提供独立的 session.cjs按平台解析会话目录项目内.claude-flow/sessions、Windows 的APPDATA/claude-flow/sessions、macOS 的~/Library/Application Support/claude-flow/sessions、Linux 的~/.claude-flow/sessionsend动作会把current.json归档为sessionId.json并计算duration写入见 session.cjs。测试验证与质量保障会话收尾逻辑有专门的测试覆盖。v3/claude-flow/shared/__tests__/hooks/session-hooks.test.ts验证了三类行为管理器创建即注册SessionStart / SessionEnd / SessionResume事件处理器session-hooks:start、session-hooks:end、session-hooks:resumeexecuteSessionEnd()返回success: true、duration 0且附带合法summary状态确实被持久化——persistedState与statePath存在且可从存储中list()查回。这些断言为结束会话并返回总结与持久化会话状态两条核心承诺提供了回归保障也印证了本文前述字段与路径的真实性。最佳实践建议综合文档契约与仓库实现以下实践能最大化 session-end 的价值保持收尾链路幂等且可失败把持久化放最前清理/daemon 停止放其后并捕获异常——会话状态落盘永远优先于资源回收。为关键任务会话保留完整导出--save-state --export-metrics --generate-summary组合可在一条命令内完成状态、账本与总结的三重归档。轻量收尾显式跳过对临时性 quick-fix 会话用--save-state false --cleanup-temp避免产生无意义的归档文件。给 session-id 建立命名规范让归档文件名sessionId.json本身可读、可检索便于后续session-restore精确定位。善用自动触发将session-end挂到SessionEnd/Stop/PreCompact事件保证即使会话被压缩或异常终止状态也已先归档。关联阅读会话结束 Hook 文档——本文所依据的权威命令参考Hooks 总览overview——Pre/Post 操作 Hook、MCP 集成 Hook 与会话 Hook 全貌Hook 安装与调试setup——npx claude-flow init --hooks、响应格式与调试开关共享会话管理实现 与 Hook 类型定义——状态结构与事件模型V3 CLI 会话命令 与 MCP 会话工具——session-start/session-end/session-restore的实现与调用链。【免费下载链接】ruflo The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考