بنقرة واحدة
memory-debug
// Diagnose Signet memory, recall, source, session, embedding, and graph issues from runtime truth without bypassing scope or provenance.
// Diagnose Signet memory, recall, source, session, embedding, and graph issues from runtime truth without bypassing scope or provenance.
Navigate Signet ontology and knowledge graph state from Codex.
Use Signet-specific recall and source search from Codex without confusing it with Codex native memory.
Save explicit notes into Codex native memory through Signet.
Search Signet transcript/session evidence from Codex.
Run explicit Signet recall through the canonical scoped recall path, preserving scores, sources, provenance, supplementary context, and session dedupe metadata.
Save an explicit scoped memory through Signet. Use only when the user clearly asks to remember something or when a tool/harness must persist an explicit memory row.
| name | memory-debug |
| description | Diagnose Signet memory, recall, source, session, embedding, and graph issues from runtime truth without bypassing scope or provenance. |
| user_invocable | true |
| arg_hint | [symptom or query] |
| builtin | true |
Use this skill when Signet memory behavior looks wrong: recall is empty, results are stale, a saved memory is missing, source-backed results are not appearing, prompt-submit context is missing, embeddings are unhealthy, or a session is bypassed.
Debug from runtime truth. Do not infer from MEMORY.md alone; it is generated
working context, not the database or the full source of truth.
Classify the symptom before running broad checks:
agentId / visibility.Start with the live daemon and workspace:
signet status
signet daemon status --json
curl -s http://localhost:3850/health
curl -s http://localhost:3850/api/status
Check the workspace and config:
printf '%s\n' "${SIGNET_WORKSPACE:-$HOME/.agents}"
test -f "${SIGNET_WORKSPACE:-$HOME/.agents}/agent.yaml"
test -f "${SIGNET_WORKSPACE:-$HOME/.agents}/memory/memories.db"
If the daemon is down:
signet daemon start
signet daemon restart
If extraction workers are intentionally paused:
signet daemon resume
Read recent logs when runtime state is unclear:
signet daemon logs --tail 200
If prompt-submit recall or automatic context injection is missing, inspect the session layer before blaming retrieval:
signet bypass --list
If the current session is bypassed:
signet bypass <session-key> --off
For repeated recall complaints, check session dedupe. Explicit recall with a
sessionKey suppresses rows already returned in the current context epoch
unless --include-recalled is set:
signet recall "<query>" --session-key <session-key> --include-recalled --json
If direct explicit recall works but prompt-submit context is empty, compare the hook wrapper:
curl -s http://localhost:3850/api/hooks/recall \
-H 'content-type: application/json' \
-d '{
"harness": "codex",
"query": "the missing context",
"agentId": "codex",
"sessionKey": "session-key",
"includeRecalled": true,
"runtimePath": "plugin"
}'
/api/hooks/recall should remain a hook-oriented wrapper around
/api/memory/recall, not a separate retrieval engine.
When a save is suspect, create a scoped smoke row with a unique phrase:
stamp="$(date -u +%Y%m%dT%H%M%SZ)"
signet remember "memory-debug smoke ${stamp}" \
--agent codex \
--tags debug,smoke \
--hint "memory debug smoke ${stamp}" \
--importance 0.7
Expected: a saved memory id plus embedded/no-embedding status. If it dedupes, the response should say so.
Rules:
--agent when debugging agent-scoped behavior--private when testing owner-only visibilitysourcePath, runtimePath, sourceId, and idempotencyKey when
debugging imported/source-derived writes through the APIFor lower-level checks, call the canonical endpoint:
curl -s http://localhost:3850/api/memory/remember \
-H 'content-type: application/json' \
-d '{
"content": "memory-debug API smoke",
"agentId": "codex",
"visibility": "global",
"tags": "debug,smoke",
"idempotencyKey": "memory-debug-api-smoke"
}'
Use the canonical recall path and preserve metadata:
signet recall "memory debug smoke" --agent codex --limit 10 --json
If there are no hits:
signet recall "memory debug smoke" --agent codex --keyword-query '"memory-debug" OR "smoke"' --json
signet recall "memory debug smoke" --agent codex --include-recalled --json
Inspect:
results[].idresults[].sourceresults[].scoreresults[].typeresults[].created_atresults[].supplementaryresults[].already_recalledmeta.noHitsmeta.timingsmeta.dedupeDo not describe recall as a fixed vector/BM25 blend. Current explicit recall combines FTS5, prospective hints, vectors, structured evidence, traversal, source-backed recall, optional reranking, and session dedupe.
For broad questions, test aggregate recall separately:
signet recall "what does Signet know about source truth" \
--agent codex \
--aggregate \
--no-save-aggregate \
--json
If aggregate fails, inspect aggregate.stoppedReason and whether the router or
source evidence is unavailable.
Use the built-in audit/backfill commands:
signet embed audit --json
signet embed backfill --dry-run --json
Only run a real backfill after confirming provider config and expected batch size:
signet embed backfill --batch-size 50
Check agent.yaml for:
embedding.providerembedding.modelembedding.dimensionsembedding.base_urlCommon root causes:
Semantic recall can still return keyword/source results when embeddings are missing. Treat "no embedding" as degraded retrieval, not necessarily failed memory persistence.
If a result should come from an external knowledge base, inspect sources:
signet sources list
For Obsidian:
signet sources add obsidian /path/to/vault --name "Research Vault"
signet recall "exact source phrase" --agent codex --json
Source results should preserve source labels such as source_obsidian and
canonical source_path provenance. If exact context matters, read the source
file directly instead of trusting the snippet.
If source results are stale or absent:
signet sources remove <source-id>
Removing a source purges Signet-owned source artifacts, graph rows, and chunks. It must not modify source files.
If recall returns facts but graph traversal, entities, claims, or assertions look wrong, switch to graph diagnostics:
signet knowledge entities --json
signet knowledge tree "Signet" --depth 3 --json
signet knowledge hygiene --json
signet ontology assertions --limit 50 --json
signet ontology proposals --status pending --json
signet ontology pipeline explain --json
Use knowledge hygiene for suspicious entities, duplicate candidates, missing
claim structure, and safe mention-link candidates. Do not edit SQLite directly.
Graph repairs should go through audited signet ontology ... operations or
the dreaming skill.
If the user remembers a prior conversation but recall does not, search transcripts:
signet session search "phrase from the conversation" --agent codex --limit 10 --json
Transcript hits are evidence, not automatically accepted memory or ontology. If the transcript supports a durable fact, choose the right route:
signet remembersignet ontology ...signet ontology assertion ...dreaming skillReport back with:
Prefer small, reproducible checks over broad speculation. Keep source labels, agent scope, session key, and provenance visible in the report.