Metadata-Version: 2.5
Name: sccs
Version: 0.1.0
Summary: SCCS: context compression & intermediate-data offloading for LLM agents
Author: SCCS Team
License-Expression: MulanPSL-2.0
License-File: LICENSE
Keywords: agent,compression,context,llm,storage
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Provides-Extra: all
Requires-Dist: langchain-core>=0.2; extra == 'all'
Requires-Dist: langgraph>=0.2; extra == 'all'
Requires-Dist: litellm>=1.40; extra == 'all'
Requires-Dist: openai>=1.0; extra == 'all'
Requires-Dist: pytest>=7; extra == 'all'
Requires-Dist: redis>=4.0; extra == 'all'
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.2; extra == 'langchain'
Provides-Extra: langgraph
Requires-Dist: langgraph>=0.2; extra == 'langgraph'
Provides-Extra: litellm
Requires-Dist: litellm>=1.40; extra == 'litellm'
Provides-Extra: miniswe
Requires-Dist: mini-swe-agent; extra == 'miniswe'
Provides-Extra: openai
Requires-Dist: openai>=1.0; extra == 'openai'
Provides-Extra: redis
Requires-Dist: redis>=4.0; extra == 'redis'
Provides-Extra: test
Requires-Dist: pytest>=7; extra == 'test'
Description-Content-Type: text/markdown

# python3-sccs (SCCS Python SDK)

SCCS (Simple Compression Context Storage) — context compression & intermediate-data offloading for LLM agents.

SCCS 将 LLM Agent 执行时产生的大工具输出（代码搜索、文件读取、测试日志等）从模型上下文中卸载到存储后端，在发送给模型的消息里只保留摘要 + `[REF_ID: ...]`；当摘要不足以完成任务时，按需恢复原文。接入框架与存储后端相互独立，可任意替换。

## 安装

```bash
dnf install python3-sccs
```

- 核心功能仅依赖 Python 标准库（Python >= 3.9），无需安装任何第三方包。
- 卸载：`dnf remove python3-sccs`。

## 包内容

安装后提供：

- `sccs` Python 模块（核心：`sccs.core`；适配层：`sccs.adapters`；存储后端：`sccs.ubsmem`）
- `sccs-openclaw` 命令行工具（HTTP 压缩 / 取回服务）

## 快速开始

### 压缩大工具输出

```python
from sccs.core.compression_core import CompressionCore
from sccs.core.context_middleware import ContextMiddleware
from sccs.core.storage import InMemoryStorage

storage = InMemoryStorage()
middleware = ContextMiddleware(compress_threshold=1000, summary_max_chars=200)
core = CompressionCore(middleware)

original = "pytest failure line\n" * 500
messages = [
    {"role": "system", "content": "You are a coding agent."},
    {"role": "assistant", "content": ""},
    {"role": "tool", "content": original},
    {"role": "user", "content": "Continue debugging."},
]
compressed = core.compress_and_inject(messages)
# 大工具输出被替换为 [REF_ID: ...] (Summary: ...)；
# 原文存入所配置的存储后端，可随时按需取回。
```

### 按需取回原文

```python
import re

tool_content = [m["content"] for m in compressed if m.get("role") == "tool"][0]
ref_ids = re.findall(r"\[REF_ID: ([a-f0-9]+)\]", tool_content)

result = core.resolve_references(ref_ids)
# result = {"items": [{"ref_id": ..., "content": ...}], "missing_ref_ids": [...]}
for item in result["items"]:
    print(item["ref_id"], len(item["content"]), "chars restored")
```

## 命令行服务

包内提供 `sccs-openclaw` 命令，一个带压缩 / 取回接口的 HTTP 服务：

```bash
sccs-openclaw --host 127.0.0.1 --port 8123
```

接口：

- `POST /compress` — 把大文本压缩为 `[REF_ID] (Summary)`
- `POST /fetch` — 按 `ref_id` 取回原文
- `GET /health` — 存活探测

## 可选适配层

以下集成能力以 pip extras 形式随上游 Python 包提供，不在本安装包内：

- OpenAI SDK hook、LiteLLM hook、SWE-agent、mini-swe-agent、InfiAgent、LangChain、LangGraph
- Redis / UBS Memory 存储后端（代码支持，未实测）

如有需要，可通过上游 Python 包安装：

```bash
pip install sccs[openai]      # 或 [litellm]、[langchain]、[redis] 等
```

## 上游与反馈

- 上游源码仓库：https://atomgit.com/src-openeuler/sccs

## 许可证

Mulan PSL v2（木兰宽松许可证，第2版）
