目录
当前最优方案:优先环境变量方式
1 环境变量和临时文件
一句话结论
- 跨 Skill 共享少量结构化数据 → 用 系统变量 / 全局状态
- 需要持久化、大体积、跨会话、可读写 → 用 临时文件 / 外部存储
- 你现在的场景:Skill 之间共享数据,怕上下文压缩丢失
→ 优先:系统变量 / 全局内存状态
→ 临时文件只当备选 / 兜底。
最终建议(直接照做)
- 少量、结构化、会话内共享 → 系统变量
- 大量、持久、跨会话 / 外部使用 → 临时文件
- 你现在的需求:系统变量完胜,别用文件。
1.1 为什么不推荐临时文件
- 文件 I/O 慢、有并发冲突、权限 / 路径问题
- 多 Skill 同时读写容易脏数据
- 调试、日志、清理都麻烦
- 你只是会话内跨 Skill 共享,完全没必要上文件
1.2 为什么推荐「系统变量 / 全局状态」
- 内存级,最快
- 天然属于当前会话,不会串数据
- 不会被上下文压缩 / 截断吞掉
- 适合:
- 配置
- 中间结果
- 标记位、状态机
- 小体量共享数据
1.3 两种方案对比(你直接照着选)
方案 A:系统变量 / 全局状态(推荐)
适用:
- 数据量小:键值对、JSON 小对象
- 只在当前对话生命周期内有用
- 多个 Skill 要快速读 / 写
- 不想处理文件、路径、清理
优点:
- 极快、无副作用
- 不会被上下文压缩影响
- 天然隔离会话
缺点:
- 会话结束就丢
- 不适合超大数据
方案 B:临时文件 / 本地存储
适用:
- 数据很大:日志、大文本、二进制
- 需要跨会话 / 重启后还在
- 需要给外部程序读
- 需要可审计、可回放
优点:
- 持久化
- 容量无压力
缺点:
- 慢、有 IO 开销
- 并发读写要加锁
- 你这个场景过重
1.4 你这个场景的最佳实践
你场景:
Claude Skills 之间共享数据,放对话上下文会被压缩丢失
最优架构:
- 设计一个 GlobalState / SystemVariable 机制
- 类似:
system.vars.skill_data.xxx
- 类似:
- 每个 Skill 只读写这个全局对象
- 全局对象不进用户上下文,单独存在内存里
- 会话结束统一销毁
伪代码示意:
|
1 2 3 4 5 6 7 |
// 全局系统变量(独立于上下文,不会被压缩) system_vars = { "shared_data": { "skill_a_result": "...", "skill_b_flag": true } } |
2 对话context
通过LLM对话对话上下文保存。存在风险就是在context进行压缩时,存在丢失概率。
3 外部DB
如果只是独立skill(不是对平台封装),感觉成本较高,而且如果没办法推广到市场,如果发布,所有使用这都写入你的DB肯定有问题。





