Files
obsidian-wiki/.skills/hermes-history-ingest/references/hermes-data-format.md
T
nac 777607dc29 chore(repo): establish project baseline
Track the source-of-truth code, skills, bootstrap rules, docs, and packaging files before adding new features.

Exclude local vault config, generated skill mirrors, temporary exports, virtual environments, and business data files from version control.

Validation: inspected staged file list and git ignored status before commit.
2026-07-05 11:03:40 +00:00

132 lines
3.0 KiB
Markdown

# Hermes Agent — Data Format Reference
Field-level notes for parsing `~/.hermes/` artifacts during wiki ingest.
## Cache Root
`~/.hermes/` — or `$HERMES_HOME` for non-default profiles. All paths below are relative to this root.
## memories/
Each file is one discrete memory the agent persisted.
### Markdown memories (`*.md`)
Optional YAML frontmatter, then prose body:
```markdown
---
tags: [python, async, debugging]
created_at: 2026-03-10T14:22:00Z
project: my-api
---
When using `asyncio.gather` with return_exceptions=True, failed tasks return the exception
object rather than raising — check `isinstance(result, Exception)` on each item.
```
Fields of interest:
- `tags` — maps directly to wiki tags; normalize to kebab-case
- `created_at` — use for provenance / journal category decisions
- `project` — route to `projects/<project>/` when set
### JSON memories (`*.json`)
```json
{
"content": "...",
"created_at": "2026-03-10T14:22:00Z",
"tags": ["python", "async"],
"project": "my-api",
"source": "session:abc123"
}
```
Same field semantics as the markdown variant. `source` links back to the originating session.
## sessions/
Present only when session logging is enabled (`config.yaml: logging.sessions: true`).
### Directory layout
```
sessions/
└── 2026-03-10/
└── abc123.jsonl
```
### JSONL line schemas
**User / assistant turns:**
```json
{"role": "user", "content": "How do I debounce a React input?"}
{"role": "assistant", "content": "Use useCallback + useEffect with a setTimeout..."}
```
**Tool use:**
```json
{
"type": "tool_use",
"id": "tu_abc",
"name": "read_file",
"input": {"path": "/home/ubuntu/project/src/App.tsx"}
}
```
**Tool result:**
```json
{
"type": "tool_result",
"tool_use_id": "tu_abc",
"content": "..."
}
```
**Session metadata (first line):**
```json
{
"type": "session_meta",
"id": "abc123",
"cwd": "/home/ubuntu/projects/my-app",
"model": "claude-sonnet-4-6",
"started_at": "2026-03-10T14:00:00Z"
}
```
`cwd` is the most reliable project inference signal — use it to route knowledge to the right `projects/<name>/` page.
## config.yaml
Rarely useful for ingest. Useful fields if needed:
```yaml
model: claude-sonnet-4-6
hermes_home: ~/.hermes # resolved path, respects $HERMES_HOME
logging:
sessions: true # whether session JSONL files are written
memories: true # whether memories are persisted
```
## .hub/
Skills Hub state. **Skip entirely during ingest.** Contains:
- `lock.json` — installed skill manifest (not user knowledge)
- `audit.log` — install/update history
- `quarantine/` — flagged skills awaiting review
## Extraction Priority
| Source | Signal | Noise |
|---|---|---|
| `memories/*.md` | High — curated, stable | Low |
| `memories/*.json` | High — structured | Low |
| `sessions/**/*.jsonl` — assistant turns | Medium | Medium |
| `sessions/**/*.jsonl` — tool pairs | Low | High |
| `config.yaml` | Very low | — |
| `.hub/` | None | — |