arona-agent 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -10
- package/README_en.md +145 -0
- package/assets/blue-archive/arona/spine/arona_spr.json +138439 -0
- package/assets/blue-archive/arona/voice_sovits.mp3 +0 -0
- package/assets/blue-archive/arona/voice_text.txt +1 -0
- package/assets/blue-archive/hanako/spine/hanako_spr.atlas.txt +90 -0
- package/assets/blue-archive/hanako/spine/hanako_spr.json +4760 -0
- package/assets/blue-archive/hanako/spine/hanako_spr.png +0 -0
- package/assets/blue-archive/hanako/spine/hanako_spr.skel +0 -0
- package/assets/blue-archive/hoshino/voice_sovits.mp3 +0 -0
- package/assets/blue-archive/hoshino/voice_text.txt +1 -0
- package/assets/blue-archive/koharu/spine/koharu_spr.atlas.txt +125 -0
- package/assets/blue-archive/koharu/spine/koharu_spr.json +7288 -0
- package/assets/blue-archive/koharu/spine/koharu_spr.png +0 -0
- package/assets/blue-archive/koharu/spine/koharu_spr.skel +0 -0
- package/assets/blue-archive/plana/spine/plana_spr.json +243027 -0
- package/assets/blue-archive/plana/voice_sovits.mp3 +0 -0
- package/assets/blue-archive/plana/voice_text.txt +1 -0
- package/assets/blue-archive/shiroko/voice_sovits.mp3 +0 -0
- package/assets/blue-archive/shiroko/voice_text.txt +1 -0
- package/assets/gpt-sovits/requirements.txt +44 -0
- package/bin/arona.mjs +3 -1
- package/bin/postinstall-fix.mjs +46 -0
- package/intro.png +0 -0
- package/package.json +7 -4
- package/pet/agents.cjs +8 -1
- package/pet/main.cjs +6 -0
- package/pet/preload.cjs +2 -0
- package/pet/renderer/gallery.js +2 -2
- package/pet/renderer/renderer.js +6 -1
- package/pet/renderer/spine_layer.js +64 -0
- package/pet/tools/gen_sway.cjs +1 -1
- package/pet/tools/mouth_capture.cjs +170 -0
- package/pet/tools/skel_to_json.cjs +142 -7
- package/pet/tools/spine_node.cjs +2 -5
- package/pet/tools/visual_test.cjs +2 -2
- package/python/__pycache__/_i18n.cpython-314.pyc +0 -0
- package/python/__pycache__/computer_use.cpython-314.pyc +0 -0
- package/python/__pycache__/hotkey.cpython-314.pyc +0 -0
- package/python/__pycache__/oss_upload.cpython-314.pyc +0 -0
- package/python/__pycache__/stt.cpython-314.pyc +0 -0
- package/python/__pycache__/tts_say.cpython-313.pyc +0 -0
- package/python/__pycache__/tts_say.cpython-314.pyc +0 -0
- package/python/hotkey.py +7 -1
- package/python/oss_upload.py +70 -0
- package/python/tts_say.py +325 -40
- package/src/agent.ts +153 -146
- package/src/commands.ts +17 -23
- package/src/config.ts +45 -2
- package/src/gesture_context.ts +4 -4
- package/src/gpt_sovits_local.ts +753 -0
- package/src/index.ts +13 -10
- package/src/oss_upload.ts +116 -0
- package/src/pet.ts +5 -0
- package/src/renderer.ts +6 -6
- package/src/repl.ts +67 -33
- package/src/setup.ts +349 -15
- package/src/skills.ts +32 -2
- package/src/slash_menu.ts +1 -1
- package/src/slash_registry.ts +6 -5
- package/src/tools/read_docs_tool.ts +84 -0
- package/src/tools/tavily_tools.ts +24 -10
- package/src/tools/voice_tools.ts +1 -1
- package/src/tts_provider.ts +512 -0
- package/src/tts_stream.ts +180 -43
- package/src/tui_select.ts +31 -2
- package/src/undo.ts +82 -18
- package/src/utils/python.ts +22 -0
- package/src/voice.ts +17 -7
- package/src/voice_cli.ts +117 -9
- package/src/voices.ts +197 -28
- /package/assets/blue-archive/hoshino/{hoshino_spr.atlas.txt → spine/hoshino_spr.atlas.txt} +0 -0
- /package/assets/blue-archive/hoshino/{hoshino_spr.json → spine/hoshino_spr.json} +0 -0
- /package/assets/blue-archive/hoshino/{hoshino_spr.png → spine/hoshino_spr.png} +0 -0
- /package/assets/blue-archive/hoshino/{hoshino_spr.skel → spine/hoshino_spr.skel} +0 -0
- /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.atlas.txt +0 -0
- /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.png +0 -0
- /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.skel +0 -0
- /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.atlas.txt +0 -0
- /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.png +0 -0
- /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.skel +0 -0
- /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.atlas.txt +0 -0
- /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.png +0 -0
- /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.skel +0 -0
- /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.atlas.txt +0 -0
- /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.png +0 -0
- /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.skel +0 -0
- /package/assets/blue-archive/shiroko/{shiroko_spr.atlas.txt → spine/shiroko_spr.atlas.txt} +0 -0
- /package/assets/blue-archive/shiroko/{shiroko_spr.json → spine/shiroko_spr.json} +0 -0
- /package/assets/blue-archive/shiroko/{shiroko_spr.png → spine/shiroko_spr.png} +0 -0
- /package/assets/blue-archive/shiroko/{shiroko_spr.skel → spine/shiroko_spr.skel} +0 -0
package/README.md
CHANGED
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
11
|
-
基于 [Pi SDK](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) 构建的终端对话式 AI Agent,集成 Computer Use、语音(TTS/STT
|
|
11
|
+
基于 [Pi SDK](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) 构建的终端对话式 AI Agent,集成 Computer Use、语音(TTS/STT)、桌面宠物与持久记忆。
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
## 安装
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
npm
|
|
18
|
+
npm i -g arona-agent
|
|
19
19
|
|
|
20
20
|
# 初始化配置文件
|
|
21
21
|
arona setup
|
|
@@ -24,7 +24,7 @@ arona setup
|
|
|
24
24
|
arona
|
|
25
25
|
|
|
26
26
|
# 更新
|
|
27
|
-
npm
|
|
27
|
+
npm u -g arona-agent
|
|
28
28
|
|
|
29
29
|
# 禁用TTS+STT并启动
|
|
30
30
|
arona --no-voice
|
|
@@ -39,7 +39,7 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
39
39
|
|
|
40
40
|
- **Computer Use**:基于 [cua](https://pypi.org/project/cua/) 。
|
|
41
41
|
- **语音**:非流式 TTS + STT。
|
|
42
|
-
- **桌宠**:透明无边框置顶 Electron 窗口 + 情绪切换 + 瞳孔跟随鼠标 + 头部摇动摸头彩蛋 +
|
|
42
|
+
- **桌宠**:透明无边框置顶 Electron 窗口 + 情绪切换 + 瞳孔跟随鼠标 + 头部摇动摸头彩蛋 + 全屏点击/拖尾特效;TTS 说话时嘴型跟随音量(lip-sync)。
|
|
43
43
|
- **多角色群聊**:主 Agent 单窗口、子 Agent 同屏;每轮主 Agent 回复完后子 Agent 依次接话。
|
|
44
44
|
|
|
45
45
|
|
|
@@ -48,7 +48,7 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
48
48
|
## 环境要求
|
|
49
49
|
|
|
50
50
|
- **Node.js >= 22.19.0**
|
|
51
|
-
- **Python 3.12 / 3.13
|
|
51
|
+
- **Python 3.9+(CUA需要 3.12 / 3.13)**
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
@@ -59,8 +59,8 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
59
59
|
| 字段 | 说明 | 默认值 |
|
|
60
60
|
|---|---|---|
|
|
61
61
|
| `apiKey` | API Key | — |
|
|
62
|
-
| `apiBaseUrl` | API
|
|
63
|
-
| `model` |
|
|
62
|
+
| `apiBaseUrl` | API地址 | — |
|
|
63
|
+
| `model` | 模型名 | `openai/gpt-4o` |
|
|
64
64
|
| `thinkingLevel` | 思考等级 | `medium` |
|
|
65
65
|
| `contextWindow` | 上下文窗口 | `1000000` |
|
|
66
66
|
| `language` | 界面语言(`auto`/`zh`/`en`) | `auto` |
|
|
@@ -71,6 +71,8 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
71
71
|
| `workspaceId` | 阿里云百炼业务空间 ID | — |
|
|
72
72
|
| `ttsApiKey` | 百炼 API Key | — |
|
|
73
73
|
| `ttsModel` | TTS 模型 | `qwen-audio-3.0-tts-plus` |
|
|
74
|
+
| `ttsProvider` | TTS 后端(`aliyun`/`gpt-sovits`) | `aliyun` |
|
|
75
|
+
| `ttsConfig` | 各 Provider 配置 | `{}` |
|
|
74
76
|
| `sttApiKey` | 百炼 API Key | — |
|
|
75
77
|
| `sttModel` | STT 模型 | `qwen-audio-3.0-asr-flash-streaming` |
|
|
76
78
|
| `sttFormat` | STT 音频格式 | `pcm` |
|
|
@@ -89,7 +91,7 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
89
91
|
| 路径 | 说明 |
|
|
90
92
|
|---|---|
|
|
91
93
|
| `settings.json` | 本地总配置文件,字段见 [配置](#配置) |
|
|
92
|
-
| `voices.json` |
|
|
94
|
+
| `voices.json` | TTS音色配置文件 |
|
|
93
95
|
| `MEMORY.md` | 持久记忆 |
|
|
94
96
|
| `sessions/` | 已保存会话 |
|
|
95
97
|
| `skills/` | 自定义 Skill |
|
|
@@ -101,8 +103,10 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
101
103
|
## 桌宠与 STT 热键
|
|
102
104
|
|
|
103
105
|
- **桌宠**:透明无边框置顶窗口;拖动窗口可移动,在头部区域左右摇晃可触发"摸头"彩蛋;点击/拖拽还会触发特效
|
|
104
|
-
- **STT
|
|
105
|
-
|
|
106
|
+
- **STT 热键**:macOS 为右 Cmd 键,Windows/Linux 为右 Ctrl 键,长按 ≥ 2 秒触发一次性录音。
|
|
107
|
+
> MacOS下,全局键盘监听需「系统设置 → 隐私与安全性 → 辅助功能」为Python授权;
|
|
108
|
+
|
|
109
|
+
> Computer Use 截图需授予终端「屏幕录制」权限。
|
|
106
110
|
|
|
107
111
|
---
|
|
108
112
|
|
package/README_en.md
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# ARONA Agent
|
|
2
|
+
|
|
3
|
+
[中文](README.md) | [English](README_en.md)
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
A terminal-based conversational AI Agent built on the [Pi SDK](https://www.npmjs.com/package/@earendil-works/pi-coding-agent), featuring Computer Use, voice (TTS/STT), desktop pets and persistent memory.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm i -g arona-agent
|
|
17
|
+
|
|
18
|
+
# Initialize configuration
|
|
19
|
+
arona setup
|
|
20
|
+
|
|
21
|
+
# Launch after setup
|
|
22
|
+
arona
|
|
23
|
+
|
|
24
|
+
# Upgrade
|
|
25
|
+
npm u -g arona-agent
|
|
26
|
+
|
|
27
|
+
# Launch with TTS/STT disabled
|
|
28
|
+
arona --no-voice
|
|
29
|
+
|
|
30
|
+
# Clone/re-clone a character's voice
|
|
31
|
+
arona voice add [<character-name>] # omit the name to enter the TUI for missing voices
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Key Features
|
|
37
|
+
|
|
38
|
+
- **Computer Use**: based on [cua](https://pypi.org/project/cua/).
|
|
39
|
+
- **Voice**: Non-streaming TTS (whole-sentence synthesis for natural prosody) + STT.
|
|
40
|
+
- **Desktop pet**: transparent frameless always-on-top Electron window + emotion switching + cursor-following pupils + head-pat easter egg + full-screen click/trail FX; lip-sync mouth animation driven by TTS volume.
|
|
41
|
+
- **Multi-character group chat**: main agent + sub agents on the same screen. After the main agent replies, sub agents take turns in order.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Requirements
|
|
46
|
+
|
|
47
|
+
- **Node.js >= 22.19.0**
|
|
48
|
+
- **Python 3.12 / 3.13**
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Configuration
|
|
53
|
+
|
|
54
|
+
All configuration lives in the JSON file `~/.arona/settings.json`, mostly generated interactively by `arona setup`. Some advanced parameters must be entered manually.
|
|
55
|
+
|
|
56
|
+
| Field | Description | Default |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| `apiKey` | API key | — |
|
|
59
|
+
| `apiBaseUrl` | API base URL | — |
|
|
60
|
+
| `model` | Model name | `openai/gpt-4o` |
|
|
61
|
+
| `thinkingLevel` | Thinking level | `medium` |
|
|
62
|
+
| `contextWindow` | Context window | `1000000` |
|
|
63
|
+
| `language` | Interface language (`auto`/`zh`/`en`) | `auto` |
|
|
64
|
+
| `mainAgent` | Main agent (`arona`/`plana`) | `arona` |
|
|
65
|
+
| `subAgents` | Enabled sub agents array | `[]` |
|
|
66
|
+
| `ttsEnabled` | Enable TTS | `true` |
|
|
67
|
+
| `sttEnabled` | Enable STT | `true` |
|
|
68
|
+
| `workspaceId` | Alibaba Cloud Model Studio business space ID | — |
|
|
69
|
+
| `ttsApiKey` | DashScope API key | — |
|
|
70
|
+
| `ttsModel` | TTS model | `qwen-audio-3.0-tts-plus` |
|
|
71
|
+
| `ttsProvider` | TTS backend (`aliyun`/`gpt-sovits`) | `aliyun` |
|
|
72
|
+
| `ttsConfig` | Provider-specific config | `{}` |
|
|
73
|
+
| `sttApiKey` | DashScope API key | — |
|
|
74
|
+
| `sttModel` | STT model | `qwen-audio-3.0-asr-flash-streaming` |
|
|
75
|
+
| `sttFormat` | STT audio format | `pcm` |
|
|
76
|
+
| `sttSampleRate` | STT sample rate | `16000` |
|
|
77
|
+
| `cuaApiKey` | Cua API key | — |
|
|
78
|
+
| `tavilyApiKey` | Tavily API key | — |
|
|
79
|
+
| `pythonPath` | Python path | `python3` |
|
|
80
|
+
| `mcpServers` | MCP server JSON | `{}` |
|
|
81
|
+
|
|
82
|
+
Model prefix auto-detection: if `model` contains no `/`, a `provider/` prefix is added automatically based on the model name prefix or the `apiBaseUrl` domain.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Data Paths (`~/.arona/`)
|
|
87
|
+
|
|
88
|
+
| Path | Description |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `settings.json` | Main config file; see the [Configuration](#configuration) section for fields |
|
|
91
|
+
| `voices.json` | TTS Voices config file |
|
|
92
|
+
| `MEMORY.md` | Persistent memory |
|
|
93
|
+
| `sessions/` | Saved sessions |
|
|
94
|
+
| `skills/` | Custom skills |
|
|
95
|
+
| `undo/` | Undo/redo snapshots |
|
|
96
|
+
| `pet.json` | Desktop pet window position |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Key functions
|
|
101
|
+
|
|
102
|
+
- **Desktop pet**: transparent frameless always-on-top window; drag to move; shake the head region left-right to trigger the "head-pat" easter egg; clicks/drags also fire FX.
|
|
103
|
+
- **STT hotkey**: right Cmd on macOS, right Ctrl on Windows/Linux — hold for ≥ 2 seconds to start a one-shot recording.
|
|
104
|
+
> Global keyboard listening requires Accessibility permission for Python (System Settings → Privacy & Security → Accessibility).
|
|
105
|
+
|
|
106
|
+
> Computer Use screenshots require Screen Recording permission for the terminal.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Slash Commands
|
|
111
|
+
|
|
112
|
+
| Category | Commands |
|
|
113
|
+
|---|---|
|
|
114
|
+
| Session | `/new` `/clear` · `/resume` · `/exit` · `/export` · `/compact` |
|
|
115
|
+
| Display | `/thinking` · `/details` |
|
|
116
|
+
| Voice | `/tts` · `/stt` |
|
|
117
|
+
| Extensions | `/skill` · `/mcp` |
|
|
118
|
+
| Other | `/change-agent` · `/undo` · `/redo` · `/help` |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Extensions
|
|
123
|
+
|
|
124
|
+
- **Custom Skills**: place `SKILL.md` in `~/.arona/skills/<name>/`, then invoke with `/skill <name>`.
|
|
125
|
+
- **MCP servers**: configure a JSON object in the `mcpServers` field of `~/.arona/settings.json`; tools are registered automatically.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## License
|
|
130
|
+
|
|
131
|
+
This project is open-sourced under the [MIT License](LICENSE).
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Copyright
|
|
136
|
+
|
|
137
|
+
This project is an independently developed unofficial project and is not directly affiliated with or endorsed by Nexon Games Co., Ltd., YOSTAR LIMITED, or the official Blue Archive game team.
|
|
138
|
+
|
|
139
|
+
- The core project code is released under the MIT License. However, no license is granted by this project (or any third party) for any files within the assets/blue-archive/ directory. These files pertain to the intellectual property of Blue Archive and include, but are not limited to, character illustrations, artwork, audio files, text content, and related derivative assets. No warranty of legality or usability is provided for these assets.
|
|
140
|
+
- The use, reproduction, and distribution of such content must strictly comply with the [rules](https://bluearchive.jp/fankit/guidelines) published by Nexon Games Co., Ltd. and YOSTAR LIMITED, as well as all applicable laws and regulations.
|
|
141
|
+
- This project does not provide access to these third-party files. Users must obtain legitimate copies independently from the official channels of the rights holders and assume full responsibility for their use.
|
|
142
|
+
- This project must not be used for distribution that infringes upon the rights of the copyright holders; any such infringement is the sole responsibility of the user.
|
|
143
|
+
|
|
144
|
+
All intellectual property rights for such content belong to Nexon Games Co., Ltd. and YOSTAR LIMITED. Usage, reproduction, and distribution must strictly adhere to the official terms set by these rights holders and applicable laws.
|
|
145
|
+
If a rights holder believes this disclaimer or the project's usage violates any terms, please contact me. Upon verification, the relevant content will be adjusted or removed promptly.
|