Files
2026-11-05 11:41:01 -08:00

27 lines
11 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: hermes-dreaming
repo: https://github.com/itpartypattaya/hermes-dreaming
sha: 56243006eceb54a245d748f2eb39679fa90d4197
description: "Nightly deterministic memory consolidation (\"dreaming\"): corroborates candidate facts with what humans actually said on distinct days, proposes the few worth keeping with a verbatim edit anchor, asks whether stale memory entries still hold, and wakes the agent only when there is work — including a memory file close to its char limit. Fact sources: the holographic store, a SQLite or JSONL export, or none. Secrets and instructions are screened by the dream's own rules plus a verbatim copy of the holographic plugin's screen (scripts/holo_screen.py, MIT, same maintainer), applied to stored facts and human messages before anything reaches memory, the report or the model. Portable Agent Plugins v1 package (plugin.json + skills/); no tools, hooks, middleware or env vars. Disclosure — by default the scripts make no network or LLM calls and open state.db and every fact store read-only (SQLite mode=ro; with holographic >= 0.15.0 including its fact_versions/fact_confirmations tables, to say who stands behind a fact); they also read Hermes config.yaml's memory/timezone keys and the holographic plugin's db_path/scope/cron_writes/min_trust_threshold (the floor recall applies, so a rejected fact is only reported when the store still trusts it) and, to say so in install.py --check, embeddings/mirror_memory_writes, the pending/memory approval queue, cron/jobs.json (to find their own jobs) and — only when chat_stores is set, with holographic scope user/chat/thread — the per-chat databases next to the store (counts of every one; facts of the chats listed in promote_from). An optional cloud judge (judge in dreaming.json, off by default; off, its code is not even loaded) may, once the owner enables it, send for each mention the rules counted the fact's text and that person's own words (no reply quote, link, id, sender or time; names inside the text may be included; screened for secrets and instructions first), only from the chats, sources and chat stores the owner lists, over HTTPS to the providers the owner lists, in the owner's order: OpenRouter's Decisions API (model typesafe/jev-1.14, Jev by TypeSafe; the data reaches OpenRouter and TypeSafe) and/or OpenAI's Decisions API (model gpt-6-luna); when the first gives no usable answer the same pair may reach the next. A verdict can only remove a counted mention — from promotion, confirmation, fact decay, \"said again\" after a rejection, the selection of new facts and conflicts, and evidence. Keys OPENROUTER_API_KEY / OPENAI_API_KEY are read from the environment or, since Hermes withholds these provider keys from cron scripts, straight from their own line in $HERMES_HOME/.env; the judge's calls are billed to those keys. It keeps a 90-day verdict cache and a 90-day local journal of the pairs sent in $HERMES_HOME/cache (the journal is deleted on nights the judge is off); the nightly spending cap ($0.05 by default) is soft; data already sent cannot be recalled and falls under the providers' retention terms. The user-run installer copies three gate scripts into $HERMES_HOME/scripts, seeds $HERMES_HOME/dreaming.json and, through Hermes' cron Python API, creates (or with --rebind re-points) two agent cron jobs bound to this plugin's own skill with only the memory toolset, plus one no_agent job (every 15 min, no model) that reads the fact stores to keep a hash index of diary lines and, for facts holographic >= 0.8.0 has forgotten, rewrites the dream's own cache files, judge files and diary without them, deletes the output files of the dream's own cron jobs that mention them (by id or verbatim text) and deletes the set-aside copies of its own broken state files; with a chat --deliver target the reports are attached as a session you can reply to. The agent runs send recent human messages (up to 200 / 40k chars, each with its chat type and sender id) and fact snippets to your configured model; state goes to $HERMES_HOME/cache and a diary to $HERMES_HOME/memories/DREAMS.md (configurable); memory files are changed by the agent only through the regular memory tool, and with the holographic provider it also adds candidate facts via fact_store (with holographic >= 0.15.0 marked said or inferred; with holographic >= 0.8.0 also change / end / correct / forget, the last three only on a human's own answer; forget is irreversible), lowers trust on human-rejected facts via fact_feedback, with holographic >= 0.15.0 raises trust (fact_feedback confirmed, +0.05, at most 10 facts a night) on facts people repeated on two or more different days and, when keywords.enabled is set (off by default), adds search keywords to facts via fact_store update. Since 3.4.0, with holographic >=0.19.0 and profile scope, it also reads fact_merges and current version ids to propose disjoint duplicate pairs. It saves immutable proposal numbers, both full texts, version ids, origins, keywords and the provider database path in cache/dream-proposals.json; open proposals expire after 180 days and closed ones are removed after 30 days. Full pair texts are included in the agent report and therefore reach the configured agent model. Old facts are merged by fact_store only after the adult memory owner approves the exact proposal; the response checks the database and uses expect to refuse changed versions. Scheduled extraction may merge only a newly added paraphrase from its own session into an existing fact, never old facts from other sessions. The scripts themselves still open the fact store read-only. The sweep also cleans the state of merged copies and archives their hashes so a later forget can remove older untagged diary copies; merging itself does not erase the diary. No new credentials, network providers or tools are introduced. Version 3.4.2 clarifies that forget cleans the store and the skill's own files; Git history, external database dumps, system backups and Hermes session history require separate cleanup. Reports distinguish a successful store deletion from a retained external copy and do not promise that retrying removes a documented history boundary. Version 3.5.0 adds explicit cron maintenance: known stock prompts are synchronized while custom prompts are preserved; --update-existing applies only explicitly supplied settings and --job-id scopes the entire operation. cron.expected_roles controls desired creation without pausing existing jobs. --upgrade validates the request before copying gate scripts and updating cron through public APIs, then checks the result. Checks expose paused jobs, execution modes, missing roles and duplicates; no automatic activation or job deletion. --inherit-model explicitly clears both model and provider pins. The public cron update API has no CAS; avoid concurrent configuration edits during installation. Version 3.6.0 adds opt-in read-only task-outcome summaries and recorded memory-attempt explanations from holographic >=0.20.0 (experience_schema=1). It reads bounded attempt/version references and agent-reported outcomes; usefulness does not change truth, trust, ranking or MEMORY.md. It makes no new model or network calls and keeps no second correction-text cache. Explicit --memory-store must be in chat_stores.promote_from; stores are never joined. task_outcomes: true adds only summary counts to the ordinary nightly result and creates no extra wakeup. Missing capability is reported as unsupported, not as a successful empty journal. Human corrections reported by the agent are not authenticated human confirmation. Version 3.6.1 reuses parsed numbers within a bounded in-memory nightly cache, reducing repeated work without changing contradiction rules. Version 3.6.2 copies the cron gate scripts atomically (an interrupted install keeps the previous gate) and names any cron job the installer refuses to change with the fix. Version 3.7.0 keeps the whole-store duplicate search within its nightly budget on large stores (it also narrows candidates by the numbers and names the pair rule requires; the rule still decides every pair) and names the store in task-outcome summaries. Version 3.7.1 derives each message's data once per nightly pass, with memory bounded by corroboration.memory_mb (default 256 MB; above it data is rebuilt on demand, never changing decisions). Version 3.7.2 makes the quarantine screen about 40× faster on long messages with byte-identical decisions (re-vendored holographic screen 0.22.1). Version 3.7.3 fixes an install-time scanner false positive in that screen's start list (3.7.2 was refused by hermes plugins install) and runs hermes plugins validate in CI. Version 3.7.4 changes no behaviour: the vendored holographic screen is copied whole and checked before it is written. Version 3.8.0 no longer promotes an agent's conclusion nobody confirmed (holographic origin inferred) to MEMORY.md by any corroboration route; people repeating it offer it for confirmation instead, and stores without origins are promoted as before; --explain says why, and --memory-explain keeps the provider's count of candidates that changed before the record. Version 3.8.4 keeps, for each memory entry, hashed word stems and numbers plus a 60-character preview (none for an entry with a secret) in the loss-guard snapshot in $HERMES_HOME/cache, so an entry the agent compressed, reworded or merged is no longer reported as lost; the alert names lost entries by that preview. Version 3.8.5 has the nightly agent change memory entries with the memory tool's patch (Hermes 0.22 removed replace; replace remains only as the fallback for Hermes 0.21), counts a patch staged in the pending/memory approval queue as waiting, and compares a lost entry only with entries the night wrote (also across a split, with numbers compared as numbers); for an entry of fewer than two word stems the snapshot also keeps hashed stems of its short words or, for one with no words and no secret, hashed character trigrams; state files with a UTF-8 BOM are read."
maintainer: itpartypattaya
tier: community
category: memory
requires_hermes: ">=0.21.0"
docs_url: https://github.com/itpartypattaya/hermes-dreaming/blob/56243006eceb54a245d748f2eb39679fa90d4197/README.md
version: "3.8.5"
image: "https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/56243006eceb54a245d748f2eb39679fa90d4197/docs/banner.png"
screenshots:
- "https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/56243006eceb54a245d748f2eb39679fa90d4197/docs/overview.png"
- "https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/56243006eceb54a245d748f2eb39679fa90d4197/docs/lifecycle.png"
- "https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/56243006eceb54a245d748f2eb39679fa90d4197/docs/files.png"
- "https://raw.githubusercontent.com/itpartypattaya/hermes-dreaming/56243006eceb54a245d748f2eb39679fa90d4197/docs/judge.png"
platforms: []
capabilities:
provides_tools: []
provides_hooks: []
provides_middleware: []
requires_env: []
known_issues:
- "Duplicate detection is a heuristic for questions, not proof that facts mean the same thing. Old facts require the owner to approve both complete texts. This section is disabled without holographic 0.19.0, outside profile scope, or when the provider database cannot be verified; a merge has no automatic unmerge."
- "Cron maintenance requires a single configuration writer; the public cron update API cannot atomically reject every concurrent manual edit. A paused job may already have an execution in progress."