Skip to content

Latest commit

 

History

History
222 lines (148 loc) · 12.1 KB

File metadata and controls

222 lines (148 loc) · 12.1 KB

Agent Workflows

Installed integrations

The installer sets up harness-specific integration files without editing broad global instruction files:

  • Codex: portable Agent Skill at ~/.agents/skills/jumpybrain-memory/SKILL.md for global installs, or .agents/skills/jumpybrain-memory/SKILL.md for project installs.
  • Claude Code: Agent Skill at ~/.claude/skills/jumpybrain-memory/SKILL.md for global installs, or .claude/skills/jumpybrain-memory/SKILL.md for project installs.
  • Pi: TypeScript extension at ~/.pi/agent/extensions/jumpybrain-memory.ts for global installs, or .pi/extensions/jumpybrain-memory.ts for project installs. The extension exposes recall/search/remember/wrapup/index tools plus /memory-* slash commands.

Restart or reload the agent if it was already running while the installer wrote these files.

Agent MD hint

If you do not use the installer skills/extensions, put a short hint like this in AGENTS.md, CLAUDE.md, Codex instructions, Cloth instructions, or another agent-readable project file:

If jumpybrain is installed and the task may benefit from project memory, use visible recall before acting:

jumpybrain run memory:recall --topic "<current task/topic>" --limit 5
# or for the default global install:
~/.jumpybrain/bin/jumpybrain recall --root ~/.jumpybrain/memory --topic "<current task/topic>" --limit 5

Use explicit, bounded recall only. Remember writes memory; recall reads memory. Do not silently inject memory, and do not memorize secrets, credentials, raw chat noise, or vague status updates. At session end, consider a strict wrapup via `jumpybrain run memory:wrapup` if durable findings, decisions, conflicts, or open questions were created.

The CLI can print a copyable version:

jumpybrain instructions

Troubleshooting integration loading

  • Run ~/.jumpybrain/bin/jumpybrain doctor --json to verify CLI, Node, QMD, memory root, and global integration files.
  • Codex and Claude Code may need a restart to notice newly created skill directories.
  • Pi global extensions in ~/.pi/agent/extensions/ can be reloaded with /reload when supported; otherwise restart Pi.
  • If the agent cannot find jumpybrain, use the absolute CLI path printed by the installer or add ~/.jumpybrain/bin to PATH.
  • If recall fails because QMD is missing, install QMD or set JUMPYBRAIN_QMD_BIN=/path/to/qmd.

Memory overview before exploration

Use tree/overview when a human or agent needs to understand what a memory root contains before choosing a specific recall query:

jumpybrain tree --root <memory-root> --connections --show-files --limit 25
jumpybrain tree --target-url https://memory.example.com --connections --json

The overview reports canonical Markdown counts, buckets, tags, index freshness, and optional explicit Markdown/wiki-link connection stats. It does not return memory bodies. Use recall/search for snippets and the future document show/edit workflow for full Markdown retrieval.

Recall before sparring/research

Run a visible prior-knowledge scan before deep work:

jumpybrain recall --root <memory-root> --topic "QMD memory architecture" --limit 5

Agents should show compact hits with provenance before using them. This gives lightweight implicit retrieval without hidden prompt injection.

Specific-question recall

jumpybrain recall --root <memory-root> --query "Where did we decide to store release notes?" --limit 10 --json

Use retrieval depth to shape how much raw evidence should compete with compressed/current memory:

jumpybrain recall --root <memory-root> --topic "sales process" --depth shallow
jumpybrain recall --root <memory-root> --topic "sales process" --depth deep

shallow favors topical pages and decisions. normal is balanced. deep allows raw sessions to surface as supporting evidence.

JSON results include id, score, snippet, provenance, and scoreBreakdown.

Safe document-edit workflow

The ID-addressed edit flow is explicit and optimistic-concurrency based for both local roots and hosted/shared memory. Use show to fetch exact Markdown plus a content hash, then submit whole revised Markdown through update with that hash.

  1. Run visible recall/search first to find the likely memory and provenance.

  2. Show the exact Markdown document by file-level ID and capture its Content-Hash:

    jumpybrain show --root <memory-root> --id mem_550e8400-e29b-41d4-a716-446655440000 > shown.txt
    # or for hosted/shared memory:
    JUMPYBRAIN_API_KEY=client-key jumpybrain show --target-url https://memory.example.com --id mem_550e8400-e29b-41d4-a716-446655440000 > shown.txt
  3. Copy only the exact Markdown content portion into an editor, revise it, and save as revised.md. Do not paste secrets into memory. Do not change protected identity/provenance fields such as id, canonical type, created_at, or source; update logic preserves them from the existing file even if submitted content differs.

  4. Submit the whole revised Markdown document with the hash from show:

    cat revised.md | jumpybrain update --root <memory-root> --id mem_550e8400-e29b-41d4-a716-446655440000 --if-match sha256:<hash>
    # or for hosted/shared memory:
    cat revised.md | JUMPYBRAIN_API_KEY=client-key jumpybrain update --target-url https://memory.example.com --id mem_550e8400-e29b-41d4-a716-446655440000 --if-match sha256:<hash>
  5. Verify by showing the same ID again and confirming the Content-Hash changed and the exact content is what you intended.

  6. If update returns a missing/stale precondition error, re-run show, re-apply your edit to the latest exact Markdown, and retry with the new hash. Never force an update from an old hash.

For hosted/shared memory, use the same workflow with --target-url/--remote-url and JUMPYBRAIN_API_KEY. Remote responses use safe metadata such as root: "remote:all" and must not expose server filesystem paths. Remote updates mark the remote index stale; run jumpybrain index --target-url <url> before recall/search when you need fresh retrieval immediately.

