mirror of
https://github.com/SillyTavern/SillyTavern-Content.git
synced 2026-10-15 18:01:52 +00:00
[PR #60] Add 灵犀 (Mind Compass) — a typed-decision mind-state engine #60
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
SillyTavern/SillyTavern-Content#60
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/SillyTavern/SillyTavern-Content/pull/60
Author: @scd13150
Created: 9/22/2026
Status: 🔄 Open
Base:
main← Head:add-mind-compass📝 Commits (1)
ec9502bAdd 灵犀 (Mind Compass) extension📊 Changes
2 files changed (+14 additions, -0 deletions)
View changed files
📝
extensions.json(+7 -0)📝
index.json(+7 -0)📄 Description
Adding 灵犀 (Mind Compass), an extension that separates language generation from mind-state adjudication.
What it does
The host chat model keeps writing prose. A second, non-generative model (TypeSafe Jev, System One) answers a fixed bundle of typed questions asynchronously:
Code then owns a deterministic two-track dynamics engine — leaky-filter momentum, onion-model trust penetration, stage gating, affinity/defense arithmetic — and writes the results to SillyTavern variables,
/expression-set, world-info injection, and per-card persistence.The problem it addresses: a model asked to roleplay and track a relationship will inflate the relationship, because the same generation that produces flattering prose also produces the flattering score. Moving that judgement to a separate typed-decision model removes the coupling.
Submission requirements
LICENSErequiresis empty; pure ES modules calling the API directly, so no local Python/Node/DockerFiles are at the repository root, so
git cloneintoextensions/third-party/works directly.Why the key handling is worth a look
The API key is never written to
settings.jsonand never exported with a character card. It goes to the host's own secret vault via/api/secrets, with a masked input. In an ecosystem where character cards are routinely shared as files, that is the difference between a key and a leak.Notes on the two changed files
index.jsonwas regenerated the same waygenerate_index_json.pybuilds it: the assets prefix plus everyextensions.jsonentry. I did not run that script directly, because it walksassets/, which is ~136 MB and therefore absent from the sparse checkout I used — running it there silently produced a 4-entry index, dropping all 94 asset entries. The rebuild method was verified to reproduce the committedindex.jsonbyte-for-byte before this edit, so the only difference is the appended entry.extensions.jsonis hand-formatted with a 4-space indent rather thanjson.dumps(indent=2)output, so I edited it as text instead of regenerating it, to avoid reformatting all 66 existing entries. The diff is 7 added lines and nothing else.One judgement call worth flagging: the
namefield is灵犀 (Mind Compass), which introduces the first non-ASCII characters in either JSON file. Happy to change it toMind Compass (灵犀)or plain ASCII if you prefer to keep those files ASCII-only.Repository: https://github.com/scd13150/st-Mind-Compass
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.