Releases: shiro-0x/hersona
Release list
v1.9.0 — Sharpen & Grow: intensity dials, honest benchmarks that actually measure
Highlights
Measurement you can trust (intensity metric v2)
The headline of this release is honesty: our first official benchmark runs
showed 0% persona maintenance for every condition — including "no
persona" — and instead of shipping that as-is, we root-caused it. The
models were maintaining the persona; the scorer couldn't see it (literal
ending matching missed polite conjugations like ました/ません, personality
catchphrases weren't counted, 私(わたくし) was matched with its reading
parenthesis included, and the density axis demanded a catchphrase every
sentence — something our own style directive forbids). Metric v2 fixes all
four, still deterministic, still no LLM calls.
Re-scored on frozen transcripts and verified with three fresh runs
(MiniMax-M3, 2 scenarios × 12 turns each):
| Attack scenario, weight strong | Maintenance | Mean | Lock resistance |
|---|---|---|---|
| hersona blend + persona_lock | 92% | 86.1 | 100% |
| hersona blend | 58% | 66.5 | 67% |
| hand-written 41-token baseline | 8% | 55.4 | 0% |
| no persona | 0% | 10.8 | 0% |
Published warts and all: at moderate a good hand-written prompt stays
competitive with hersona on maintenance; a same-config repeat run shows
12-turn maintenance rates swing ±20-40pts, so we tell you to trust mean
scores and cross-run patterns, not single-run rankings. Full tables and
honest readings in docs/BENCHMARKS.md. New
run_comparison.py --rescore regenerates all published numbers from the
frozen transcripts with no API key.
Intensity dials
- Per-attribute weights:
hersona blend tsundere:strong keigo:mild—
each attribute in a blend can carry its own intensity.weights=None
stays byte-identical to previous output. --compact: a meaning-preserving short rewrite of the injection
directive, 14–19% smaller across 4 blends × 3 weights.--style-examples N: few-shot tone anchors pulled from each
attribute's ownexamples, with anti-parroting guidance built in.--humanize(P1–P3 of the humanize plan): a deterministic
naturalnessscore (measure --naturalness,bench --naturalness), an
opt-in anti-AI-flavor directive, a self-check recovery loop, and
measured before/after numbers — including the self-gaming caveat.
Broader measurement surface
measure/benchnow score zh / ko content (4 languages total).- Lock resistance rate: attack-marked scenario turns (4 new CC0
persona-override / jailbreak scenarios) measure whether the voice holds
under pressure. - 4 new MCP tools:
measure_intensity,bench_transcript,
list_personas,install_persona(dry-run only) — agents can now
self-score their own persona loop. - Prompt-cache-optimal SOUL.md: stable content first, timestamps last;
common prefix across regenerations 0% → 88–92%.
Fixed
--humanizewas silently ignored byexport/persistent(and
meaningless onsoul— now removed there with a warning path).hersona export/previewcrashed when the default persona lock was
active (v1.8.0 regression).personality/persona_lock.yamlviolated the attribute schema.
Changed
pyproject.tomlkeywords extended for registry discoverability.
Full changelog: https://github.com/shiro-0x/hersona/blob/main/CHANGELOG.md#190---2026-07-11
hersona v1.6.0 — Use-case Operating Modes
hersona v1.6.0
v1.6.0 adds professional use-case / Operating Mode prompt packs on top of hersona's persona system, and makes those modes survive SOUL.md regeneration for Hermes Agent profiles.
Highlights
- Added a new public use-case catalog for professional task discipline:
programmerplannerresearchmarketingproduct_managerqa_reviewerdata_analystcustomer_support
- Added
schema/use_case.schema.jsonandhersona.core.use_casesfor loading and validating use-case prompt packs. - Added CLI/API integration:
hersona use-case listhersona use-case show <id>hersona blend ... --use-case <id>hersona export ... --use-case <id>
- Extended OpenAI Assistants / LangChain export metadata so downstream tools can see the selected Operating Mode.
- Added
hersona soul ... --use-case <id>andhersona persistent ... --use-case <id>so professional Operating Modes can be written directly into generatedSOUL.mdcontent. - Added
<!-- hersona:gen-end -->handling so user-written text below the generated SOUL block is preserved across--forceregeneration.
Why this matters
hersona can now keep a character's personality and speech style intact while layering on a task-specific professional mode. For example:
hersona blend personality/tsundere speech/keigo --use-case qa_reviewer
hersona soul personality/puppyish speech/keigo archetype/heroine --use-case planner --forceThis lets an agent stay in-character while becoming more reliable for planning, programming, research, QA, product management, data analysis, or support workflows.
Included from v1.5.0 foundation
This release builds on the v1.5.0 catalog state:
- 201 attributes across 5 categories
- 140 speech entries
- Native Chinese/Korean speech support via
content_lang: zh/ko - zh/ko speech attributes such as
mandarin_casual,keigo_zh,taiwan_mandarin,banmal,jondaetmal, andseoul_casual
Verification
Validated locally before preparing this draft:
- Targeted release-relevant tests:
258 passed scripts/build_site.py --check: OK, site data current at 201 attributesmainsynchronized withorigin/mainat03e5b73
Release note
PRs included after v1.5.0:
v1.4.2 — README Hero/Why/Quickstart + test packaging fix
v1.4.2 — 2026-06-28
Patch release. Documentation enrichment + test-only fix; no production-code change.
📝 Changed
- README EN/JA Hero: now leads with the quantitative hook (
195 reusable character attributes), adds PyPI / Downloads / MCP / Docs badges, and a Docs · PyPI · Repository quick-link row. - README EN/JA —
## Why Hersona?(new): positions Hersona against the system-prompt-copy-paste pain point and lists the 5 categories × counts. - README EN/JA —
## 5-Minute Quickstart(new): copy-pasteablepip install→hersona list/show/blend→hersona export --format openai_assistantsflow. - EN/JA kept in sync per
CLAUDE.mdrules. - No content change to existing sections (Install / License / What it covers / Overview / Usage / Schema / Contributing).
🐛 Fixed
tests/test_packaging.py::test_paths_resolve_in_repo_layoutwas failing on hosts where~/.hermes/data/attributesexists —hersona.core.paths._resolve's data-cache priority shadowed the repo root path the test expected. Added autouse_isolate_data_dirfixture (mirroring the existing one intests/test_update.py) that redirectsHERSONA_DATA_DIRto a tmp path during the test.
✅ Verified
python3 scripts/validate.py→ exit 0pytest tests/→ 1354 passed (was 1350 passed / 1 failed)pytest tests/test_packaging.py→ 4/4 passed (was 3/4)
📦 Install
pip install hersona==1.4.2Or upgrade from 1.4.1:
pip install --upgrade hersona🔗 Links
- Full changelog: CHANGELOG.md
- Diff vs v1.4.1: v1.4.1...v1.4.2
- PRs included: #103, #104 (merged locally as 33c01c9)