# dapz MVP 产品需求文档

## 0. 背景

DAP (Debug Adapter Protocol) 是调试器的 LSP。AI Coding Agent 在进行调试时
需要理解大量的调试输出（堆栈跟踪、变量值、输出日志），这些数据通常体积大、
Token 消耗高。dapz 借鉴 lspz 的成功架构，将 DAP 消息进行 Token 敏感的智能压缩。

### DAP vs LSP 关键差异

| 维度 | LSP | DAP |
|------|-----|-----|
| 主要 Server→Client 消息 | 诊断、补全、hover | 输出事件、变量、堆栈 |
| 数据特点 | 重复诊断多 | 文本/数据量大、深度嵌套 |
| AI Agent 关注点 | 代码问题 | 运行时状态、错误堆栈 |
| 压缩重点 | 去重、枚举缩减 | 截断、路径缩写、行折叠 |

## 1. 项目代号与含义

**dapz**
- 全称：**dap zip**（DAP 压缩代理）
- 定位：轻薄、高速、无感，像拉链一样把 DAP 调试输出"压缩"起来

## 2. 项目目标

构建一个**对 AI Coding Agent 极其友好的 DAP 代理层**，既可作为独立二进制透明部署，
更可以作为 Rust 库被直接嵌入任何 Agent CLI 中。
核心优化：对 **Server → Client** 方向的 DAP 消息进行 Token 敏感的无损/有损压缩，
让 LLM 用更少的上下文理解更多调试信息。

## 3. MVP 范围

### 3.1 核心功能

| 功能 | 描述 |
|------|------|
| `output` 压缩 | 重复行折叠、类别缩写 |
| `variables` 压缩 | 长值截断 |
| `stackTrace` 压缩 | 路径缩写、函数名修剪 |

### 3.2 架构

```
                    ┌──────────────────────┐
                    │   dapz (单一 crate)   │
                    │  Feature flags 编译   │
                    └───────────┬──────────┘
                                │
        ┌───────────────────────┼───────────────────────┐
        │                       │                       │
        ▼                       ▼                       ▼
┌───────────────────┐  ┌───────────────────┐  ┌───────────────────┐
│  Library Mode     │  │   Proxy Mode      │  │   MCP Mode        │
│  (no-default)     │  │   (default=cli)   │  │   (feature mcp)   │
└───────────────────┘  └───────────────────┘  └───────────────────┘
```

## 4. 后续扩展规划

- MCP 集成（feature = "mcp"）
- Agent SDK（feature = "agent-sdk"）
- TCP/WebSocket 传输
- 配置热加载
- 指标和追踪
