Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Dragon Session Compactor

v1.0.0

上下文压缩技能。当对话越来越长、token快爆的时候,自动压缩旧消息为摘要,保留最近上下文。 触发条件: - "压缩会话"、"compact"、"上下文满了" - 检测到消息超过阈值(默认100条或token估计超过80000) - 手动调用 $compact 无外部依赖,纯Node.js实现。

0· 81·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for xhmqq616/dragon-session-compactor.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Dragon Session Compactor" (xhmqq616/dragon-session-compactor) from ClawHub.
Skill page: https://clawhub.ai/xhmqq616/dragon-session-compactor
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install dragon-session-compactor

ClawHub CLI

Package manager switcher

npx clawhub@latest install dragon-session-compactor
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
声明的目的(压缩长会话并保留最近上下文)与包含的脚本行为一致:compact.mjs 提供压缩、估算 tokens、生成摘要并将结果保存在会话文件(默认 ./.clawsession.json)中。没有网络调用或外部依赖,功能实现与描述对等。
!
Instruction Scope
SKILL.md 与脚本指令主要局限在会话处理,但脚本会读写磁盘:默认会话文件 './.clawsession.json'(相对当前工作目录)和 check-compact.mjs 中的 LOG_PATH,它通过 path.join(__dirname,'..','..','..','..','.clawsession-log.json') 向上跨越多个目录写入日志。这意味着日志可能被写到技能目录之外的父目录(取决于安装/运行位置),这是在元数据中未声明的文件系统访问/写入。SKILL.md 还建议将检查加入 heartbeat/cron,这会导致定期自动运行——合规但需注意频率与权限。
Install Mechanism
这是说明+脚本的技能包,没有安装脚本或从网络下载的依赖。没有远程提取、无第三方包安装,风险较低。
Credentials
技能不要求任何环境变量或外部凭据,代码也未读取 process.env。唯一需要的是对文件系统(读/写会话文件和日志文件)的访问权限,这与其目的(持久化会话/日志)是可以解释的,但写入父目录的位置应当明确和可配置。
Persistence & Privilege
flags 中没有 always:true,默认允许模型调用(正常)。不过 SKILL.md 建议周期性检查(heartbeat/cron),配合 check-compact.mjs 会导致定期执行并持续写入日志/会话文件。自动化执行本身是合理的,但与“写入到父目录”的行为组合增加了潜在影响范围——应确保运行位置与文件路径是受控的。
What to consider before installing
这个技能在功能上与描述一致:它会把旧消息汇总为摘要并把会话写入磁盘(默认 ./.clawsession.json)。关注两点:1) check-compact.mjs 的日志路径会向上跨越好几级目录写入 .clawsession-log.json——这可能把日志写到技能目录之外,取决于你如何运行它;2) 如果你将其加入 heartbeat/cron,会定期自动运行并持续修改这些文件。建议在安装前:a) 检查并(如需要)修改 DEFAULT_CONFIG.storePath 和 LOG_PATH 以指向你认可的位置;b) 确认运行该脚本的用户/agent 有适当的文件访问权限且不会意外覆盖敏感文件;c) 如果接受自动定时运行,请决定合适的频率并监控首次几次运行的输出。若你希望我,我可以给出如何安全地修改脚本以把日志与会话文件限定在技能目录内并添加配置选项。

Like a lobster shell, security has layers — review code before you run it.

compactvk97ed48mt8t7v81hz7mmg3mhsn84bwgrcontextvk97ed48mt8t7v81hz7mmg3mhsn84bwgrdragonvk97ed48mt8t7v81hz7mmg3mhsn84bwgrlatestvk97ed48mt8t7v81hz7mmg3mhsn84bwgrsessionvk97ed48mt8t7v81hz7mmg3mhsn84bwgrsummaryvk97ed48mt8t7v81hz7mmg3mhsn84bwgr
81downloads
0stars
1versions
Updated 3w ago
v1.0.0
MIT-0

Session Compactor - 上下文压缩系统

