Claude 的每次 API 调用都是无状态的,它不会自动记住上一次会话的内容。
但在一次连续对话中,所有历史消息都在上下文窗口里。理解这一点,能帮助你写出在对话中表现稳定的 Skill。
Skills 的状态存在于哪里
Skills 本身不具备数据库或持久存储能力。需要跨会话保存的数据,应由用户自己保存(如下载文件),或写入持久化输出目录。
在 SKILL.md 中管理多轮对话状态
对于需要多轮交互的 Skill,应在 SKILL.md 中明确定义对话状态的流转逻辑。
实例
使用文件保存中间状态
对于复杂的多步骤任务,可以将中间状态写入 JSON 文件,实现步骤间的状态传递。
状态已保存:/home/claude/skill_state.json 当前阶段:collecting 状态已保存:/home/claude/skill_state.json
防止上下文污染
当用户在同一对话中多次触发 Skill,历史对话中的旧参数可能"污染"新的执行。
在 SKILL.md 中明确规定优先级,可以避免这类问题。
上下文长度与性能的关系
随着对话变长,上下文窗口中的内容越来越多,Claude 处理的成本也会增加。
对于长时间运行的多轮 Skill,应当注意以下优化策略:
上下文窗口是有限的资源。Skill 中传递的数据量越大,剩余给推理和生成的空间就越少,响应质量可能下降。对于大文件,始终通过文件路径而非内容传递。