360 Secure SkillHub
360 安全技能中心

会话日志分析

核心功能包括搜索历史会话、分析会话模式、提取关键信息及按时间过滤。适用于查找过往对话内容、分析会话规律、提取历史指令等场景。输入支持关键词、时间范围、日志文件名,输出为结构化的会话列表、搜索结果或指令提取内容,以Markdown表格或列表呈现。

534422530
534422530
热度 32.33
最近更新 2026-05-11 17:46:21
分类:数据依赖:代码执行 / 读写文件应用场景:数据处理 / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add laosi-session-logs
Metadata
name
session-logs
description
会话日志分析 - 搜索和分析历史会话日志,查找之前的对话内容和结果。
metadata
{"openclaw":{"requires":{},"install":[]}}
tags
["session","logs","history","search","analysis"]
version
1.0.0
author
laosi
source
adapted

Session Logs - 会话日志分析

激活词: 会话日志 / 搜索历史 / 历史记录

功能

  • 搜索历史会话
  • 分析会话模式
  • 提取关键信息
  • 按时间过滤

Python实现

import json
import os
from datetime import datetime, timedelta
from pathlib import Path

class SessionLogs:
    def __init__(self, log_dir: str = "~/.openclaw/logs"):
        self.log_dir = Path(log_dir).expanduser()
    
    def list_sessions(self, days: int = 7) -> list:
        sessions = []
        cutoff = datetime.now() - timedelta(days=days)
        
        for file in self.log_dir.glob("*.log"):
            mtime = datetime.fromtimestamp(file.stat().st_mtime)
            if mtime > cutoff:
                sessions.append({
                    'file': file.name,
                    'modified': mtime,
                    'size': file.stat().st_size
                })
        
        return sorted(sessions, key=lambda x: x['modified'], reverse=True)
    
    def search_logs(self, keyword: str, days: int = 7) -> list:
        results = []
        for file in self.log_dir.glob("*.log"):
            try:
                with open(file, 'r', encoding='utf-8', errors='ignore') as f:
                    for i, line in enumerate(f, 1):
                        if keyword.lower() in line.lower():
                            results.append({
                                'file': file.name,
                                'line': i,
                                'content': line.strip()[:200]
                            })
            except:
                pass
        return results
    
    def extract_commands(self, log_file: str) -> list:
        commands = []
        with open(self.log_dir / log_file, 'r') as f:
            for line in f:
                if 'command:' in line.lower() or 'user:' in line.lower():
                    commands.append(line.strip())
        return commands

使用示例

logs = SessionLogs()

# 列出最近7天会话
recent = logs.list_sessions(7)
for s in recent:
    print(f"{s['modified']}: {s['file']}")

# 搜索关键词
results = logs.search_logs("Python", days=30)
for r in results:
    print(f"{r['file']}:{r['line']}: {r['content']}")

输出格式

## 会话日志

### 最近会话
| 日期 | 文件 | 大小 |
|------|------|------|
| 2026-04-28 | 2026-04-28.log | 1.2MB |
| 2026-04-27 | 2026-04-27.log | 2.3MB |

### 搜索结果 "Python"
- 2026-04-28.log:142: "用Python写个脚本..."
- 2026-04-27.log:89: "Python怎么导入模块"