当前最优方案:优先环境变量方式

1 环境变量和临时文件

一句话结论

  • 跨 Skill 共享少量结构化数据 → 用 系统变量 / 全局状态
  • 需要持久化、大体积、跨会话、可读写 → 用 临时文件 / 外部存储
  • 你现在的场景:Skill 之间共享数据,怕上下文压缩丢失

→ 优先:系统变量 / 全局内存状态

→ 临时文件只当备选 / 兜底。

最终建议(直接照做)

  • 少量、结构化、会话内共享系统变量
  • 大量、持久、跨会话 / 外部使用临时文件
  • 你现在的需求:系统变量完胜,别用文件。

1.1 为什么不推荐临时文件

  • 文件 I/O 慢、有并发冲突、权限 / 路径问题
  • 多 Skill 同时读写容易脏数据
  • 调试、日志、清理都麻烦
  • 你只是会话内跨 Skill 共享,完全没必要上文件

1.2 为什么推荐「系统变量 / 全局状态」

  • 内存级,最快
  • 天然属于当前会话,不会串数据
  • 不会被上下文压缩 / 截断吞掉
  • 适合:
    • 配置
    • 中间结果
    • 标记位、状态机
    • 小体量共享数据

1.3 两种方案对比(你直接照着选)

方案 A:系统变量 / 全局状态(推荐)

适用:
  • 数据量小:键值对、JSON 小对象
  • 只在当前对话生命周期内有用
  • 多个 Skill 要快速读 / 写
  • 不想处理文件、路径、清理
优点:
  • 极快、无副作用
  • 不会被上下文压缩影响
  • 天然隔离会话
缺点:
  • 会话结束就丢
  • 不适合超大数据

方案 B:临时文件 / 本地存储

适用:
  • 数据很大:日志、大文本、二进制
  • 需要跨会话 / 重启后还在
  • 需要给外部程序读
  • 需要可审计、可回放
优点:
  • 持久化
  • 容量无压力
缺点:
  • 慢、有 IO 开销
  • 并发读写要加锁
  • 你这个场景过重

 

1.4 你这个场景的最佳实践

你场景:
Claude Skills 之间共享数据,放对话上下文会被压缩丢失
最优架构:
  1. 设计一个 GlobalState / SystemVariable 机制
    • 类似:system.vars.skill_data.xxx
  2. 每个 Skill 只读写这个全局对象
  3. 全局对象不进用户上下文,单独存在内存里
  4. 会话结束统一销毁
伪代码示意:

 

 

2 对话context

通过LLM对话对话上下文保存。存在风险就是在context进行压缩时,存在丢失概率。

3 外部DB

如果只是独立skill(不是对平台封装),感觉成本较高,而且如果没办法推广到市场,如果发布,所有使用这都写入你的DB肯定有问题。

分类&标签