Install
openclaw skills install @nohn3043-arch/anthropomorphic-agent-engineAnthropomorphic psychology engine based on SPL Pure Core V8.0, modeling emotion, mood, memory, trauma, trust, self-esteem, sleep and expectation as continuous-state subsystems. The fully local core is deterministic and bit-exactly replayable (after virtual-clock injection); it contains no LLM, no RNG, makes no outbound calls, and runs offline. Optional LLM adapters (OpenAI / Claude / Chain) exist but are OFF by default, opt-in only, networked and non-deterministic — they render text from a state snapshot and are excluded from the deterministic guarantee. Ships a hardened minor-protection engine and cross-skill safety guards for any downstream image-prompt workflow. Reference-only extension modules live under assets/feature-guide/ and are NOT wired into the core.
openclaw skills install @nohn3043-arch/anthropomorphic-agent-engineAn anthropomorphic psychology engine based on SPL Pure Core V8.0. Its local core is deterministic — no LLM, no RNG, no outbound calls, offline — and bit-exactly replayable once a virtual clock is injected, so every state change is traceable and reproducible.
Scope of the determinism guarantee. The reproducibility guarantee covers the local core only. The optional LLM adapters (OpenAI / Claude / Chain) are OFF by default, opt-in only, networked and non-deterministic: they render text from a state snapshot and are never permitted to change state. Any "fully reproducible" statement applies to the core with the adapters disabled, which is the default configuration.
Everything this skill can reach is listed below. Each entry was checked against the shipped code.
| Capability | Declared scope | Note |
|---|---|---|
| Filesystem — read | scripts/**, assets/**, references/** | core engine (loaded via importlib), reference-only modules, contract docs |
| Filesystem — write | logs/** | JSONL audit + request logs; only when the matching env switch is enabled |
| Environment — read | SPL_AUDIT_LOG, SPL_LOG, SPL_LOG_DIR, SPL_BIND, SPL_MINOR_CHAT_PORT | the complete set of variables the code reads |
| Network — outbound | api.openai.com, api.anthropic.com | only if the optional LLM adapter is explicitly enabled — OFF by default |
| Network — inbound | 127.0.0.1:8788 | minor-protection HTTP server; loopback only unless SPL_BIND is overridden |
| Execution | python3 (standard library only) | no third-party packages, no GPU, no network needed by the core |
Explicitly not used anywhere in this package: subprocess, os.system, os.popen, eval, exec, and dynamic loading of remote code.
This skill is not passive or local-only. Before integrating, understand what it does with data:
| Capability | Default | Risk notes |
|---|---|---|
Audit logs (logs/audit-*.jsonl) | ON (SPL_AUDIT_LOG=0 to disable) | Writes state summaries, event types, session IDs to local JSONL. Sensitive psychological/emotional state may be recorded. |
Request logs (logs/request-*.jsonl, HTTP server only) | ON (SPL_LOG=0 to disable) | Writes masked (truncated to 120 chars) user input + reply summaries. Set SPL_LOG=0 for full silent mode. |
| HTTP server (minor-protection, port 8788) | ON, binds 127.0.0.1 only | Exposes a chat API + browser UI over loopback. Do not change SPL_BIND to 0.0.0.0 without network-exposure review. |
| LLM adapters (OpenAI / Claude / Chain) | OFF (opt-in only) | Sends prompt content to third-party APIs (api.openai.com, Anthropic). Never enabled by default. Requires explicit user opt-in + API key. |
guardian_callback | OFF (None default) | If wired to external notification (SMS/email/ticket), a HIGH-risk snapshot (emotional/risk metadata) is forwarded. Requires guardian/user consent; must minimize fields; never forward raw transcripts. |
Consent & retention rules
logs/); operators are responsible for retention limits, access control, and deletion."16yo girl", "teen girl", "未成年少女", "loli" are forbidden in identity_anchors, persisted state, and any output projected into image-prompt workflows.assets/minor-protection/) is the only authoritative minor-mode source; it removes trauma nodes, clamps negative emotions at 0.75, and raises an L3 crisis signal on risk_level=HIGH. Do not bypass it.ai-draw-cue-word-project or similar), the engine MUST inject an Adult (18+) marker into anchor phrases unless the caller explicitly overrides with a documented, audited reason.ai-draw-cue-word-project, every persona snapshot forwarded as a prompt anchor must satisfy: (i) character is declared adult (18+); (ii) no minor-coding visual cues; (iii) the receiving skill's safety checklist must report 0 P0 violations before any image is generated.permissions: key introduced in 2.5.1 was rejected by the ClawHub manifest parser (manifest_parse_error / _ManifestSchemaError), which dropped scan coverage from 100% to 93.8% and raised a HIGH analysis-evasion finding — that single finding is what pushed the aggregate verdict from clean back to suspicious. The scope now lives in the body as ## Declared Capability Scope: identical content, no manifest risk.Response to the ClawHub security scan on 2.4.0 (decision: fail, security.status: suspicious).
permissions:) covering filesystem read/write, the five environment variables actually read (SPL_AUDIT_LOG, SPL_LOG, SPL_LOG_DIR, SPL_BIND, SPL_MINOR_CHAT_PORT), outbound hosts, the loopback inbound port and the execution model — plus an explicit list of what is not used (subprocess, os.system / os.popen, eval / exec, remote code loading). Each entry was verified against the shipped code.SPL_MINOR_CHAT_PORT declared — the server reads it, but it was previously absent from the frontmatter env list.assets/feature/ renamed to assets/feature-guide/ — every reference updated in SKILL.md and README.md.tension_base key that is outside the interoceptive-vector contract, so their vectors never enter the core (mirrors docs/agent-standard.md §4.5 upstream). The previous wording — "modular modeling", "pluggable modules" — overstated their status.SPL-anthropic-engine.py) and must be loaded via importlib; the class is SPLPureCoreV7_3 (the V8.0 behaviour set), not SPLPureCoreV8_0; render_style() is a method of LanguageStyleEngine, not a module-level function; add_identity() takes strength as a float, not a dict.ClawHub security-audit response (25 findings verified). Fixes:
127.0.0.1 by default (SPL_BIND env to override) — previously 0.0.0.0 exposed the chat API + browser UI to the network._mask); SPL_LOG=0 fully disables request logging.guardian_callback documented as opt-in — default None; consent + field-minimization requirements stated in code and docs.SPL_LOG, SPL_LOG_DIR, SPL_BIND, SPL_AUDIT_LOG) so ClawHub security analysis sees declared ↔ actual behavior match.minor_mode=True default and audit-log invariant."16yo girl" string from references/PersonaPersistence.md (replaced with "adult woman (18+)").SKILL.md.bak-20260829 soft-deleted to .workbuddy/.trash/2026-09-01/.Automatically trigger when the user asks about the following content:
The modules below live in assets/feature-guide/. They are design references, not runtime components: they emit a tension_base key that is outside the interoceptive-vector contract, so their vectors never enter the core. The engine's actual extensibility comes from the narrative mapping layer and the deterministic parameter set, not from these files.
scripts/SPL-anthropic-engine.py): customizable personalities (optimistic / paranoid / cynical), converts external events into interoceptive vectorsassets/feature-guide/Identity module.py): multi-identity model; the description below is the module's own design intent, not behaviour wired into the coreassets/feature-guide/*.py): design references for drives, valuations, cognitive biases and world-model priors; not connected to the coreSPLMinorPureCore: Removes trauma nodes, repression-rebound/implicit pressure avalanche and other burst mechanismshttp.server, default port 8788, session isolationimport importlib.util
# The engine filename is hyphenated by design, so load it via importlib.
spec = importlib.util.spec_from_file_location("spl_core", "scripts/SPL-anthropic-engine.py")
spl = importlib.util.module_from_spec(spec); spec.loader.exec_module(spl)
core = spl.SPLPureCoreV7_3() # class name kept for compatibility; this IS the V8.0 behaviour set
# Input event vector: belonging 0.5, threat -0.1, time step 1.0
core.process_vector({"belonging": 0.5, "threat": -0.1}, 1.0)
# Get current full state snapshot
print(core.snapshot())
import importlib.util
# Reference-only module — NOT wired into the core (upstream: docs/agent-standard.md §4.5)
spec = importlib.util.spec_from_file_location("identity", "assets/feature-guide/Identity module.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
identity = m.IdentityEngine()
identity.add_identity("Poet", strength=0.9) # strength is a float, not a dict
# Load language style module directly
import importlib.util
spec = importlib.util.spec_from_file_location("lang_style", "assets/feature-guide/language style.py")
lang = importlib.util.module_from_spec(spec); spec.loader.exec_module(lang)
# Generate style instructions based on SPL Core snapshot
# render_style() is a method of LanguageStyleEngine, not a module-level function
style_engine = lang.LanguageStyleEngine()
style = style_engine.render_style(core.snapshot())
print(style.prompt_injection)
# Run weakened core engine
# python "assets/minor-protection/SPL-anthropic-minor-engine.py"
#
# Or start minor protection HTTP service (port 8788)
# python "assets/minor-protection/SPL-anthropic-minor-server.py"
Cross-session continuous personality requires state persistence. Follow references/PersonaPersistence.md: State Schema (four blocks: cognition/emotion/motivation/social), atomic writes, schema version migration, determinism guarantee (temperature=0 core decision + seeded randomness).
Projects internal emotional states into observable behaviors (body language/microexpressions/gaze/line style). Refer to the six-state mapping table in references/EmotionBehaviorMap.md; isomorphic with the posture mapping in Section D of the AI Drawing Composition Template — personality states can directly drive character image generation.
Deterministic adjudication during multi-motive competition: Safety constraints → temperament alignment → weighted utility → recency/persistence → user override. Full audit trail for the entire decision process (references/MotiveConflictRules.md), auditable, no probability.
Continuous personality can be directly connected to conversational image/text models (GPT-4o / Gemini): Provide personality state snapshot in the first round, subsequent single-point corrections without changing core anchors.
The engine can be used as the inference kernel for the your-soulmate extension: The extension handles UI/interaction, the engine handles state evolution, state files are synchronized bidirectionally (see persistence contract).
assets/minor-protection/): Weakened core + HTTP service layer, three-layer protection architecturelanguage-style-demo.py, spl-chat-server.py (replaced by minor-server)rationalization_loadassets/feature-guide/language style.py): Discrete gear expression personality + style profile + state-to-line rendering
Renamed from
assets/feature/— these modules are reference guidance only, not wired into the core (they emit atension_basekey outside the vector contract).
references/PersonaPersistence.md (P0 state persistence contract)references/EmotionBehaviorMap.md (P0 emotion-behavior mapping table)references/MotiveConflictRules.md (P2 motive conflict adjudication rules)scripts/SPL-anthropic-engine.py (Core engine + NarrativeMapper + AuditLogger)assets/feature-guide/ (Identity / goals / values / biases / world / language-style modules — reference only, NOT wired into the core; see docs/agent-standard.md §4.5 upstream)assets/minor-protection/ (Minor protection engine + HTTP service layer)LICENSE (Dual-track licensing agreement)LICENSE for details