mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-17 14:42:06 +00:00
feat(sessions): full prune-filter set + --redact on sessions export
- export now shares _add_session_filter_args / build_prune_filters with prune/archive: AGE grammar (5h/2d/1w/ISO) on --older-than plus the full filter set (--model, --provider, --min-messages, --min-cost, --branch, --chat-id, ...) for both JSONL and md/qmd bulk exports; --dry-run works on JSONL too; removes the one-off list_export_candidates helper. - new --redact flag runs exported message content and tool output through force-mode secret redaction (agent.redact) for jsonl, md, and qmd. - docs EN + zh-Hans updated; new tests for AGE grammar, extended filters, filtered JSONL, and redaction.
This commit is contained in:
parent
51dd5695ec
commit
acfefa4fda
7 changed files with 339 additions and 117 deletions
|
|
@ -303,10 +303,15 @@ hermes sessions export telegram-history.jsonl --source telegram
|
|||
|
||||
# Export a single session
|
||||
hermes sessions export session.jsonl --session-id 20250305_091523_a1b2c3d4
|
||||
|
||||
# Redact API keys/tokens/credentials from the exported content
|
||||
hermes sessions export backup.jsonl --redact
|
||||
```
|
||||
|
||||
Exported files contain one JSON object per line with full session metadata and all messages.
|
||||
|
||||
`export` accepts the same filters as `prune` / `archive` — `--older-than` / `--newer-than` / `--before` / `--after` (durations like `5h`/`2d`/`1w`, bare days, or ISO timestamps), `--source`, `--title`, `--model`, `--provider`, `--cwd`, `--min-messages` / `--max-messages`, `--min-tokens` / `--max-tokens`, `--min-cost` / `--max-cost`, `--min-tool-calls` / `--max-tool-calls`, `--user`, `--chat-id`, `--chat-type`, `--branch`, and `--end-reason`. Add `--dry-run` to preview which sessions match without writing anything. Note: bulk filters match *ended* sessions; unfiltered `export` dumps everything, including active ones.
|
||||
|
||||
### Export Sessions to Markdown/QMD
|
||||
|
||||
Pass `--format md` or `--format qmd` when you want a readable, file-based archive before hiding or deleting old sessions. Markdown/QMD exports write one file per session into a directory (default: `~/.hermes/session-exports`).
|
||||
|
|
@ -321,14 +326,17 @@ hermes sessions export --format md --session-id 20250305_091523_a1b2c3d4 --linea
|
|||
# Preview ended sessions older than 90 days without writing files
|
||||
hermes sessions export --format md --older-than 90 --dry-run
|
||||
|
||||
# Export ended Telegram sessions older than 30 days to QMD files
|
||||
hermes sessions export --format qmd --older-than 30 --source telegram
|
||||
# Export ended Telegram sessions older than 2 weeks to QMD files
|
||||
hermes sessions export --format qmd --older-than 2w --source telegram
|
||||
|
||||
# Export long Claude sessions, secrets redacted
|
||||
hermes sessions export --format md --model sonnet --min-messages 50 --redact
|
||||
|
||||
# Only after verification, export and delete one explicitly named session
|
||||
hermes sessions export --format md --session-id 20250305_091523_a1b2c3d4 --delete-after-verified --yes
|
||||
```
|
||||
|
||||
Markdown/QMD export writes one `.md` or `.qmd` file per exported session plus a `manifest.jsonl` with the file path, message count, lineage ids, and SHA-256. Bulk export requires a filter such as `--older-than` or `--source`; a bare bulk export is refused. `--delete-after-verified` is intentionally limited to `--session-id` and requires `--yes`.
|
||||
Markdown/QMD export writes one `.md` or `.qmd` file per exported session plus a `manifest.jsonl` with the file path, message count, lineage ids, and SHA-256. Bulk export requires at least one filter; a bare bulk export is refused. `--delete-after-verified` is intentionally limited to `--session-id` and requires `--yes`. `--redact` scrubs secrets (API keys, tokens, credentials) from message content and tool output before writing — recommended for any export you plan to share.
|
||||
|
||||
### Delete a Session
|
||||
|
||||
|
|
|
|||
|
|
@ -280,10 +280,15 @@ hermes sessions export telegram-history.jsonl --source telegram
|
|||
|
||||
# 导出单个 session
|
||||
hermes sessions export session.jsonl --session-id 20250305_091523_a1b2c3d4
|
||||
|
||||
# 从导出内容中脱敏 API key/token/凭据
|
||||
hermes sessions export backup.jsonl --redact
|
||||
```
|
||||
|
||||
导出文件每行包含一个 JSON 对象,包含完整的 session 元数据和所有消息。
|
||||
|
||||
`export` 接受与 `prune` / `archive` 相同的过滤器 — `--older-than` / `--newer-than` / `--before` / `--after`(时长如 `5h`/`2d`/`1w`、纯数字天数或 ISO 时间戳)、`--source`、`--title`、`--model`、`--provider`、`--cwd`、`--min-messages` / `--max-messages`、`--min-tokens` / `--max-tokens`、`--min-cost` / `--max-cost`、`--min-tool-calls` / `--max-tool-calls`、`--user`、`--chat-id`、`--chat-type`、`--branch` 和 `--end-reason`。加 `--dry-run` 可预览匹配的 session 而不写入任何内容。注意:带过滤器的批量导出只匹配*已结束*的 session;不带过滤器的 `export` 会导出所有 session(包括活跃的)。
|
||||
|
||||
### 导出 Session 为 Markdown/QMD
|
||||
|
||||
当你想在隐藏或删除旧 session 之前保留一份可读的文件归档时,传入 `--format md` 或 `--format qmd`。Markdown/QMD 导出会为每个 session 写入一个文件到目录中(默认:`~/.hermes/session-exports`)。
|
||||
|
|
@ -298,14 +303,17 @@ hermes sessions export --format md --session-id 20250305_091523_a1b2c3d4 --linea
|
|||
# 预览 90 天前已结束的 session,不写入文件
|
||||
hermes sessions export --format md --older-than 90 --dry-run
|
||||
|
||||
# 将 30 天前已结束的 Telegram session 导出为 QMD 文件
|
||||
hermes sessions export --format qmd --older-than 30 --source telegram
|
||||
# 将 2 周前已结束的 Telegram session 导出为 QMD 文件
|
||||
hermes sessions export --format qmd --older-than 2w --source telegram
|
||||
|
||||
# 导出长的 Claude session,并脱敏
|
||||
hermes sessions export --format md --model sonnet --min-messages 50 --redact
|
||||
|
||||
# 导出并在校验通过后删除一个明确指定的 session
|
||||
hermes sessions export --format md --session-id 20250305_091523_a1b2c3d4 --delete-after-verified --yes
|
||||
```
|
||||
|
||||
Markdown/QMD 导出为每个 session 写入一个 `.md` 或 `.qmd` 文件,并附带一个 `manifest.jsonl`,记录文件路径、消息数量、lineage id 和 SHA-256。批量导出必须带过滤条件(如 `--older-than` 或 `--source`),不带过滤条件的批量导出会被拒绝。`--delete-after-verified` 仅限与 `--session-id` 搭配使用,且必须加 `--yes`。
|
||||
Markdown/QMD 导出为每个 session 写入一个 `.md` 或 `.qmd` 文件,并附带一个 `manifest.jsonl`,记录文件路径、消息数量、lineage id 和 SHA-256。批量导出必须带至少一个过滤条件,不带过滤条件的批量导出会被拒绝。`--delete-after-verified` 仅限与 `--session-id` 搭配使用,且必须加 `--yes`。`--redact` 会在写入前从消息内容和工具输出中清除密钥(API key、token、凭据)— 任何打算分享的导出都建议加上。
|
||||
|
||||
### 删除 Session
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue