psyche-manual · git:20261017.4082087 · 2026-10-17 · sha256 e647c668059a870f
psyche-manual git:20261017.4082087A
Immutable. This exact content never changes and is served at /api/v1/blob/e647c668059a870f.
---
name: psyche-manual
last_changed_at: 2026-09-29T00:00:00Z
description: >
Compact router for Psyche's private-memory and procedure domains (pad, knowledge,
skills), the shared file→rebuild model, redacted settings, and the separate
fixed-instructions disclosure and retirement guidance.
related_files:
- src/lingtai/tools/psyche/CONTRACT.md
- src/lingtai/tools/psyche/ANATOMY.md
- src/lingtai/tools/psyche/settings.py
- src/lingtai/agent.py
- ENVIRONMENT_VARIABLES.md
- src/lingtai/intrinsic_skills/pad-manual/SKILL.md
- src/lingtai/intrinsic_skills/lingtai-manual/SKILL.md
- src/lingtai/tools/knowledge/manual/SKILL.md
- src/lingtai/tools/skills/manual/SKILL.md
- src/lingtai/tools/context/manual/SKILL.md
- src/lingtai/kernel/base_agent/lifecycle.py
- src/lingtai/kernel/base_agent/__init__.py
- src/lingtai/tools/avatar/manual/SKILL.md
- src/lingtai/intrinsic_skills/psyche-manual/reference/settings/SKILL.md
maintenance: |
Keep this short router aligned with the psyche Contract/Anatomy, installed
domain manuals, settings anchors, and retirement guidance. Put
detailed procedure in the focused references rather than expanding this entry.
---
# Psyche
Psyche is the read-only public root for **Pad + Knowledge memory and the Skills catalog**.
Routine schema-sufficient calls may go directly to their action. For unfamiliar
or consequential work, read the matching domain manual first; use this router
only if the domain is unclear. There is no required router-then-domain double read.
## Routing table
| Call (strict `input={}`) | Returns / owner |
|---|---|
| `psyche(action="pad", input={}, reasoning="load Pad guidance")` | Pad manual: `system/pad.md`, `system/pad_append.json` |
| `psyche(action="knowledge", input={}, reasoning="load knowledge guidance")` | Knowledge manual: `knowledge/<name>/KNOWLEDGE.md` |
| `psyche(action="skills", input={}, reasoning="load skills guidance")` | Skills manual: `.library/{intrinsic,custom}/` and configured paths |
| `psyche(action="instructions", input={}, reasoning="orientation")` | current loaded fixed instructions, including runtime and adapter rules; no ambient reread |
| `psyche(action="covenant", input={}, reasoning="load the effective Covenant")` | current loaded Covenant body, not a tool manual; custom source/mirror preserved |
| `psyche(action="settings", input={}, reasoning="inspect Psyche settings")` | redacted settings SHOW |
| `psyche(action="manual", input={}, reasoning="load the routing table")` | this router |
All seven actions require strict empty `input` and are read-only: no authoring,
editing, pinning, installing, migration, catalog rescan, or prompt reload. Keep
root `summarize=false` when exact guidance matters.
Read `covenant` on first orientation and before discussing duties, collaboration,
learning, or memory, not on every call. It returns the current effective body;
ambient edits do not change it until successful reconstruction. No installed
manual/default substitutes for a configured Covenant. Empty means none is loaded.
## One mutation model
Change durable content through `shell` on its owning path — a full rewrite, or
an exact replacement after verifying the old text exists exactly once — anchored
in the authorized working directory, and verify the result after writing. Then
leave it for the next natural molt or refresh to reconstruct; do not rebuild after
every edit. A filesystem mutation never hot-loads; there is no per-domain reload,
and Skills/Knowledge retain catalog ownership. Manual
`context(action="rebuild", input={})` is strongly discouraged (costly full replay
that can disturb prompt-prefix cache reuse); use one targeted call only when the
change must apply in this conversation and a molt is unsuitable. Platform
recipes live in `shell-manual`.
## Lifecycle and settings
`context` owns `molt`, `summarize`, and `rebuild`; `system` owns lifecycle
controls and mechanical names. Pad holds unified private memory, including
legacy character preserved once without deleting its old source.
`settings` is SHOW-only, fully redacted, and reports the last successful applied
snapshot. Read [the settings reference](reference/settings/SKILL.md) for grammar,
precedence, timing, rollback, and all six anchors.
### Setting pad
[settings reference](reference/settings/SKILL.md#setting-pad)
### Setting pad file
[settings reference](reference/settings/SKILL.md#setting-pad-file)
### Setting base prompt
[settings reference](reference/settings/SKILL.md#setting-base-prompt)
### Setting base prompt file
[settings reference](reference/settings/SKILL.md#setting-base-prompt-file)
### Setting covenant
[settings reference](reference/settings/SKILL.md#setting-covenant)
### Setting covenant file
[settings reference](reference/settings/SKILL.md#setting-covenant-file)
## Retired comments and network rules
`comment`/`comment_file` are removed, including Avatar's spawn comment. Remove
these keys from old owner/config documents and put desired working instructions
in `system/pad.md` through an ordinary authorized edit. Pad remains writable
working memory, not a security boundary or broadcast mechanism.
Neither `.rules` nor `system/rules.md` is read, consumed, or injected on heartbeat,
boot, rebuild, refresh, or molt. Existing files are left untouched. There is no
compatibility reader, automatic rewrite, purge, or data migration.
## Loaded memory length reminder
After a successful molt or CLI refresh relaunch/start, `memory-length` reports
character counts for the **loaded** unified Pad (including pinned references),
its total and threshold. It is not a token count, disk-size check or knowledge
catalog scan. The environment threshold defaults to 50000; discover its effective
value with `system(action="settings", input={})` under
`prompt.memory_length_warning_chars`, and read the canonical
[`environment registry`](../../../../ENVIRONMENT_VARIABLES.md).
A lifecycle boundary produces at most one warning; normal turns, heartbeat,
initial startup and `context.rebuild` do not produce new warnings. At/below the
threshold a subsequent successful lifecycle check clears only the current
notification; prior checks remain in `logs/events.jsonl`. Publication is best-effort
and never blocks molt/refresh. No Pad, pinned reference, Knowledge or
history content is automatically removed, cropped or rewritten. Review stale and
duplicate content and move it to its proper durable owner through ordinary
scoped edits; a warning is not permission for unrelated cleanup.