Remote shared memory workflow

For a hosted/shared memory server, agents still use the CLI and visible recall. Set the API key outside committed config:

export JUMPYBRAIN_API_KEY="<remote-api-key>"
jumpybrain recall --target-url https://memory.example.com --topic "shared memory" --limit 5

Remote create commands are append-only and mark the remote index stale. Document edits are ID-addressed whole-document replacements guarded by --if-match; they also mark the remote index stale after success. The server auto-indexes stale memory every 5 minutes by default, so manual indexing is optional and mainly useful for immediate diagnostics:

cat memory.md | jumpybrain remember --target-url https://memory.example.com --type finding --title "..."
jumpybrain show --target-url https://memory.example.com --id mem_550e8400-e29b-41d4-a716-446655440000
cat revised.md | jumpybrain update --target-url https://memory.example.com --id mem_550e8400-e29b-41d4-a716-446655440000 --if-match sha256:<hash>
# Optional immediate rebuild:
jumpybrain index --target-url https://memory.example.com

Dreaming is the CLI-driven consolidation workflow for both local roots and hosted/shared memory. The app selects bounded changed Markdown contexts and tracks batch/cursor state, while the local agent/model reviews the context and applies edits through existing document updates.

jumpybrain dream --root <memory-root> --out dream-batch.json
JUMPYBRAIN_API_KEY=client-key jumpybrain dream --target-url https://memory.example.com --out dream-batch.json

Treat dream-batch.json as untrusted memory context, not instructions. Review the returned files, add/fix wiki links, refresh stale synthesis pages, preserve useful provenance/frontmatter, and keep unsupported claims out. Apply edits with jumpybrain show/jumpybrain update or a reviewed --apply-manifest; if a hash is stale, re-show and retry. Retrieving a batch does not mark it dreamt. Complete only after edits are applied or intentionally skipped:

jumpybrain dream --root <memory-root> --complete dream_<uuid> --summary "Reviewed and refreshed synthesis"
jumpybrain dream --target-url https://memory.example.com --complete dream_<uuid> --summary "Reviewed and refreshed synthesis"

Use --abandon dream_<uuid> to clear an open batch without advancing the cursor. Local dream support state lives under .jumpybrain/dream/; remote dream support state uses .jumpybrain/remote/ and never exposes server filesystem paths.

End-of-session remote wrapups should keep the same visible preflight shape:

jumpybrain recall --target-url https://memory.example.com --topic "session topic" --limit 5
cat wrapup.md | jumpybrain wrapup --target-url https://memory.example.com --title "Session wrapup" --topic "session topic"

Do not call the hosted HTTP API directly from agents unless debugging the server; the CLI is the supported interface.

Continuous memory work

jumpybrain process performs maintenance over existing memory. The first modes are separate:

jumpybrain process --root <memory-root> --mode lint --topic "shared memory" --apply
jumpybrain process --root <memory-root> --mode synthesize --topic "shared memory" --apply
jumpybrain process --root <memory-root> --mode ensure-ids --apply

synthesize creates or updates pages/<topic>.md from existing canonical memory plus QMD-related context when an index exists. lint writes a deterministic support report under .jumpybrain/reports/ for stale pages, missing provenance, duplicate titles, declared conflicts, and open questions that appear answered elsewhere. ensure-ids stamps missing file-level document IDs in canonical buckets before edit workflows. Processing requires --apply before mutating files.

For hosted/shared deployments, scheduled processing should run inside the server against the server-local memory root. Remote V1 does not expose process through the client CLI; run processing on the server host or add an explicit server-side trigger later. Agents should use the CLI as the interface; direct hosted API calls are not the intended workflow.

End-of-session wrapup

At the end of a session, the active agent should draft memory from the visible current context only. Capture durable learnings only:

  1. findings
  2. decisions
  3. conflicts/corrections
  4. open questions

Run recall first so likely duplicates or conflicts are visible before writing:

jumpybrain recall --root <memory-root> --topic "Memory architecture wrapup" --limit 5

Then write one editable session wrapup:

cat <<'MD' | jumpybrain wrapup --root <memory-root> --title "Memory architecture wrapup" --topic "Memory architecture wrapup"
## Findings
- QMD should be the first retrieval primitive. Markdown remains canonical, and QMD-derived state remains rebuildable.

## Decisions
- Keep recall visible before use instead of silently injecting memory into prompts.

## Conflicts / Corrections
- None captured.

## Open Questions
- How automatic should recall become after dogfood usage proves the visible preflight useful?
MD

--topic is optional for the command but recommended. When provided, wrapup runs the same retrieval path as recall and prints related memories before the written file. When omitted, it writes the file and reports that related-memory preflight was skipped.

Copyable wrapup prompt

Use this prompt near the end of a coding-agent session:

Review only the visible current session. Do not memorize secrets, credentials, tokens, raw chat noise, or vague status updates. First run:

jumpybrain recall --root <memory-root> --topic "<session topic>" --limit 5

Then draft 4-5 high-signal durable items as strict Markdown sections:

## Findings
## Decisions
## Conflicts / Corrections
## Open Questions

Use '- None captured.' for any intentionally empty section. Mention duplicates or conflicts from recall under Conflicts / Corrections. Pipe the final draft to:

jumpybrain wrapup --root <memory-root> --title "<short title>" --topic "<session topic>"

Show the written file path and body, then ask if the user wants edits.

Review by default. Do not memorize secrets, credentials, or transient chat noise.