Skip to content

Releases: n-yokomachi/affectus

v0.4.0 — Three More Models

Choose a tag to compare

@n-yokomachi n-yokomachi released this 17 Sep 11:15

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 viz gained 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_appraise alongside the existing tools, and show is ledger-aware.
  • The evaluation rig under examples/evaluation runs 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

Choose a tag to compare

@n-yokomachi n-yokomachi released this 20 May 11:04
5028ce2

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

`docs/superpowers/specs/2026-05-20-affectus-v0.3-design.md`

v0.2.0

Choose a tag to compare

@n-yokomachi n-yokomachi released this 19 May 17:35

マイナーリリース。

  • 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

Choose a tag to compare

@n-yokomachi n-yokomachi released this 17 May 18:20

パッチリリース。

  • 各プラットフォーム向けのプレビルドバイナリを同梱(darwin / linux × amd64 / arm64)。Go ツールチェーン無しで導入できます。
  • CI で使う GitHub Actions を最新化。

機能・API の変更はありません(v0.1.0 と動作は同一)。

Install

Releases からお使いのプラットフォームの .tar.gz を取得し、展開して affectus を PATH に置いてください。

v0.1.0

Choose a tag to compare

@n-yokomachi n-yokomachi released this 17 May 07:24

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).