Skip to content

/acp export — 用户主动导出压缩摘要到文件 #265

Description

@ranxianglei

背景

#39 讨论 magic-context 与 ACP 的区别时确认:

  • ACP 的压缩(T1/T2/T3 summaries)本身就把单会话 context 控制在 45–55% band,session 能跑很久
  • MC 的 cross-session memory 不是优势,是它单会话撑不住的 workaround(砍掉 compaction → context 压不小 → 必然撞墙 → 需要 cross-session 救场)
  • ACP 不需要自动的 cross-session memory injection(违反"新会话 = 空白"的用户意图,且 LLM 自动提取的 memory 没经过 review,是更差的 AGENTS.md)
  • 用户主动导出摘要到文件是有价值的:让用户自己 review / edit / commit,作为 devlog / AGENTS.md 的补充

动机

场景:

  • 用户完成一个长 session,觉得其中的关键决策、约束、发现值得保留
  • 想在下个 session(或团队成员)中复用这些知识
  • 现在没有简单的导出方式 —— 知识都锁在 session state JSON 里

现有方案不足:

  • 直接读 ~/.local/share/opencode/storage/plugin/acp/{sessionId}.json 不友好
  • 手动从 chat 复制粘贴容易漏
  • /acp stats 只显示统计,不输出内容

提议:/acp export 命令

用户主动触发,把当前 session 的压缩摘要导出为 markdown 文件。

/acp export                    # 导出到默认路径
/acp export --output PATH      # 指定输出路径
/acp export --tier t3          # 只导出 T3(最精炼)
/acp export --tier t2,t3       # 导出 T2+T3(默认)

输出格式(草案):

# Session Export — {sessionId}
# Generated {timestamp}

## T3 Blocks (distilled)
### b15 — Auth System Refactor
{summary text}

## T2 Blocks
### b8 — Bug Hunt: token counting
{summary text}
...

设计原则

  1. 用户主导 —— 不自动注入新 session,不自动 commit,用户自己决定怎么用
  2. 补足现有机制 —— 和 AGENTS.md / devlog / README / git 互补,不替代
  3. 零依赖 —— 纯文件 I/O,不引入 SQLite / embedding
  4. 轻量 —— 预估 ~20–100 行代码

待设计问题(留给设计阶段)

  1. 默认输出路径:项目根 .opencode/acp-export-{sessionId}.md?还是 devlog/?
  2. 导出哪些 tier:默认 T2+T3?还是让用户选?
  3. 是否包含 block metadata(blockId / generation / survivedCount / createdAt)?
  4. 是否支持导出到 stdout(方便管道和脚本组合)?
  5. 文件覆盖 vs 追加:重复导出怎么处理?
  6. 是否需要对应的 /acp import(从文件注入新 session)?还是靠用户自己 @ 引用就够?
  7. 消息模式(message-mode)的 block 是否同样适用?

Non-goals

  • ❌ 自动跨 session memory injection(违反新会话空白意图)
  • ❌ SQLite / embedding / semantic search(过重,当前不需要)
  • ❌ Background memory curation / dreamer-style agent(过重)
  • ❌ 替代 AGENTS.md / devlog(这些是人类策划的高质量载体,导出只是补充)

参考

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions