[项目分享] Pragma:尝试解决不同 Agent Harness 之间的记忆断裂
pqpo: 最近把自己做的项目 **Pragma** 正式公开了,你觉得有意思或者对你有帮助的话求个 star,有兴趣的也欢迎提交 pr:
[GitHub 项目链接](https://github.com/pqpo/pragma)
Pragma 不是想再做一个 Claude Code 或 Codex,而是想解决一个我在长期使用 AI Agent 时越来越明显的问题:
**不同 Agent 很强,但工作方式、上下文和经验都被困在各自的 Session 里。**
比如一个开发任务可能是:
```text
Claude Code 做需求分析
↓
Codex 做技术方案
↓
Codex 实现代码
↓
Claude Code 做独立 Review
```
每一步可以使用不同的模型、不同的 Harness。
真正麻烦的不是怎么调用它们,而是:
**前一个 Agent 学到的东西,怎么让后一个 Agent 继续利用?**
## 不迁移 Session,而是迁移工作语义
一开始很自然会想到:能不能把 Claude Code 的 Session 直接交给 Codex?
但不同 Harness 有完全不同的 Session 、Message 、Tool Call 、Compaction 等内部机制,而且真正有价值的通常也不是完整的聊天记录。
比如一次任务中发现:
```text
这个项目不能使用 UUID ,
因为历史数据和接口都依赖 ULID 。
```
真正值得留下的是这个 **事实**。
或者一次排障过程:
```text
修改方案
→ 测试失败
→ 找到历史兼容逻辑
→ 调整实现
→ 最终通过
```
值得留下的是这次 **经验**,而不是几十轮聊天记录。
所以 Pragma 的核心思路是:
> **不迁移 Session,而是迁移工作语义。**
## 所有 Harness 进入同一条 Memory Pipeline
Pragma 会把 Claude Code 、Codex 、PI 等不同 Runtime 的执行过程归一化,最终进入统一的 Memory Pipeline:
```text
Claude Code / Codex / PI
↓
Execution
↓
Evidence
↓
Memory
```
Memory 目前主要分成两类:
**Episodic Memory** 记录「以前发生过什么」,例如一次任务的目标、尝试、失败、恢复和最终结果。
**Semantic Memory** 记录「现在认为哪些事情是真的」,例如项目约束、用户偏好和稳定事实。
所以最终不会存在:
```text
Claude Code Memory
Codex Memory
```
而只有:
```text
Pragma Memory
```
下一次无论换成 Codex、Claude Code,还是未来其他 Harness,都可以继续利用这些经验。
## Context 和 Memory 是两回事
这个边界我觉得也很重要。
刚刚生成的:
```text
requirements.md
architecture.md
review findings
TODO
```
属于当前任务的 **Context**,应该直接在 Agent 之间流动。
而:
```text
这个项目过去踩过什么坑
用户长期有什么偏好
什么方案以前失败过
有哪些稳定约束
```
才更适合进入 **Memory**。
我现在会简单理解成:
> **Context 是这次工作正在知道什么。**
> **Memory 是过去的工作有什么值得继续知道。**
## 最后
Pragma 想做的事情其实可以浓缩成一句话:
> **让 AI 的工作方式和经验脱离某个具体 Agent,变成可以持续积累、复用和迁移的资产。**
模型和 Agent Harness 会不断变化。
今天是 Claude Code、Codex,明天一定还会有更好的工具。
但如果每换一个工具,我们积累的经验就重新归零,那其实很可惜。
所以我更希望最终留下来的不是某一个 Agent,而是:
```text
Workflow
+ Context
+ Memory
+ Evaluation
```
项目目前还在比较早期,欢迎讨论这种跨 Harness 的 Context / Memory 设计。
GitHub:
[GitHub 项目链接](https://github.com/pqpo/pragma)
---
原文链接:[点击查看](https://www.v2ex.com/t/1232758)
[GitHub 项目链接](https://github.com/pqpo/pragma)
Pragma 不是想再做一个 Claude Code 或 Codex,而是想解决一个我在长期使用 AI Agent 时越来越明显的问题:
**不同 Agent 很强,但工作方式、上下文和经验都被困在各自的 Session 里。**
比如一个开发任务可能是:
```text
Claude Code 做需求分析
↓
Codex 做技术方案
↓
Codex 实现代码
↓
Claude Code 做独立 Review
```
每一步可以使用不同的模型、不同的 Harness。
真正麻烦的不是怎么调用它们,而是:
**前一个 Agent 学到的东西,怎么让后一个 Agent 继续利用?**
## 不迁移 Session,而是迁移工作语义
一开始很自然会想到:能不能把 Claude Code 的 Session 直接交给 Codex?
但不同 Harness 有完全不同的 Session 、Message 、Tool Call 、Compaction 等内部机制,而且真正有价值的通常也不是完整的聊天记录。
比如一次任务中发现:
```text
这个项目不能使用 UUID ,
因为历史数据和接口都依赖 ULID 。
```
真正值得留下的是这个 **事实**。
或者一次排障过程:
```text
修改方案
→ 测试失败
→ 找到历史兼容逻辑
→ 调整实现
→ 最终通过
```
值得留下的是这次 **经验**,而不是几十轮聊天记录。
所以 Pragma 的核心思路是:
> **不迁移 Session,而是迁移工作语义。**
## 所有 Harness 进入同一条 Memory Pipeline
Pragma 会把 Claude Code 、Codex 、PI 等不同 Runtime 的执行过程归一化,最终进入统一的 Memory Pipeline:
```text
Claude Code / Codex / PI
↓
Execution
↓
Evidence
↓
Memory
```
Memory 目前主要分成两类:
**Episodic Memory** 记录「以前发生过什么」,例如一次任务的目标、尝试、失败、恢复和最终结果。
**Semantic Memory** 记录「现在认为哪些事情是真的」,例如项目约束、用户偏好和稳定事实。
所以最终不会存在:
```text
Claude Code Memory
Codex Memory
```
而只有:
```text
Pragma Memory
```
下一次无论换成 Codex、Claude Code,还是未来其他 Harness,都可以继续利用这些经验。
## Context 和 Memory 是两回事
这个边界我觉得也很重要。
刚刚生成的:
```text
requirements.md
architecture.md
review findings
TODO
```
属于当前任务的 **Context**,应该直接在 Agent 之间流动。
而:
```text
这个项目过去踩过什么坑
用户长期有什么偏好
什么方案以前失败过
有哪些稳定约束
```
才更适合进入 **Memory**。
我现在会简单理解成:
> **Context 是这次工作正在知道什么。**
> **Memory 是过去的工作有什么值得继续知道。**
## 最后
Pragma 想做的事情其实可以浓缩成一句话:
> **让 AI 的工作方式和经验脱离某个具体 Agent,变成可以持续积累、复用和迁移的资产。**
模型和 Agent Harness 会不断变化。
今天是 Claude Code、Codex,明天一定还会有更好的工具。
但如果每换一个工具,我们积累的经验就重新归零,那其实很可惜。
所以我更希望最终留下来的不是某一个 Agent,而是:
```text
Workflow
+ Context
+ Memory
+ Evaluation
```
项目目前还在比较早期,欢迎讨论这种跨 Harness 的 Context / Memory 设计。
GitHub:
[GitHub 项目链接](https://github.com/pqpo/pragma)
---
原文链接:[点击查看](https://www.v2ex.com/t/1232758)
评论
暂无评论。