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(这些是人类策划的高质量载体,导出只是补充)

参考

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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