Releases: n-yokomachi/affectus
Release list
v0.4.0 — Three More Models
Three more emotion models
v0.3 shipped one model (Plutchik's wheel). v0.4 adds three, each selectable at affectus init --model <name>. The engine stays the same — decay, apply, clamp — and every model rides on the same show / feel / tick surface.
| Model | State | Reporting command |
|---|---|---|
plutchik |
8 categorical axes | feel |
russell |
valence + arousal, per-axis ranges | feel |
occ |
22 appraisal-derived emotions + prospect ledger | appraise |
barrett |
core affect + a concept store of past experiences | recall / remember |
Russell (spec) holds a two-axis core affect. Axes can now declare their own range, so valence spans −1..+1 while arousal stays 0..1 with a non-zero baseline.
OCC (spec) takes appraisals rather than emotion deltas. affectus appraise accepts the desirability of consequences, the praiseworthiness of actions and the appealingness of objects; a deterministic rule table derives the 22 emotion types, including compounds such as anger and gratitude that only arise when a consequence and an action co-occur. Uncertain prospects are held in a ledger with a short label, and resolving one yields satisfaction, fears-confirmed, relief or disappointment.
Barrett (spec) has no fixed emotion categories at all. affectus remember stores an experience — what was felt, what it was named, and a 14-attribute situation vector — and affectus recall returns the top-K similar ones by cosine relevance, recency and derived importance. Recalled entries are reinforced; the store evicts the oldest and least important beyond its cap. The engine never names an emotion; it stores and retrieves the names the LLM gave.
Breaking change
The default Plutchik axes now follow the vocabulary of Plutchik's 2001 article "The Nature of Emotions": acceptance, sorrow and expectancy, where popular renderings of the wheel say trust, sadness and anticipation.
After upgrading, state entries saved under the old names are ignored — those axes restart from baseline — and affectus feel rejects the old names. Custom configs that pin the old vocabulary keep working; the change is to the built-in default only.
Also in this release
affectus vizgained an OCC bar view with the prospect ledger, and a Barrett view with a core-affect scatter and the concept store aged by last recall.- The MCP server exposes
emotion_appraisealongside the existing tools, andshowis ledger-aware. - The evaluation rig under
examples/evaluationruns scripted multi-turn conversations on the Claude Agent SDK, in parallel cells, across all four models.
Unchanged
- On-disk state schema (
version,updated_at,axes, plus model-specific fields) - Engine arithmetic (decay, apply, clamp, halflives)
- Existing CLI commands (
init,show,get,feel,tick,reset,viz,mcp)
v0.3.0 — Raw Numeric Output
Breaking change
affectus show and affectus feel no longer emit a templated natural-language sentence. They now emit a one-line JSON object of all axes in config order:
$ affectus show
{"joy":0.50,"trust":0.40,"fear":0.00,"surprise":0.20,"sadness":0.00,"disgust":0.00,"anger":0.00,"anticipation":0.00}
Why
The previous text rendering applied thresholds, salience filtering, and band-label discretization ("かすかな"/"ほどほどの"/"強い") — interpretive decisions that, per affectus's core design principle, belong to the LLM. v0.3 removes that layer: affectus provides a snapshot of the emotion vector, and the LLM is responsible for reading it relationally and modulating its response.
Migration
- Custom configs may keep the obsolete `render:` block (it is silently ignored), or drop it for cleanliness.
- Agents wired to v0.2 outputs need a system-prompt update; see the updated `examples/system-prompt-snippet.md` for the v0.3 guidance.
Unchanged
- On-disk state schema (`state.json` with `version`, `updated_at`, `axes`)
- Engine arithmetic (decay, apply, clamp, halflives)
- `affectus viz` behavior
- CLI command surface (`init`, `show`, `feel`, `get`, `tick`, `reset`, `mcp`, `viz`)
Spec
v0.2.0
マイナーリリース。
affectus vizサブコマンドを追加 — 感情ステートをブラウザでリアルタイム可視化するローカルサーバ。Plutchik の輪を強度で着色した円環図と、時間経過で縮む減衰バーを表示する。affectus vizで起動し http://localhost:8765 を開く。- system-prompt スニペットに「感情を関係的に読む」節を追加(Plutchik の対極・隣接の関係構造を LLM に渡す)。
- 既定設定の軸を Plutchik の輪の順に並べ替え(エンジン動作には影響なし)。
感情エンジン(decay/apply/render/state)の挙動は v0.1 から変更なし。
Install
Releases からお使いのプラットフォームの .tar.gz を取得して展開するか:
go install github.com/n-yokomachi/affectus/cmd/affectus@v0.2.0
v0.1.1
パッチリリース。
- 各プラットフォーム向けのプレビルドバイナリを同梱(darwin / linux × amd64 / arm64)。Go ツールチェーン無しで導入できます。
- CI で使う GitHub Actions を最新化。
機能・API の変更はありません(v0.1.0 と動作は同一)。
Install
Releases からお使いのプラットフォームの .tar.gz を取得し、展開して affectus を PATH に置いてください。
v0.1.0
First release of affectus — an emotion-state engine for LLM agents.
Features
- Multi-axis emotion vector — Plutchik's 8 emotions by default, axes fully configurable
- Exponential time-decay toward baseline (symmetric across axes)
- LLM-self-reported delta application with clamping
- Natural-language rendering for prompt injection (locale-configurable)
- CLI:
init/show/get/feel/tick/reset - Optional MCP stdio server exposing
emotion_show/emotion_feel - File-locked, atomic JSON state persistence
Install
go install github.com/n-yokomachi/affectus/cmd/affectus@v0.1.0
Requires macOS or Linux (affectus uses Unix file locking).