核心概念

原始会话: [msg1, msg2, ..., msgN]
    ↓ 检测到需要压缩
    ↓ 提取关键信息
    ↓ 生成摘要
压缩后会话: [System(摘要), msg(N-3), msg(N-2), msg(N-1), msgN]

配置

参数默认值说明
preserveRecent4保留最近N条消息
maxTokens80000超过此token数触发压缩
summaryMaxTokens2000摘要最大token数
storePath./.clawsession.json会话存储路径

数据结构

Session 文件格式 (.clawsession.json)

{
  "version": 1,
  "createdAt": "2026-04-06T...",
  "updatedAt": "2026-04-06T...",
  "messages": [...],
  "compactionCount": 0,
  "totalTokens": 12345
}

消息格式

{
  "role": "user|assistant|system|tool",
  "content": "...",
  "timestamp": "ISO8601",
  "toolUse": {
    "name": "read_file",
    "input": "..."
  }
}

快速使用

# 手动压缩
node scripts/compact.mjs run

# 检查当前会话状态
node scripts/compact.mjs status

# 强制压缩(忽略阈值)
node scripts/compact.mjs compact --force

# 查看压缩历史
node scripts/compact.mjs history

API 接口

const { SessionCompactor } = require('./scripts/compact.mjs');

const compactor = new SessionCompactor({
  preserveRecent: 4,
  maxTokens: 80000,
  storePath: './.clawsession.json'
});

// 检查是否需要压缩
const needsCompaction = compactor.shouldCompact();

// 执行压缩
const result = compactor.compact();
console.log(`压缩了${result.removedCount}条消息`);

// 估算当前token
const tokens = compactor.estimateTokens();
console.log(`当前约${tokens} tokens`);

压缩算法

1. 提取关键信息

从旧消息中提取:

  • 关键文件路径(.rs, .py, .ts, .json, .md)
  • 工具调用记录(bash, read_file, write_file等)
  • 待办事项(todo, next, pending, follow up)
  • 用户请求(最近的3条用户消息)
  • AI响应摘要(每条AI响应的核心内容)

2. 生成摘要格式

<summary>
## 会话摘要

**压缩次数**: 2
**时间范围**: 2026-04-06 10:00 - 16:00
**总消息数**: 48条(已压缩2次)

### 关键操作
- 工具调用: bash(x3), read_file(x5), write_file(x2)
- 主要文件: src/main.py, SKILL.md, evolution-log.md

### 用户主要请求
1. 创建 efficiency-hub 技能
2. 发布 efficiency-hub 到 Clawhub
3. 学习 Claw Code 架构

### 待完成事项
- 继续改进 chat-memory-v2
- 完善工具注册表

### 最近消息(未压缩)
- [保留最近4条消息原文]
</summary>

3. 增量压缩

如果之前已经压缩过,摘要会累积:

<summary>
## 会话摘要

**压缩次数**: 3

### 早期上下文(压缩于 10:00)
[第一次压缩的摘要内容]

### 近期上下文(压缩于 14:00)
[第二次压缩的摘要内容]

### 最新摘要(压缩于 16:00)
[第三次压缩的摘要内容]

### 最近消息
[保留的4条消息]
</summary>

Token 估算

简单估算(无需外部库):

tokens ≈ 总字符数 / 4 + 工具调用次数 * 10

文件清单

session-compactor/
├── SKILL.md              # 本文件
├── scripts/
│   └── compact.mjs       # 核心压缩逻辑
└── references/
    └── compaction-log.md # 压缩操作日志

使用场景

  1. 自动触发 — 在 heartbeat 或 cron 任务中检查是否需要压缩
  2. 手动调用 — 用户说"压缩一下"
  3. 定时压缩 — 每小时自动检查

集成到 OpenClaw

在 HEARTBEAT.md 中加入:

## 自动压缩检查
每30分钟检查一次会话长度,超过阈值自动压缩

龙虾王子自我进化的成果 🦞

Comments

Loading comments...