n-yokomachi/affectus
GitHub: n-yokomachi/affectus
affectus 是一个为LLM智能体提供多轴情绪向量和时间衰减的状态引擎,实现动态情感表达。
Stars: 1 | Forks: 0
# 示例: macOS (Apple Silicon)
一个用于LLM智能体的情绪状态引擎。`affectus` 维护一个多轴情绪向量(默认使用普拉切克的8种基本情绪),随时间将其向基线松弛,并公开原始数值状态供LLM读取和解释——从而实现智能体的语气能够随着持久的、衰减的心境而变化。
它与框架无关:任何能运行shell命令的智能体都可以使用它。
## 概念:两个循环
- **对话循环(自我报告):** 每次交互轮次,智能体运行 `affectus show` 以JSON对象形式读取其当前的情绪向量,根据普拉切克情绪轮关系性地解读数值,为其回复着色,然后运行 `affectus feel` 报告此次交流如何改变其情绪。
- **后台循环(定时任务):** 计划性的 `affectus tick` 将向量向基线松弛,因此即使智能体处于空闲状态,情绪也会自然漂移。
## 安装
### 预编译二进制文件(无需Go工具链)
从[发布页面](https://github.com/n-yokomachi/affectus/releases)下载适合您平台的压缩包,解压它,并将 `affectus` 二进制文件放到您的PATH路径中:
```
# affectus
tar -xzf affectus_v0.1.1_darwin_arm64.tar.gz
mv affectus /usr/local/bin/
```
### 从源码构建
```
go install github.com/n-yokomachi/affectus/cmd/affectus@latest
```
需要macOS或Linux(affectus使用Unix文件锁)。
## 快速开始
```
affectus init # write default config + baseline state
affectus show # -> {"joy":0.00,"trust":0.00,...}
affectus feel '{"joy":0.6,"surprise":0.2}'
affectus show # -> {"joy":0.60,"trust":0.00,...,"surprise":0.20,...}
```
默认情况下,状态和配置文件位于 `~/.config/affectus/` 下。可通过 `--config` / `--state` 参数或 `AFFECTUS_CONFIG` / `AFFECTUS_STATE` 环境变量覆盖。
## 命令
| 命令 | 描述 |
|---|---|
| `affectus init [--force]` | 写入默认配置和一个基线状态文件 |
| `affectus show [--format text\|json]` | 打印当前情绪(只读) |
| `affectus get` | 以JSON格式打印衰减后的原始轴值(只读) |
| `affectus feel ''` | 应用自我报告的增量(使用 `-` 从stdin读取) |
| `affectus tick` | 仅应用时间衰减——定时任务目标 |
| `affectus reset` | 将所有轴重置为基线 |
| `affectus mcp` | 运行一个暴露 `emotion_show` / `emotion_feel` 的MCP服务器(stdio) |
| `affectus viz [--port N]` | 提供一个展示情绪状态实时可视化的网页服务器(默认端口8765) |
## 将其集成到智能体中
1. 将 `affectus` 二进制文件放入PATH路径。
2. 运行 `affectus init`。
3. 调度衰减:将 `examples/cron.sample` 添加到您的crontab中。
4. 教会智能体协议:将 `examples/system-prompt-snippet.md` 粘贴到其系统提示词中。
5. 支持MCP的智能体可以改为注册 `affectus mcp`——请参阅该命令说明。
## 可视化情绪状态
`affectus viz` 启动一个本地Web服务器,可视化实时情绪状态——一个根据强度着色的普拉切克轮和一组衰减条。
```
affectus viz # then open http://localhost:8765
```
该页面轮询状态并显示其衰减到当前时刻的效果,因此在交互轮次之间情绪会明显地向基线漂移。该服务器是只读的。
## 情绪模型
默认轴是普拉切克的8种基本情绪(喜悦、悲伤、信任、厌恶、恐惧、愤怒、惊讶、期待),每种情绪值范围为 `0.0–1.0`。轴名称、数量、基线和半衰期均可配置——请参阅 `affectus init` 写入的配置文件和 `examples/configs/plutchik8-ja.yaml`。
**v0.3 备注:** affectus 不再将情绪渲染为自然语言文本。它发出一个包含所有轴的单行JSON对象;LLM负责(根据普拉切克情绪轮)关系性地读取这些值,并相应地调节其响应。有关指导,请参阅 `examples/system-prompt-snippet.md`。
默认情况下,衰减在所有轴上是对称的:没有一种情绪会比另一种持续更久。
## 许可证
MIT
标签:Cutter, DNS解析, EVTX分析, Go语言, Homebrew安装, LLM代理, Plutchik情绪轮, 人工智能, 代理系统, 多轴情感向量, 开源项目, 情感状态引擎, 情感计算, 情绪衰减, 提示注入, 日志审计, 时间衰减, 状态管理, 用户模式Hook绕过, 程序破解, 自然语言生成, 集群管理