kiku-agent 1.3.2 → 1.3.3
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 +69 -12
- package/package.json +2 -1
- package/server/agent/agentCore.js +319 -46
- package/server/agent/appPaths.js +31 -0
- package/server/agent/audioPlayer.js +339 -12
- package/server/agent/autoContext.js +193 -0
- package/server/agent/catalogEntityResolver.js +170 -28
- package/server/agent/clarifyingQuestions.js +137 -35
- package/server/agent/cli.js +177 -48
- package/server/agent/cloudAdapters.js +116 -0
- package/server/agent/commandRegistry.js +409 -80
- package/server/agent/commands.js +1056 -125
- package/server/agent/config.js +1088 -690
- package/server/agent/contextCompactor.js +213 -21
- package/server/agent/cpuMetrics.js +199 -0
- package/server/agent/engineService.js +591 -0
- package/server/agent/eval/modules/evaluation/runner.js +4 -14
- package/server/agent/eval/modules/evaluation/scoring.js +15 -3
- package/server/agent/eval/modules/server/evalApi.js +5 -5
- package/server/agent/eval/modules/ui/evalUi.js +7 -4
- package/server/agent/eventBus.js +1 -0
- package/server/agent/ink/main.jsx +196 -191
- package/server/agent/jobManager.js +11 -1
- package/server/agent/lanDiscovery.js +721 -23
- package/server/agent/llmClient.js +317 -71
- package/server/agent/lmStudioWakeup.js +517 -65
- package/server/agent/locationService.js +797 -0
- package/server/agent/mcpQuizData.js +509 -0
- package/server/agent/memory/contextAllocator.js +19 -7
- package/server/agent/memory.js +3 -1
- package/server/agent/modelCompatibility.js +352 -0
- package/server/agent/modelDefaults.js +1 -0
- package/server/agent/modelManager.js +46 -2
- package/server/agent/newsWatch.js +9 -3
- package/server/agent/processManager.js +229 -0
- package/server/agent/prompts.js +174 -8
- package/server/agent/routingInterceptor.js +9 -1
- package/server/agent/sanitizer.js +41 -6
- package/server/agent/searchQueryPlanner.js +202 -0
- package/server/agent/session.js +59 -4
- package/server/agent/tests/agentFollowUps.test.js +128 -2
- package/server/agent/tests/agentMusicControl.test.js +245 -0
- package/server/agent/tests/apiRouter.test.js +1 -1
- package/server/agent/tests/autoContext.test.js +176 -0
- package/server/agent/tests/bilibiliEmbed.test.js +45 -0
- package/server/agent/tests/chatHardening.test.js +121 -0
- package/server/agent/tests/chineseWebSearchEscalation.test.js +62 -0
- package/server/agent/tests/clarifyingQuestions.test.js +33 -0
- package/server/agent/tests/cliAutomation.test.js +38 -1
- package/server/agent/tests/cloudProviders.test.js +91 -3
- package/server/agent/tests/commands.test.js +92 -3
- package/server/agent/tests/contextIntelligence.test.js +50 -3
- package/server/agent/tests/cpuMetrics.test.js +101 -0
- package/server/agent/tests/decisionAndSearchEnhancements.test.js +32 -0
- package/server/agent/tests/edgeCasesScenarios.test.js +82 -0
- package/server/agent/tests/engineService.test.js +436 -0
- package/server/agent/tests/engineUnload.test.js +94 -0
- package/server/agent/tests/envCommand.test.js +69 -0
- package/server/agent/tests/evalMetrics.test.js +8 -0
- package/server/agent/tests/fetchApi.test.js +99 -0
- package/server/agent/tests/hybridWebSearch.test.js +2 -0
- package/server/agent/tests/lanDiscovery.test.js +5 -0
- package/server/agent/tests/lanInterfaces.test.js +510 -0
- package/server/agent/tests/lmStudioWakeup.test.js +278 -0
- package/server/agent/tests/locationTool.test.js +278 -0
- package/server/agent/tests/memoryRoute.test.js +173 -0
- package/server/agent/tests/memoryUiNormalization.test.js +75 -0
- package/server/agent/tests/modelCompatibility.test.js +148 -0
- package/server/agent/tests/modelManager.test.js +32 -0
- package/server/agent/tests/musicControlUiBridge.test.js +113 -0
- package/server/agent/tests/nextGenArchitecture.test.js +4 -2
- package/server/agent/tests/openDomainPrompt.test.js +197 -0
- package/server/agent/tests/openDomainSearch.test.js +121 -0
- package/server/agent/tests/processManager.test.js +144 -0
- package/server/agent/tests/providerPersistence.test.js +10 -5
- package/server/agent/tests/quickActionsAndModals.test.js +180 -0
- package/server/agent/tests/searchQueryPlanner.test.js +108 -0
- package/server/agent/tests/securityAuditRemediation.test.js +16 -9
- package/server/agent/tests/securityAuditRemediations2.test.js +154 -0
- package/server/agent/tests/securityHardening.test.js +4 -4
- package/server/agent/tests/sessionAndCopy.test.js +39 -4
- package/server/agent/tests/sidebarControls.test.js +34 -0
- package/server/agent/tests/statefulMemory.test.js +8 -1
- package/server/agent/tests/textProtocolLoop.test.js +71 -0
- package/server/agent/tests/textToolParsing.test.js +48 -0
- package/server/agent/tests/toolRoutingRegressions.test.js +41 -0
- package/server/agent/tests/unifiedEndpoints.test.js +13 -6
- package/server/agent/tests/v110Features.test.js +1 -1
- package/server/agent/tests/vramEstimator.test.js +75 -0
- package/server/agent/tests/webChatDocs.test.js +199 -0
- package/server/agent/tests/webChatInferenceControl.test.js +298 -0
- package/server/agent/tests/webChatInspection.test.js +256 -5
- package/server/agent/tests/webChatMcp.test.js +94 -0
- package/server/agent/tests/webExtract.test.js +23 -0
- package/server/agent/tests/webSources.test.js +46 -12
- package/server/agent/textToolProtocol.js +173 -46
- package/server/agent/toolRouter.js +318 -44
- package/server/agent/tools.js +877 -96
- package/server/agent/ui.js +39 -34
- package/server/agent/vramService.js +35 -54
- package/server/agent/webSearch.js +441 -162
- package/server/agent/websearch/orchestrator.js +15 -5
- package/server/agent/websearch/resilience/cache.js +9 -2
- package/server/agent/websearch/security/ssrf.js +41 -10
- package/server/agent/youtubeAuth.js +5 -20
- package/server/apiRouter.js +5558 -4422
- package/server/mcp/data/discography.js +2 -2
- package/server/mcp/examples/antigravity.example.json +17 -0
- package/server/mcp/handler.js +8 -4
- package/server/mcp/security.js +220 -21
- package/server/mcp/server.js +2 -1
- package/server/mcp/tests/connection.test.js +14 -8
- package/server/mcp/tests/mcpKeyAuth.test.js +156 -0
- package/server/mcp/tools.js +7 -1
- package/server/supabase_migration_prefix.sql +102 -0
- package/server/supabase_schema.sql +18 -18
- package/server/web-chat/core/connection.js +179 -218
- package/server/web-chat/core/conversationContext.js +9 -2
- package/server/web-chat/core/directCatalogEngine.js +52 -28
- package/server/web-chat/core/dramaKnowledge.js +33 -22
- package/server/web-chat/core/followUpEngine.js +735 -81
- package/server/web-chat/core/futureEventGuard.js +5 -1
- package/server/web-chat/core/musicControlAction.js +70 -0
- package/server/web-chat/core/security.js +32 -21
- package/server/web-chat/core/toolInspector.js +6 -6
- package/server/web-chat/core/urlGuard.js +45 -0
- package/server/web-chat/router.js +204 -157
- package/server/web-chat/routes/chatRoute.js +885 -488
- package/server/web-chat/routes/engineRoute.js +270 -0
- package/server/web-chat/routes/exportRoute.js +1 -1
- package/server/web-chat/routes/lanDiscoveryRoute.js +17 -2
- package/server/web-chat/routes/lmStudioLoadRoute.js +172 -0
- package/server/web-chat/routes/mcpRoute.js +386 -0
- package/server/web-chat/routes/memoryRoute.js +253 -0
- package/server/web-chat/routes/providerRoute.js +49 -16
- package/server/web-chat/routes/staticRoute.js +306 -17
- package/server/web-chat/routes/statusRoute.js +194 -73
- package/server/web-chat/routes/suggestRoute.js +11 -3
- package/server/web-chat/routes/verifyRoute.js +26 -4
- package/server/web-chat/server.js +7 -6
- package/server/web-chat/ui/docsBuilder.js +3558 -0
- package/server/web-chat/ui/htmlBuilder.js +12 -0
- package/server/web-chat/ui/scripts/client.js +3401 -1302
- package/server/web-chat/ui/scripts/webchatI18n.js +155 -153
- package/server/web-chat/ui/settingsBuilder.js +7870 -0
- package/server/web-chat/ui/styles/lan-card.css +165 -0
- package/server/web-chat/ui/styles/main.css +4289 -447
- package/server/web-chat/ui/sw.js +64 -0
- package/server/web-chat/ui/templates/body.html +407 -281
- package/src/data/awardsData.js +146 -146
- package/src/data/musicVideoData.js +6 -4
- package/src/lib/vram/estimator.js +195 -19
|
@@ -10,8 +10,10 @@ export const COMMAND_DEFINITIONS = Object.freeze([
|
|
|
10
10
|
{ name: '/mem', usage: '/mem [add|del|search|list|topics|summary|import|export|clear]', desc: 'Manage and summarize long-term memory', insert: '/mem ' },
|
|
11
11
|
{ name: '/subagent', usage: '/subagent <research task>', desc: 'Run a bounded Ju Jingyi research subagent', insert: '/subagent ' },
|
|
12
12
|
{ name: '/research', usage: '/research <question|status|last|sources|cancel>', desc: 'Run coordinated multi-source Ju Jingyi research', insert: '/research ' },
|
|
13
|
+
{ name: '/sources', usage: '/sources [filter]', desc: 'View verified citations and evidence sources from research', insert: '/sources ' },
|
|
14
|
+
{ name: '/autoresearch', usage: '/autoresearch [on|off|auto]', desc: 'Control automatic deep research triggering mode', insert: '/autoresearch ' },
|
|
13
15
|
{ name: '/verify', usage: '/verify <claim>', desc: 'Verify a Ju Jingyi claim with independent workers', insert: '/verify ' },
|
|
14
|
-
{ name: '/debate', usage: '/debate <claim|status|last>', desc: 'Run multi-agent adversarial debate & fact synthesis', insert: '/debate ' },
|
|
16
|
+
{ name: '/debate', usage: '/debate <claim|status|last|cancel>', desc: 'Run multi-agent adversarial debate & fact synthesis', insert: '/debate ' },
|
|
15
17
|
{ name: '/timeline', usage: '/timeline [year|era]', desc: 'Render career milestone graphic timeline in terminal', insert: '/timeline ' },
|
|
16
18
|
{ name: '/suggestion', usage: '/suggestion [list|run <id|all>|auto|refresh|topic <name>]', desc: 'Generate AI research suggestions & execute with concurrent subagents', insert: '/suggestion ' },
|
|
17
19
|
{ name: '/skill', usage: '/skill [learn|list|del|on|off|clear]', desc: 'Teach Kiku how to answer for you', insert: '/skill ' },
|
|
@@ -26,12 +28,17 @@ export const COMMAND_DEFINITIONS = Object.freeze([
|
|
|
26
28
|
{ name: '/discover', usage: '/discover [drama|song|stage|photo]', desc: 'Discover something from the catalog', insert: '/discover ' },
|
|
27
29
|
{ name: '/stats', usage: '/stats [overview|tokens]', desc: 'Show catalog overview or session token telemetry', insert: '/stats ' },
|
|
28
30
|
{ name: '/provider', usage: '/provider [list|use <name> [model]|url [provider] [url]|models [name]|setkey [provider] <key>|info <name>|test|status]', desc: 'Manage AI providers and unified API Base URLs (LM Studio, vLLM, OpenAI, Gemini, Groq, DeepSeek, OpenRouter)', insert: '/provider ' },
|
|
29
|
-
{ name: '/
|
|
30
|
-
{ name: '/
|
|
31
|
+
{ name: '/url', usage: '/url [provider] [baseUrl]', desc: 'Inspect or update AI provider API Base URL', insert: '/url ' },
|
|
32
|
+
{ name: '/endpoint', usage: '/endpoint [provider] [baseUrl]', desc: 'Inspect or configure provider API endpoint URL', insert: '/endpoint ' },
|
|
33
|
+
{ name: '/lan', usage: '/lan [scan [<cidr|range|ip|name>,...] [--iface <n|name>] [--ports p1,p2] [--force]|ifs|use <n> [model]|json]', desc: 'List interfaces (/lan ifs), scan one LAN or custom ranges for LM Studio / vLLM / Ollama servers, and connect (scan results persist across restarts)', insert: '/lan ' },
|
|
34
|
+
{ name: '/model', usage: '/model [status|engine [lms|vllm]|config [options]|preset [id]|files|load <id>|stop|unload|temp|topp|minp|repeat|ctx|thinking|list|use <id>|recommend|reconnect]', desc: 'Manage AI model, active local engines (LM Studio / vLLM), load config, presets, installed GGUF files, and inference parameters', insert: '/model ' },
|
|
35
|
+
{ name: '/unload', usage: '/unload [lms|vllm|all]', desc: 'Unload active model from LM Studio or vLLM and release GPU VRAM', insert: '/unload ' },
|
|
36
|
+
{ name: '/ping', usage: '/ping [provider]', desc: 'Ping model endpoint and measure round-trip latency', insert: '/ping ' },
|
|
31
37
|
{ name: '/vram', usage: '/vram [check <model>|live|compare|ctx|list|tier] [--ctx <len>] [--quant <type>] [--force]', desc: 'Predictive VRAM analyzer: footprint, live usage, quant/context ladders, hardware tier & pre-flight check', insert: '/vram ' },
|
|
32
38
|
{ name: '/eval', usage: '/eval [ui|dashboard|validate|quick|run|judge|compare|gate|status]', desc: 'Manage evaluation studio, benchmarks, and performance dashboards', insert: '/eval ' },
|
|
33
39
|
{ name: '/hub', usage: '/hub [filter]', desc: 'Show Kiku Master Command Center hub with hardware telemetry & command index', insert: '/hub' },
|
|
34
40
|
{ name: '/portal', usage: '/portal [open|api|chat|eval|status] [port]', desc: 'Inspect or open local portal, REST API docs, Web Chat, or Eval Studio (port 3000)', insert: '/portal ' },
|
|
41
|
+
{ name: '/web', usage: '/web [start|open|stop|status|restart] [port]', desc: 'Launch or manage standalone web chatbot on port 3002', insert: '/web ' },
|
|
35
42
|
{ name: '/profile', usage: '/profile [list|use <name>|show <name>|save <name>|delete <name>]', desc: 'Manage configuration profiles (default, fast, deep-reasoning, cloud, gemini)', insert: '/profile ' },
|
|
36
43
|
{ name: '/mcp', usage: '/mcp [status|list|connect <name> <url|cmd>|disconnect <name>|remove <name>|reconnect [all]|save|reload|tools]', desc: 'Manage persistent Model Context Protocol connections', insert: '/mcp ' },
|
|
37
44
|
{ name: '/config', usage: '/config', desc: 'Show runtime configuration', insert: '/config' },
|
|
@@ -40,9 +47,12 @@ export const COMMAND_DEFINITIONS = Object.freeze([
|
|
|
40
47
|
{ name: '/prompt', usage: '/prompt', desc: 'Preview the active system persona', insert: '/prompt' },
|
|
41
48
|
{ name: '/system', usage: '/system', desc: 'Show operating-system and memory information', insert: '/system' },
|
|
42
49
|
{ name: '/gpu', usage: '/gpu [status]', desc: 'Show GPU & VRAM hardware resource metrics', insert: '/gpu' },
|
|
50
|
+
{ name: '/process', usage: '/process [list|kill <name|pid>]', desc: 'Inspect running background child processes, track PIDs, and kill process trees', insert: '/process ' },
|
|
43
51
|
{ name: '/about', usage: '/about', desc: 'Show information about Kiku Agent', insert: '/about' },
|
|
44
|
-
{ name: '/
|
|
52
|
+
{ name: '/version', usage: '/version [info]', desc: 'Show Kiku Agent version, runtime environment, and OS platform', insert: '/version' },
|
|
53
|
+
{ name: '/quiz', usage: '/quiz [lang|mcp]', desc: 'Take the Ju Jingyi quiz to claim a Developer VIP or MCP API Key', insert: '/quiz ' },
|
|
45
54
|
{ name: '/key', usage: '/key [show|apply <key>|clear]', desc: 'Manage your Developer VIP API Key', insert: '/key ' },
|
|
55
|
+
{ name: '/mcp-key', usage: '/mcp-key [show|apply <key>|clear|config]', desc: 'Manage your Ju Jingyi MCP API Key', insert: '/mcp-key ' },
|
|
46
56
|
{ name: '/ads', usage: '/ads', desc: 'Show the next sponsor card', insert: '/ads' },
|
|
47
57
|
{ name: '/gallery', usage: '/gallery', desc: 'Show the next Ju Jingyi image in the terminal', insert: '/gallery' },
|
|
48
58
|
{ name: '/retry', usage: '/retry', desc: 'Retry the previous query', insert: '/retry' },
|
|
@@ -63,7 +73,6 @@ export const COMMAND_DEFINITIONS = Object.freeze([
|
|
|
63
73
|
{ name: '/search', usage: '/search <query>', desc: 'Search YouTube', insert: '/search ' },
|
|
64
74
|
{ name: '/current', usage: '/current', desc: 'Show the current track', insert: '/current' },
|
|
65
75
|
{ name: '/queue', usage: '/queue [clear]', desc: 'Show or clear the active queue', insert: '/queue ' },
|
|
66
|
-
{ name: '/web', usage: '/web [start|open|stop|status|restart] [port]', desc: 'Start or open the standalone chatbot web app (port 3002)', insert: '/web ' },
|
|
67
76
|
{ name: '/login', usage: '/login', desc: 'Connect a YouTube browser session', insert: '/login' },
|
|
68
77
|
{ name: '/ytstatus', usage: '/ytstatus', desc: 'Show YouTube authentication status', insert: '/ytstatus' },
|
|
69
78
|
{ name: '/exit', usage: '/exit', desc: 'Archive the session and quit', insert: '/exit' },
|
|
@@ -82,7 +91,7 @@ export const COMMAND_CATEGORIES = Object.freeze([
|
|
|
82
91
|
id: 'research',
|
|
83
92
|
name: 'Research & Intelligence',
|
|
84
93
|
icon: '✦',
|
|
85
|
-
commands: ['/research', '/subagent', '/verify', '/debate', '/suggestion', '/jobs'],
|
|
94
|
+
commands: ['/research', '/subagent', '/verify', '/debate', '/suggestion', '/sources', '/autoresearch', '/jobs'],
|
|
86
95
|
},
|
|
87
96
|
{
|
|
88
97
|
id: 'catalog',
|
|
@@ -94,7 +103,7 @@ export const COMMAND_CATEGORIES = Object.freeze([
|
|
|
94
103
|
id: 'model',
|
|
95
104
|
name: 'AI Model & MCP Connectivity',
|
|
96
105
|
icon: '●',
|
|
97
|
-
commands: ['/provider', '/lan', '/model', '/profile', '/mcp', '/prompt', '/config', '/env'],
|
|
106
|
+
commands: ['/provider', '/url', '/endpoint', '/lan', '/model', '/unload', '/ping', '/profile', '/mcp', '/prompt', '/config', '/env'],
|
|
98
107
|
},
|
|
99
108
|
{
|
|
100
109
|
id: 'media',
|
|
@@ -106,21 +115,24 @@ export const COMMAND_CATEGORIES = Object.freeze([
|
|
|
106
115
|
id: 'system',
|
|
107
116
|
name: 'System, Theme & Developer Tools',
|
|
108
117
|
icon: '◆',
|
|
109
|
-
commands: ['/doctor', '/system', '/gpu', '/vram', '/eval', '/hub', '/portal', '/theme', '/lang', '/quiz', '/key', '/about', '/tools', '/tool', '/ads'],
|
|
118
|
+
commands: ['/doctor', '/system', '/gpu', '/vram', '/process', '/eval', '/hub', '/portal', '/theme', '/lang', '/quiz', '/key', '/mcp-key', '/about', '/version', '/tools', '/tool', '/ads'],
|
|
110
119
|
},
|
|
111
120
|
]);
|
|
112
121
|
|
|
113
122
|
export const SUB_COMMANDS = Object.freeze({
|
|
114
|
-
'/help': ['find', 'web', 'provider', 'model', 'session', 'details', 'copy', 'mcp', 'mem', 'research', 'verify', 'suggestion', 'skill', 'theme', 'quiz', 'key', 'play', 'doctor'],
|
|
123
|
+
'/help': ['find', 'web', 'provider', 'model', 'session', 'details', 'copy', 'mcp', 'mem', 'research', 'verify', 'debate', 'timeline', 'suggestion', 'skill', 'theme', 'quiz', 'key', 'mcp-key', 'play', 'doctor'],
|
|
115
124
|
'/web': ['start', 'open', 'status', 'stop', 'restart', '3001'],
|
|
116
125
|
'/mem': ['add <fact>', 'search <query>', 'list', 'topics', 'summary', 'del <id>', 'import <path>', 'export', 'clear'],
|
|
117
|
-
'/quiz': ['lang th', 'lang en', 'lang zh'],
|
|
126
|
+
'/quiz': ['mcp', 'lang th', 'lang en', 'lang zh'],
|
|
118
127
|
'/key': ['show', 'apply <key>', 'clear'],
|
|
128
|
+
'/mcp-key': ['show', 'apply <key>', 'clear', 'config'],
|
|
119
129
|
'/subagent': ['<research task>', 'status', 'last'],
|
|
120
130
|
'/research': ['<question>', 'status', 'last', 'sources', 'auto on|off|status', 'cancel'],
|
|
121
|
-
'/
|
|
131
|
+
'/sources': ['', 'weibo', 'baidu', 'youtube', 'bilibili'],
|
|
132
|
+
'/autoresearch': ['on', 'off', 'auto', 'status'],
|
|
133
|
+
'/verify': ['<claim>', 'status', 'last'],
|
|
122
134
|
'/debate': ['<claim>', 'status', 'last', 'cancel'],
|
|
123
|
-
'/timeline': ['2026', '2024
|
|
135
|
+
'/timeline': ['2026', '2025', '2024', 'snh48', 'solo', 'studio', 'drama', 'music'],
|
|
124
136
|
'/suggestion': ['list', 'run 1', 'run all', 'auto', 'refresh', 'topic drama', 'topic music', 'topic fashion', 'topic 2026'],
|
|
125
137
|
'/skill': ['learn <instruction>', 'list', 'del <id>', 'on', 'off', 'clear'],
|
|
126
138
|
'/find': ['--type work', '--type song', '--type role', '--type brand', '--type award', '--type photo', '--type stage', '--year 2026', '--limit 8'],
|
|
@@ -131,7 +143,7 @@ export const SUB_COMMANDS = Object.freeze({
|
|
|
131
143
|
'/jobs': ['list', 'show <id>', 'cancel <id>', 'clear'],
|
|
132
144
|
'/discover': ['drama', 'song', 'stage', 'photo', 'song --mood calm', 'stage --year 2025'],
|
|
133
145
|
'/stats': ['overview', 'tokens', 'session'],
|
|
134
|
-
'/vram': ['check
|
|
146
|
+
'/vram': ['check google/gemma-4-e4b --ctx 8192 --quant q4_k_m', 'live', 'compare --ctx 16384', 'ctx --quant q4_k_m', 'list', 'tier'],
|
|
135
147
|
'/eval': ['ui', 'dashboard', 'validate', 'quick', 'run', 'judge', 'compare', 'gate', 'status'],
|
|
136
148
|
'/hub': ['', '<filter>'],
|
|
137
149
|
'/portal': ['open', 'api', 'chat', 'eval', 'status', '3000'],
|
|
@@ -174,22 +186,61 @@ export const SUB_COMMANDS = Object.freeze({
|
|
|
174
186
|
'test deepseek',
|
|
175
187
|
'test lmstudio'
|
|
176
188
|
],
|
|
177
|
-
'/
|
|
178
|
-
'/
|
|
189
|
+
'/url': ['', 'lmstudio', 'vllm', 'ollama', 'openai', 'gemini', 'groq', 'deepseek', 'openrouter', 'reset'],
|
|
190
|
+
'/endpoint': ['', 'lmstudio', 'vllm', 'ollama', 'openai', 'gemini', 'groq', 'deepseek', 'openrouter'],
|
|
191
|
+
'/model': [
|
|
192
|
+
'status',
|
|
193
|
+
'engine',
|
|
194
|
+
'engine lms',
|
|
195
|
+
'engine vllm',
|
|
196
|
+
'config',
|
|
197
|
+
'config --gpu max --threads 8',
|
|
198
|
+
'config --mem-util 0.85 --enforce-eager',
|
|
199
|
+
'config --reset',
|
|
200
|
+
'preset',
|
|
201
|
+
'preset gemma4',
|
|
202
|
+
'preset vllm',
|
|
203
|
+
'preset qwen',
|
|
204
|
+
'preset gemini',
|
|
205
|
+
'preset groq',
|
|
206
|
+
'preset deepseek',
|
|
207
|
+
'preset luna',
|
|
208
|
+
'preset openrouter',
|
|
209
|
+
'files',
|
|
210
|
+
'load <model-id>',
|
|
211
|
+
'stop [engine]',
|
|
212
|
+
'unload [engine]',
|
|
213
|
+
'temp',
|
|
214
|
+
'topp',
|
|
215
|
+
'ctx',
|
|
216
|
+
'thinking',
|
|
217
|
+
'ping',
|
|
218
|
+
'list',
|
|
219
|
+
'recommend',
|
|
220
|
+
'use <model-id>',
|
|
221
|
+
'reconnect'
|
|
222
|
+
],
|
|
223
|
+
'/unload': ['lms', 'vllm', 'all'],
|
|
224
|
+
'/ping': ['', 'lmstudio', 'vllm', 'ollama', 'openai', 'gemini', 'groq', 'deepseek', 'openrouter'],
|
|
225
|
+
'/lan': ['ifs', 'scan', 'scan --iface Wi-Fi', 'scan 192.168.0.0/24', 'scan 10.0.0.1-10.0.0.50 --ports 1234,8000', 'use <n>', 'use 1 <model>', 'json'],
|
|
179
226
|
'/profile': ['list', 'use default', 'use fast', 'use deep-reasoning', 'use cloud', 'use gemini', 'show default', 'save <name>', 'delete <name>'],
|
|
180
227
|
'/mcp': ['status', 'list', 'tools', 'connect <name> <url>', 'disconnect <name>', 'remove <name>', 'reconnect [all]', 'save', 'reload'],
|
|
181
228
|
'/config': ['status'],
|
|
182
229
|
'/doctor': ['check'],
|
|
183
|
-
'/prompt': ['show'],
|
|
230
|
+
'/prompt': ['show', 'rules'],
|
|
184
231
|
'/system': ['info'],
|
|
185
|
-
'/gpu': ['status'],
|
|
232
|
+
'/gpu': ['status', 'live'],
|
|
233
|
+
'/process': ['list', 'kill <name|pid>'],
|
|
186
234
|
'/about': ['info'],
|
|
235
|
+
'/version': ['info'],
|
|
236
|
+
'/tools': ['', 'drama', 'music', 'brand', 'mcp', 'search'],
|
|
237
|
+
'/tool': ['search_works', 'get_profile_and_fandom', 'search_discography', 'search_brands'],
|
|
187
238
|
'/ads': ['next'],
|
|
188
|
-
'/gallery': ['show'],
|
|
189
|
-
'/retry': ['again'],
|
|
190
|
-
'/cancel': ['stop'],
|
|
191
|
-
'/clear': ['now'],
|
|
192
|
-
'/save': ['markdown'],
|
|
239
|
+
'/gallery': ['show', 'random', '2026', '2025', '2024'],
|
|
240
|
+
'/retry': ['again', 'force'],
|
|
241
|
+
'/cancel': ['stop', 'all'],
|
|
242
|
+
'/clear': ['now', 'session'],
|
|
243
|
+
'/save': ['markdown', 'json', 'html', 'text'],
|
|
193
244
|
'/lang': ['th', 'zh', 'en', 'auto'],
|
|
194
245
|
'/theme': ['next', 'prev', 'list', 'current', 'sakura', 'midnight', 'ocean', 'forest', 'sunset', 'monochrome', 'reset'],
|
|
195
246
|
'/thinking': ['show', 'hide', 'toggle'],
|
|
@@ -383,16 +434,48 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
383
434
|
'/provider models',
|
|
384
435
|
],
|
|
385
436
|
},
|
|
437
|
+
'/url': {
|
|
438
|
+
summary: 'Inspect or configure the unified API Base URL for local or cloud AI providers',
|
|
439
|
+
usage: '/url [provider] [baseUrl | reset]',
|
|
440
|
+
subcommands: [
|
|
441
|
+
{ cmd: '', desc: 'Show currently configured API Base URL and connectivity for the active provider', example: '/url' },
|
|
442
|
+
{ cmd: '<provider>', desc: 'Show Base URL and connectivity for a specific provider (lmstudio, vllm, ollama, openai, gemini, groq, deepseek, openrouter)', example: '/url vllm' },
|
|
443
|
+
{ cmd: '<provider> <url>', desc: 'Set and persist a custom API Base URL for the specified provider', example: '/url vllm http://127.0.0.1:8000/v1' },
|
|
444
|
+
{ cmd: 'reset <provider>', desc: 'Reset provider Base URL to default built-in endpoint', example: '/url reset lmstudio' },
|
|
445
|
+
],
|
|
446
|
+
examples: [
|
|
447
|
+
'/url',
|
|
448
|
+
'/url vllm',
|
|
449
|
+
'/url lmstudio http://127.0.0.1:1234/v1',
|
|
450
|
+
'/url vllm http://localhost:8000/v1',
|
|
451
|
+
'/url reset vllm',
|
|
452
|
+
],
|
|
453
|
+
},
|
|
454
|
+
'/endpoint': {
|
|
455
|
+
summary: 'Inspect or configure provider API endpoint URL (alias to /provider url / /url)',
|
|
456
|
+
usage: '/endpoint [provider] [baseUrl]',
|
|
457
|
+
subcommands: [
|
|
458
|
+
{ cmd: '', desc: 'Display active provider endpoint URL, connectivity latency, and status', example: '/endpoint' },
|
|
459
|
+
{ cmd: '<provider> <url>', desc: 'Update and persist custom API endpoint URL for an AI provider', example: '/endpoint vllm http://localhost:8000/v1' },
|
|
460
|
+
],
|
|
461
|
+
examples: [
|
|
462
|
+
'/endpoint',
|
|
463
|
+
'/endpoint lmstudio http://127.0.0.1:1234/v1',
|
|
464
|
+
'/endpoint vllm http://localhost:8000/v1',
|
|
465
|
+
],
|
|
466
|
+
},
|
|
386
467
|
'/lan': {
|
|
387
|
-
summary: '
|
|
388
|
-
usage: '/lan [scan [<cidr|range|ip>,...] [--ports p1,p2] | use <n> | json]',
|
|
468
|
+
summary: 'List interfaces, discover LM Studio / vLLM / Ollama servers on one LAN or custom ranges — and switch to them',
|
|
469
|
+
usage: '/lan [scan [<cidr|range|ip|name>,...] [--iface <n|name>] [--ports p1,p2] [--force] | ifs | use <n> [model] | json]',
|
|
389
470
|
subcommands: [
|
|
471
|
+
{ cmd: 'ifs', desc: 'List local network interfaces (index, type, status, subnet, gateway) to pick one for scanning', example: '/lan ifs' },
|
|
390
472
|
{ cmd: 'scan', desc: 'Scan the private subnets of every local interface (plus 127.0.0.1) for OpenAI-compatible LM servers', example: '/lan scan' },
|
|
473
|
+
{ cmd: 'scan --iface <n|name>', desc: 'Scan only the subnet of one interface (index or name from /lan ifs); explicit targets still win', example: '/lan scan --iface Wi-Fi --ports 1234,8000' },
|
|
391
474
|
{ cmd: 'scan <targets>', desc: 'Scan custom ranges: CIDR any prefix, IP range a.b.c.d-e.f.g.h, or single IPs, comma-separated (private ranges only, capped by KIKU_LAN_SCAN_MAX_HOSTS)', example: '/lan scan 192.168.0.0/24, 10.0.0.1-10.0.0.50 --ports 1234,8000' },
|
|
392
|
-
{ cmd: 'use <n>', desc: 'Switch provider/baseUrl to a numbered endpoint from the last scan and connect to
|
|
475
|
+
{ cmd: 'use <n> [model]', desc: 'Switch provider/baseUrl to a numbered endpoint from the last scan (kept across restarts) and connect to the picked model', example: '/lan use 1 qwen' },
|
|
393
476
|
{ cmd: 'json', desc: 'Print the last scan result as raw JSON', example: '/lan json' },
|
|
394
477
|
],
|
|
395
|
-
examples: ['/lan', '/lan scan 192.168.0.0/24', '/lan scan 10.0.0.1-10.0.0.50 --ports 1234,8000', '/lan use 2', '/lan json'],
|
|
478
|
+
examples: ['/lan', '/lan ifs', '/lan scan --iface Wi-Fi', '/lan scan 192.168.0.0/24', '/lan scan 10.0.0.1-10.0.0.50 --ports 1234,8000', '/lan use 2', '/lan use 1 qwen', '/lan json'],
|
|
396
479
|
},
|
|
397
480
|
'/key': {
|
|
398
481
|
summary: 'Manage your Developer VIP API Key (earned via /quiz or custom seed)',
|
|
@@ -409,10 +492,23 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
409
492
|
],
|
|
410
493
|
},
|
|
411
494
|
'/model': {
|
|
412
|
-
summary: '
|
|
413
|
-
usage: '/model [status |
|
|
414
|
-
subcommands: [
|
|
415
|
-
{ cmd: 'status', desc: 'Display active model
|
|
495
|
+
summary: 'Manage AI models, active local engines, fine-tuned load config, presets, GGUFs, and inference parameters',
|
|
496
|
+
usage: '/model [status | engine [lms|vllm] | config [flags] | preset [id] | files | load <model-id> | stop | unload | temp | topp | minp | repeat | ctx | thinking | list | use <model-id> | recommend | reconnect]',
|
|
497
|
+
subcommands: [
|
|
498
|
+
{ cmd: 'status', desc: 'Display active model, provider, active engine, port status, and inference configuration', example: '/model status' },
|
|
499
|
+
{ cmd: 'engine [lms|vllm]', desc: 'Inspect active local engine, port reachability (1234 / 8000), OS compatibility, or switch active engine', example: '/model engine vllm' },
|
|
500
|
+
{ cmd: 'config [--gpu N] [--threads N] [--split-mode layer|row] [--tensor-split ratios] [--main-gpu N] [--fa] [--no-fa] [-b N] [-ub N] [--ctk DT] [--mem-util F] [--tp N] [--reset]', desc: 'Inspect or configure fine-tuned engine load parameters (multi-GPU, flash-attn, batching) for LM Studio and vLLM', example: '/model config --split-mode layer --tensor-split 20,12 --fa' },
|
|
501
|
+
{ cmd: 'preset [id]', desc: 'List or apply curated 1-click model presets matching Web Chat (gemma4, vllm, qwen, gemini, groq, deepseek, luna, openrouter)', example: '/model preset gemma4' },
|
|
502
|
+
{ cmd: 'files', desc: 'Scan and list installed local GGUF models on disk with file size and quantization details', example: '/model files' },
|
|
503
|
+
{ cmd: 'load <model-id> [options]', desc: 'Load model with fine-tuned parameters on active engine (LM Studio or vLLM on WSL2)', example: '/model load google/gemma-4-e4b --engine vllm --mem-util 0.85' },
|
|
504
|
+
{ cmd: 'stop [engine]', desc: 'Stop background engine process (vLLM or LM Studio) to free GPU VRAM and system memory', example: '/model stop vllm' },
|
|
505
|
+
{ cmd: 'unload [engine]', desc: 'Unload active model from engine and release GPU VRAM', example: '/model unload lms' },
|
|
506
|
+
{ cmd: 'temp [val]', desc: 'Inspect or adjust generation creativity (temperature 0.0 - 2.0)', example: '/model temp 0.7' },
|
|
507
|
+
{ cmd: 'topp [val]', desc: 'Inspect or adjust nucleus sampling cutoff (top-p 0.01 - 1.0)', example: '/model topp 0.95' },
|
|
508
|
+
{ cmd: 'minp [val]', desc: 'Inspect or adjust Min-P sampling threshold (0.00 - 1.00, recommended 0.05 - 0.10)', example: '/model minp 0.08' },
|
|
509
|
+
{ cmd: 'repeat [val]', desc: 'Inspect or adjust token repetition penalty (1.00 - 2.00, recommended 1.05 - 1.15)', example: '/model repeat 1.10' },
|
|
510
|
+
{ cmd: 'ctx [len]', desc: 'Inspect or adjust context window limit (e.g. 4k, 8k, 16k, 32k, 64k, 128k)', example: '/model ctx 16k' },
|
|
511
|
+
{ cmd: 'thinking [show|collapse|hide]', desc: 'Configure chain-of-thought thinking visibility mode', example: '/model thinking show' },
|
|
416
512
|
{ cmd: 'ping', desc: 'Ping the active model endpoint and report round-trip latency', example: '/model ping' },
|
|
417
513
|
{ cmd: 'list', desc: 'List models reported by the active provider or local LM Studio instance', example: '/model list' },
|
|
418
514
|
{ cmd: 'use <model-id>', desc: 'Switch active model immediately without restarting the agent', example: '/model use google/gemma-4-e4b' },
|
|
@@ -421,10 +517,49 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
421
517
|
],
|
|
422
518
|
examples: [
|
|
423
519
|
'/model status',
|
|
520
|
+
'/model engine vllm',
|
|
521
|
+
'/model config --gpu max --threads 8',
|
|
522
|
+
'/model config --split-mode layer --tensor-split 20,12 --fa',
|
|
523
|
+
'/model preset gemma4',
|
|
524
|
+
'/model files',
|
|
525
|
+
'/model load google/gemma-4-e4b --engine lms --gpu max',
|
|
526
|
+
'/model temp 0.7',
|
|
527
|
+
'/model minp 0.08',
|
|
528
|
+
'/model repeat 1.10',
|
|
529
|
+
'/model ctx 16k',
|
|
530
|
+
'/model unload lms',
|
|
424
531
|
'/model list',
|
|
425
|
-
'/model recommend',
|
|
426
532
|
'/model use gemma-4-e4b',
|
|
427
|
-
|
|
533
|
+
],
|
|
534
|
+
},
|
|
535
|
+
'/unload': {
|
|
536
|
+
summary: 'Unload active model from LM Studio or vLLM to immediately release GPU VRAM',
|
|
537
|
+
usage: '/unload [lms | vllm | all]',
|
|
538
|
+
subcommands: [
|
|
539
|
+
{ cmd: '', desc: 'Unload current active model from the active engine and free GPU VRAM', example: '/unload' },
|
|
540
|
+
{ cmd: 'lms', desc: 'Unload loaded models from LM Studio and release VRAM', example: '/unload lms' },
|
|
541
|
+
{ cmd: 'vllm', desc: 'Stop vLLM inference server and free GPU memory', example: '/unload vllm' },
|
|
542
|
+
{ cmd: 'all', desc: 'Unload all models across local engines', example: '/unload all' },
|
|
543
|
+
],
|
|
544
|
+
examples: [
|
|
545
|
+
'/unload',
|
|
546
|
+
'/unload lms',
|
|
547
|
+
'/unload vllm',
|
|
548
|
+
'/unload all',
|
|
549
|
+
],
|
|
550
|
+
},
|
|
551
|
+
'/ping': {
|
|
552
|
+
summary: 'Ping active model endpoint or provider server and measure round-trip network latency',
|
|
553
|
+
usage: '/ping [provider]',
|
|
554
|
+
subcommands: [
|
|
555
|
+
{ cmd: '', desc: 'Send lightweight ping probe to active model endpoint and report round-trip latency in ms', example: '/ping' },
|
|
556
|
+
{ cmd: '<provider>', desc: 'Ping a specific provider server endpoint (lmstudio, vllm, ollama, groq, gemini, etc.)', example: '/ping vllm' },
|
|
557
|
+
],
|
|
558
|
+
examples: [
|
|
559
|
+
'/ping',
|
|
560
|
+
'/ping vllm',
|
|
561
|
+
'/ping lmstudio',
|
|
562
|
+
'/ping groq',
|
|
428
563
|
],
|
|
429
564
|
},
|
|
430
565
|
'/research': {
|
|
@@ -446,31 +581,109 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
446
581
|
},
|
|
447
582
|
'/verify': {
|
|
448
583
|
summary: 'Verify a Ju Jingyi claim or rumor with independent workers across official catalog & web sources',
|
|
449
|
-
usage: '/verify <claim about Ju Jingyi>',
|
|
584
|
+
usage: '/verify <claim about Ju Jingyi> | /verify status',
|
|
450
585
|
subcommands: [
|
|
451
|
-
{ cmd: '<claim>', desc: 'Run
|
|
586
|
+
{ cmd: '<claim>', desc: 'Run 3-stage verification (Catalog -> Web Corroboration -> Contradiction Analysis) to produce a strict verdict', example: '/verify จวีจิ้งอีเป็น Brand Ambassador ของ Versace ในปี 2026' },
|
|
587
|
+
{ cmd: 'status', desc: 'Display progress and status of active claim verification job', example: '/verify status' },
|
|
452
588
|
],
|
|
453
589
|
examples: [
|
|
454
590
|
'/verify จวีจิ้งอีชนะเลือกตั้ง SNH48 สองสมัยซ้อน',
|
|
455
591
|
'/verify Ju Jingyi will star in a new 2026 historical drama',
|
|
456
592
|
],
|
|
457
593
|
},
|
|
594
|
+
'/sources': {
|
|
595
|
+
summary: 'Inspect verified citations, URLs, and grounded evidence collected from queries and research',
|
|
596
|
+
usage: '/sources [filter]',
|
|
597
|
+
subcommands: [
|
|
598
|
+
{ cmd: '', desc: 'List grounded citations, categories, tools, and URLs from the last query or research run', example: '/sources' },
|
|
599
|
+
{ cmd: '[filter]', desc: 'Filter verified citations by keyword, domain, or catalog category (e.g. weibo, drama, ost)', example: '/sources weibo' },
|
|
600
|
+
],
|
|
601
|
+
examples: [
|
|
602
|
+
'/sources',
|
|
603
|
+
'/sources official',
|
|
604
|
+
'/sources drama',
|
|
605
|
+
],
|
|
606
|
+
},
|
|
607
|
+
'/autoresearch': {
|
|
608
|
+
summary: 'Control automatic deep research triggering mode for complex or multi-part queries',
|
|
609
|
+
usage: '/autoresearch [on | off | auto | status]',
|
|
610
|
+
subcommands: [
|
|
611
|
+
{ cmd: 'on', desc: 'Aggressive mode — route every query with a research signal into multi-worker deep research', example: '/autoresearch on' },
|
|
612
|
+
{ cmd: 'off', desc: 'Disabled mode — let the active model answer directly according to default persona rules', example: '/autoresearch off' },
|
|
613
|
+
{ cmd: 'auto', desc: 'Smart heuristic mode — automatically trigger deep research when questions are complex or multi-part (default)', example: '/autoresearch auto' },
|
|
614
|
+
{ cmd: 'status', desc: 'Display current auto-research triggering mode and environment setting', example: '/autoresearch status' },
|
|
615
|
+
],
|
|
616
|
+
examples: [
|
|
617
|
+
'/autoresearch auto',
|
|
618
|
+
'/autoresearch on',
|
|
619
|
+
'/autoresearch off',
|
|
620
|
+
'/autoresearch status',
|
|
621
|
+
],
|
|
622
|
+
},
|
|
623
|
+
'/debate': {
|
|
624
|
+
summary: 'Run multi-agent adversarial debate, cross-examination, and fact synthesis between Pro and Con subagents',
|
|
625
|
+
usage: '/debate <claim|topic> | /debate status | /debate last | /debate cancel',
|
|
626
|
+
subcommands: [
|
|
627
|
+
{ cmd: '<claim|topic>', desc: 'Launch multi-agent adversarial debate (Advocate vs Skeptic) with judge synthesis', example: '/debate จวีจิ้งอีจะคัมแบ็กผลงานเพลงเดี่ยวในปี 2026' },
|
|
628
|
+
{ cmd: 'status', desc: 'Display real-time state and round progress of active debate job', example: '/debate status' },
|
|
629
|
+
{ cmd: 'last', desc: 'Display comprehensive debate findings matrix, evidence scores, and final verdict', example: '/debate last' },
|
|
630
|
+
{ cmd: 'cancel', desc: 'Abort the currently executing adversarial debate session', example: '/debate cancel' },
|
|
631
|
+
],
|
|
632
|
+
examples: [
|
|
633
|
+
'/debate Ju Jingyi SNH48 election records',
|
|
634
|
+
'/debate status',
|
|
635
|
+
'/debate last',
|
|
636
|
+
],
|
|
637
|
+
},
|
|
638
|
+
'/timeline': {
|
|
639
|
+
summary: 'Render career milestone graphic timeline in terminal (SNH48, Solo, Studio, dramas, music, brands)',
|
|
640
|
+
usage: '/timeline [year | start-end | era | all]',
|
|
641
|
+
subcommands: [
|
|
642
|
+
{ cmd: '[year]', desc: 'Display milestones and achievements for a specific year', example: '/timeline 2024' },
|
|
643
|
+
{ cmd: '[start-end]', desc: 'Display milestones within an inclusive year range', example: '/timeline 2018-2024' },
|
|
644
|
+
{ cmd: '[era]', desc: 'Filter milestones by career era, group, or project tag (e.g. SNH48, Solo, Studio)', example: '/timeline SNH48' },
|
|
645
|
+
{ cmd: 'all', desc: 'Render the complete full career milestone timeline from debut to present', example: '/timeline all' },
|
|
646
|
+
],
|
|
647
|
+
examples: [
|
|
648
|
+
'/timeline',
|
|
649
|
+
'/timeline 2024',
|
|
650
|
+
'/timeline 2020-2025',
|
|
651
|
+
'/timeline SNH48',
|
|
652
|
+
],
|
|
653
|
+
},
|
|
458
654
|
|
|
459
655
|
'/quiz': {
|
|
460
|
-
summary: 'Interactive
|
|
461
|
-
usage: '/quiz [lang <th|en|zh>]',
|
|
656
|
+
summary: 'Interactive Ju Jingyi quiz to claim a Developer VIP Key (15 Qs) or MCP API Key (12 Qs)',
|
|
657
|
+
usage: '/quiz [mcp | lang <th|en|zh>]',
|
|
462
658
|
subcommands: [
|
|
463
|
-
{ cmd: '', desc: 'Start the quiz in your current language setting', example: '/quiz' },
|
|
659
|
+
{ cmd: '', desc: 'Start the VIP quiz in your current language setting', example: '/quiz' },
|
|
660
|
+
{ cmd: 'mcp', desc: 'Start the 12-question MCP challenge for an MCP Key', example: '/quiz mcp' },
|
|
464
661
|
{ cmd: 'lang th', desc: 'Start the quiz in Thai', example: '/quiz lang th' },
|
|
465
662
|
{ cmd: 'lang en', desc: 'Start the quiz in English', example: '/quiz lang en' },
|
|
466
663
|
{ cmd: 'lang zh', desc: 'Start the quiz in Chinese', example: '/quiz lang zh' },
|
|
467
664
|
],
|
|
468
665
|
examples: [
|
|
469
666
|
'/quiz',
|
|
667
|
+
'/quiz mcp',
|
|
470
668
|
'/quiz lang th',
|
|
471
669
|
'/quiz lang en',
|
|
472
670
|
],
|
|
473
671
|
},
|
|
672
|
+
'/mcp-key': {
|
|
673
|
+
summary: 'Manage your Ju Jingyi MCP API Key (earned via /quiz mcp)',
|
|
674
|
+
usage: '/mcp-key [show | apply <key> | clear | config]',
|
|
675
|
+
subcommands: [
|
|
676
|
+
{ cmd: '', desc: 'Show currently stored MCP API Key and tier', example: '/mcp-key' },
|
|
677
|
+
{ cmd: 'config', desc: 'Display Claude Desktop & Cursor JSON configuration snippet', example: '/mcp-key config' },
|
|
678
|
+
{ cmd: 'apply <key>', desc: 'Manually apply an existing MCP key', example: '/mcp-key apply kiku_mcp_sk_...' },
|
|
679
|
+
{ cmd: 'clear', desc: 'Clear stored MCP key from memory preferences', example: '/mcp-key clear' },
|
|
680
|
+
],
|
|
681
|
+
examples: [
|
|
682
|
+
'/mcp-key',
|
|
683
|
+
'/mcp-key config',
|
|
684
|
+
'/mcp-key clear',
|
|
685
|
+
],
|
|
686
|
+
},
|
|
474
687
|
'/subagent': {
|
|
475
688
|
summary: 'Spawn an isolated iterative research subagent to investigate a specific task or subtopic',
|
|
476
689
|
usage: '/subagent <task | status | last>',
|
|
@@ -648,7 +861,7 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
648
861
|
summary: 'Inspect or clear music playback audio queue',
|
|
649
862
|
usage: '/queue [clear]',
|
|
650
863
|
subcommands: [
|
|
651
|
-
{ cmd: '', desc: 'Show currently queued music tracks and
|
|
864
|
+
{ cmd: '', desc: 'Show currently queued music tracks, playing state, and playlist positions', example: '/queue' },
|
|
652
865
|
{ cmd: 'clear', desc: 'Wipe all pending tracks from the music queue', example: '/queue clear' },
|
|
653
866
|
],
|
|
654
867
|
examples: [
|
|
@@ -660,39 +873,59 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
660
873
|
summary: 'Show GPU & VRAM hardware resource metrics',
|
|
661
874
|
usage: '/gpu [status]',
|
|
662
875
|
subcommands: [
|
|
663
|
-
{ cmd: '
|
|
876
|
+
{ cmd: '', desc: 'Show real-time NVIDIA/Metal GPU compute utilization and VRAM memory usage', example: '/gpu' },
|
|
877
|
+
{ cmd: 'status', desc: 'Display GPU device name, temperature, compute load %, and VRAM allocated/total', example: '/gpu status' },
|
|
664
878
|
],
|
|
665
879
|
examples: [
|
|
666
880
|
'/gpu',
|
|
881
|
+
'/gpu status',
|
|
882
|
+
],
|
|
883
|
+
},
|
|
884
|
+
'/process': {
|
|
885
|
+
summary: 'Manage background child processes (vLLM, LM Studio, audio, eval) with PID tracking and clean tree termination',
|
|
886
|
+
usage: '/process [list | kill <name | pid>]',
|
|
887
|
+
subcommands: [
|
|
888
|
+
{ cmd: 'list', desc: 'List all running background child processes with PID, status, command, and uptime', example: '/process list' },
|
|
889
|
+
{ cmd: 'kill <name|pid>', desc: 'Terminate a background process tree cleanly (taskkill on Windows / SIGTERM on POSIX)', example: '/process kill vllm' },
|
|
890
|
+
],
|
|
891
|
+
examples: [
|
|
892
|
+
'/process list',
|
|
893
|
+
'/process kill vllm',
|
|
894
|
+
'/process kill 1234',
|
|
667
895
|
],
|
|
668
896
|
},
|
|
669
897
|
'/tools': {
|
|
670
898
|
summary: 'List registered SSOT knowledge and external tools',
|
|
671
899
|
usage: '/tools [filter]',
|
|
672
900
|
subcommands: [
|
|
673
|
-
{ cmd: '
|
|
901
|
+
{ cmd: '', desc: 'List all registered catalog, search, media, and MCP tools', example: '/tools' },
|
|
902
|
+
{ cmd: '[filter]', desc: 'Filter registered tools by keyword, domain, or category (e.g. drama, music, mcp)', example: '/tools drama' },
|
|
674
903
|
],
|
|
675
904
|
examples: [
|
|
676
905
|
'/tools',
|
|
677
906
|
'/tools search',
|
|
678
907
|
'/tools mcp',
|
|
908
|
+
'/tools drama',
|
|
679
909
|
],
|
|
680
910
|
},
|
|
681
911
|
'/cancel': {
|
|
682
912
|
summary: 'Abort the currently running query, tool, or subagent task',
|
|
683
|
-
usage: '/cancel',
|
|
913
|
+
usage: '/cancel [all]',
|
|
684
914
|
subcommands: [
|
|
685
|
-
{ cmd: '', desc: 'Instantly cancel running model generation, tool execution, or research subagents', example: '/cancel' },
|
|
915
|
+
{ cmd: '', desc: 'Instantly cancel running model generation, active tool execution, or research subagents', example: '/cancel' },
|
|
916
|
+
{ cmd: 'all', desc: 'Abort all active queries, background research workers, and pending tasks', example: '/cancel all' },
|
|
686
917
|
],
|
|
687
918
|
examples: [
|
|
688
919
|
'/cancel',
|
|
920
|
+
'/cancel all',
|
|
689
921
|
],
|
|
690
922
|
},
|
|
691
923
|
'/tool': {
|
|
692
924
|
summary: 'Execute a registered SSOT tool directly with arguments',
|
|
693
925
|
usage: '/tool <name> [json_args | raw_query]',
|
|
694
926
|
subcommands: [
|
|
695
|
-
{ cmd: '<name> [
|
|
927
|
+
{ cmd: '<name> [json_args]', desc: 'Call tool directly with structured JSON arguments without model synthesis', example: '/tool search_works {"year":2026}' },
|
|
928
|
+
{ cmd: '<name> [raw_query]', desc: 'Call tool directly using plain search keywords as input', example: '/tool search_works In Blossom' },
|
|
696
929
|
],
|
|
697
930
|
examples: [
|
|
698
931
|
'/tool get_profile_and_fandom',
|
|
@@ -737,11 +970,12 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
737
970
|
|
|
738
971
|
'/config': {
|
|
739
972
|
summary: 'Display current runtime configuration, active profile, provider, paths, and environment settings',
|
|
740
|
-
usage: '/config',
|
|
973
|
+
usage: '/config [env]',
|
|
741
974
|
subcommands: [
|
|
742
975
|
{ cmd: '', desc: 'Inspect active profile, LLM provider, base URL, model name, storage directories, and MCP status', example: '/config' },
|
|
976
|
+
{ cmd: 'env', desc: 'Inspect active environment variable mappings, paths, and configuration overrides', example: '/config env' },
|
|
743
977
|
],
|
|
744
|
-
examples: ['/config'],
|
|
978
|
+
examples: ['/config', '/config env'],
|
|
745
979
|
},
|
|
746
980
|
'/env': {
|
|
747
981
|
summary: 'Create and manage the local .env file for global npm installs — only necessary values are set, optional ones stay commented',
|
|
@@ -770,76 +1004,108 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
770
1004
|
},
|
|
771
1005
|
'/doctor': {
|
|
772
1006
|
summary: 'Run environment diagnostics, dependency verification, and feature health check',
|
|
773
|
-
usage: '/doctor',
|
|
1007
|
+
usage: '/doctor [check]',
|
|
774
1008
|
subcommands: [
|
|
775
1009
|
{ cmd: '', desc: 'Check Node version, LM Studio server, yt-dlp, ffmpeg, MCP server, and disk permissions', example: '/doctor' },
|
|
1010
|
+
{ cmd: 'check', desc: 'Perform exhaustive health probe across all local services and external tools', example: '/doctor check' },
|
|
776
1011
|
],
|
|
777
|
-
examples: ['/doctor'],
|
|
1012
|
+
examples: ['/doctor', '/doctor check'],
|
|
778
1013
|
},
|
|
779
1014
|
'/prompt': {
|
|
780
1015
|
summary: 'Preview the full system prompt and active persona instructions sent to the AI',
|
|
781
|
-
usage: '/prompt',
|
|
1016
|
+
usage: '/prompt [system]',
|
|
782
1017
|
subcommands: [
|
|
783
1018
|
{ cmd: '', desc: 'Inspect the system persona, memory context, and domain rules passed to the LLM', example: '/prompt' },
|
|
1019
|
+
{ cmd: 'system', desc: 'View raw system prompt lines with persona constraints and anti-refusal policies', example: '/prompt system' },
|
|
784
1020
|
],
|
|
785
|
-
examples: ['/prompt'],
|
|
1021
|
+
examples: ['/prompt', '/prompt system'],
|
|
786
1022
|
},
|
|
787
1023
|
|
|
788
1024
|
'/system': {
|
|
789
1025
|
summary: 'Display host operating system, CPU architecture, memory usage, and Node process stats',
|
|
790
|
-
usage: '/system',
|
|
1026
|
+
usage: '/system [metrics]',
|
|
791
1027
|
subcommands: [
|
|
792
1028
|
{ cmd: '', desc: 'Show platform OS, total RAM, heap memory allocation, process uptime, and architecture', example: '/system' },
|
|
1029
|
+
{ cmd: 'metrics', desc: 'Inspect detailed Node heap memory consumption and process uptime', example: '/system metrics' },
|
|
793
1030
|
],
|
|
794
|
-
examples: ['/system'],
|
|
1031
|
+
examples: ['/system', '/system metrics'],
|
|
795
1032
|
},
|
|
796
1033
|
'/about': {
|
|
797
1034
|
summary: 'Display background information, credits, architecture overview, and project links',
|
|
798
|
-
usage: '/about',
|
|
1035
|
+
usage: '/about [info]',
|
|
799
1036
|
subcommands: [
|
|
800
1037
|
{ cmd: '', desc: 'Show project mission, tech stack overview, creator credits, and documentation links', example: '/about' },
|
|
1038
|
+
{ cmd: 'info', desc: 'Display engine details, registered tools count, and active language modes', example: '/about info' },
|
|
1039
|
+
],
|
|
1040
|
+
examples: ['/about', '/about info'],
|
|
1041
|
+
},
|
|
1042
|
+
'/version': {
|
|
1043
|
+
summary: 'Display Kiku Agent package version, Node.js runtime, OS platform, and architecture',
|
|
1044
|
+
usage: '/version [info]',
|
|
1045
|
+
subcommands: [
|
|
1046
|
+
{ cmd: '', desc: 'Display Kiku Agent version, release tier, Node.js runtime version, and platform', example: '/version' },
|
|
1047
|
+
{ cmd: 'info', desc: 'Show detailed environment summary including engine, registered tools count, and language modes', example: '/version info' },
|
|
1048
|
+
],
|
|
1049
|
+
examples: [
|
|
1050
|
+
'/version',
|
|
1051
|
+
'/version info',
|
|
801
1052
|
],
|
|
802
|
-
examples: ['/about'],
|
|
803
1053
|
},
|
|
804
1054
|
'/ads': {
|
|
805
1055
|
summary: 'Display community sponsor card and featured ecosystem highlights',
|
|
806
|
-
usage: '/ads',
|
|
1056
|
+
usage: '/ads [next]',
|
|
807
1057
|
subcommands: [
|
|
808
|
-
{ cmd: '', desc: '
|
|
1058
|
+
{ cmd: '', desc: 'Display community sponsor spotlight card in the terminal', example: '/ads' },
|
|
1059
|
+
{ cmd: 'next', desc: 'Cycle and display the next sponsor spotlight card in the terminal', example: '/ads next' },
|
|
809
1060
|
],
|
|
810
|
-
examples: ['/ads'],
|
|
1061
|
+
examples: ['/ads', '/ads next'],
|
|
811
1062
|
},
|
|
812
1063
|
'/gallery': {
|
|
813
1064
|
summary: 'Render full-color terminal graphic portraits of Ju Jingyi from the asset gallery',
|
|
814
|
-
usage: '/gallery',
|
|
1065
|
+
usage: '/gallery [hd | single | list | <number> | pair]',
|
|
815
1066
|
subcommands: [
|
|
816
|
-
{ cmd: '', desc: 'Display a
|
|
1067
|
+
{ cmd: '', desc: 'Display a default dual portrait pair in the terminal', example: '/gallery' },
|
|
1068
|
+
{ cmd: 'hd / single', desc: 'Render a single high-resolution ANSI image card in the terminal', example: '/gallery hd' },
|
|
1069
|
+
{ cmd: 'list', desc: 'List all available gallery images with index numbers and capture dates', example: '/gallery list' },
|
|
1070
|
+
{ cmd: '<number>', desc: 'Display a specific portrait by its photo catalog number', example: '/gallery 1' },
|
|
1071
|
+
{ cmd: 'pair', desc: 'Render two portraits side by side in the terminal', example: '/gallery pair' },
|
|
817
1072
|
],
|
|
818
|
-
examples: ['/gallery'],
|
|
1073
|
+
examples: ['/gallery', '/gallery hd', '/gallery list', '/gallery 1'],
|
|
819
1074
|
},
|
|
820
1075
|
'/retry': {
|
|
821
1076
|
summary: 'Re-execute the previous query with identical prompt parameters',
|
|
822
|
-
usage: '/retry',
|
|
1077
|
+
usage: '/retry [force]',
|
|
823
1078
|
subcommands: [
|
|
824
1079
|
{ cmd: '', desc: 'Resend the previous question to the active model for a fresh response', example: '/retry' },
|
|
1080
|
+
{ cmd: 'force', desc: 'Force re-execution bypassing local prompt cache or intermediate state', example: '/retry force' },
|
|
1081
|
+
],
|
|
1082
|
+
examples: [
|
|
1083
|
+
'/retry',
|
|
1084
|
+
'/retry force',
|
|
825
1085
|
],
|
|
826
|
-
examples: ['/retry'],
|
|
827
1086
|
},
|
|
828
1087
|
'/clear': {
|
|
829
1088
|
summary: 'Archive active conversation session and reset terminal screen buffer',
|
|
830
|
-
usage: '/clear',
|
|
1089
|
+
usage: '/clear [session]',
|
|
831
1090
|
subcommands: [
|
|
832
|
-
{ cmd: '', desc: 'Archive current session to disk, reset message history, and
|
|
1091
|
+
{ cmd: '', desc: 'Archive current session to disk, reset message history, and reset terminal viewport to welcome hero', example: '/clear' },
|
|
1092
|
+
{ cmd: 'session', desc: 'Archive the active session and start a fresh session ID', example: '/clear session' },
|
|
1093
|
+
],
|
|
1094
|
+
examples: [
|
|
1095
|
+
'/clear',
|
|
1096
|
+
'/clear session',
|
|
833
1097
|
],
|
|
834
|
-
examples: ['/clear'],
|
|
835
1098
|
},
|
|
836
1099
|
'/save': {
|
|
837
|
-
summary: 'Export the full active conversation transcript to a formatted Markdown file',
|
|
838
|
-
usage: '/save',
|
|
1100
|
+
summary: 'Export the full active conversation transcript to a formatted Markdown, JSON, or Text file',
|
|
1101
|
+
usage: '/save [markdown | json | html | text]',
|
|
839
1102
|
subcommands: [
|
|
840
|
-
{ cmd: '', desc: 'Write complete conversation history, reasoning, and tools to
|
|
1103
|
+
{ cmd: '', desc: 'Write complete conversation history, reasoning, and tools to a Markdown file (.md)', example: '/save' },
|
|
1104
|
+
{ cmd: 'markdown', desc: 'Export transcript as standard Markdown with tool blocks and formatting', example: '/save markdown' },
|
|
1105
|
+
{ cmd: 'json', desc: 'Export session history and metadata as structured JSON', example: '/save json' },
|
|
1106
|
+
{ cmd: 'text', desc: 'Export clean plain text transcript without formatting marks', example: '/save text' },
|
|
841
1107
|
],
|
|
842
|
-
examples: ['/save'],
|
|
1108
|
+
examples: ['/save', '/save markdown', '/save json', '/save text'],
|
|
843
1109
|
},
|
|
844
1110
|
'/stop': {
|
|
845
1111
|
summary: 'Stop active background audio stream and clear playback process',
|
|
@@ -926,38 +1192,43 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
926
1192
|
usage: '/search <query>',
|
|
927
1193
|
subcommands: [
|
|
928
1194
|
{ cmd: '<query>', desc: 'Search YouTube for tracks and display title, duration, and direct links', example: '/search In Blossom OST' },
|
|
1195
|
+
{ cmd: '<song_name>', desc: 'Search specific Ju Jingyi song title or Chinese pinyin keywords', example: '/search 恋爱告急' },
|
|
929
1196
|
],
|
|
930
|
-
examples: ['/search 鞠婧祎', '/search In Blossom OST'],
|
|
1197
|
+
examples: ['/search 鞠婧祎', '/search In Blossom OST', '/search 恋爱告急'],
|
|
931
1198
|
},
|
|
932
1199
|
'/current': {
|
|
933
1200
|
summary: 'Show metadata, duration, and status for the currently playing audio track',
|
|
934
|
-
usage: '/current',
|
|
1201
|
+
usage: '/current [status]',
|
|
935
1202
|
subcommands: [
|
|
936
1203
|
{ cmd: '', desc: 'Display track title, elapsed playback duration, buffer state, and YouTube link', example: '/current' },
|
|
1204
|
+
{ cmd: 'status', desc: 'Inspect current streaming buffer status, process PID, and audio volume', example: '/current status' },
|
|
937
1205
|
],
|
|
938
|
-
examples: ['/current'],
|
|
1206
|
+
examples: ['/current', '/current status'],
|
|
939
1207
|
},
|
|
940
1208
|
'/login': {
|
|
941
1209
|
summary: 'Authenticate YouTube session in the browser to enable age-gated music playback',
|
|
942
|
-
usage: '/login',
|
|
1210
|
+
usage: '/login [browser]',
|
|
943
1211
|
subcommands: [
|
|
944
1212
|
{ cmd: '', desc: 'Open interactive browser session to save YouTube cookies for seamless streaming', example: '/login' },
|
|
1213
|
+
{ cmd: 'browser', desc: 'Launch browser authentication flow for YouTube session cookies', example: '/login browser' },
|
|
945
1214
|
],
|
|
946
|
-
examples: ['/login'],
|
|
1215
|
+
examples: ['/login', '/login browser'],
|
|
947
1216
|
},
|
|
948
1217
|
'/ytstatus': {
|
|
949
1218
|
summary: 'Show YouTube authentication, cookie source, and streaming player status',
|
|
950
|
-
usage: '/ytstatus',
|
|
1219
|
+
usage: '/ytstatus [check]',
|
|
951
1220
|
subcommands: [
|
|
952
1221
|
{ cmd: '', desc: 'Check cookie availability, browser profile connection, and playback backend health', example: '/ytstatus' },
|
|
1222
|
+
{ cmd: 'check', desc: 'Force re-check of YouTube credentials, yt-dlp binary, and ffmpeg availability', example: '/ytstatus check' },
|
|
953
1223
|
],
|
|
954
|
-
examples: ['/ytstatus'],
|
|
1224
|
+
examples: ['/ytstatus', '/ytstatus check'],
|
|
955
1225
|
},
|
|
956
1226
|
'/exit': {
|
|
957
1227
|
summary: 'Archive active conversation session and exit Kiku Agent CLI',
|
|
958
|
-
usage: '/exit',
|
|
1228
|
+
usage: '/exit [quit]',
|
|
959
1229
|
subcommands: [
|
|
960
1230
|
{ cmd: '', desc: 'Safely save active session state to disk and close terminal application', example: '/exit' },
|
|
1231
|
+
{ cmd: 'quit', desc: 'Immediate clean teardown and exit terminal', example: '/exit quit' },
|
|
961
1232
|
],
|
|
962
1233
|
examples: ['/exit'],
|
|
963
1234
|
},
|
|
@@ -1000,13 +1271,71 @@ export const COMMAND_DETAILS = Object.freeze({
|
|
|
1000
1271
|
},
|
|
1001
1272
|
});
|
|
1002
1273
|
|
|
1274
|
+
export const COMMAND_ALIASES = Object.freeze({
|
|
1275
|
+
'/quit': '/exit', '/q': '/exit',
|
|
1276
|
+
'/web-chat': '/web',
|
|
1277
|
+
'/abort': '/cancel',
|
|
1278
|
+
'/cp': '/copy', '/clip': '/copy', '/clipboard': '/copy',
|
|
1279
|
+
'/?': '/help', '/commands': '/help', '/menu': '/help',
|
|
1280
|
+
'/hist': '/history', '/h': '/history',
|
|
1281
|
+
'/sess': '/session', '/sessions': '/session',
|
|
1282
|
+
'/load-session': '/session', '/load': '/session', '/restore': '/session',
|
|
1283
|
+
'/think': '/thinking', '/th': '/thinking',
|
|
1284
|
+
'/detail': '/details', '/d': '/details',
|
|
1285
|
+
'/language': '/lang',
|
|
1286
|
+
'/themes': '/theme',
|
|
1287
|
+
'/suggest': '/suggestion', '/suggestions': '/suggestion',
|
|
1288
|
+
'/exec': '/tool', '/call': '/tool',
|
|
1289
|
+
'/toollist': '/tools',
|
|
1290
|
+
'/lookup': '/find', '/findall': '/find',
|
|
1291
|
+
'/cmp': '/compare',
|
|
1292
|
+
'/fav': '/favorites', '/favs': '/favorites',
|
|
1293
|
+
'/latest': '/news',
|
|
1294
|
+
'/job': '/jobs',
|
|
1295
|
+
'/random': '/discover',
|
|
1296
|
+
'/metrics': '/stats', '/catalog': '/stats',
|
|
1297
|
+
'/llm': '/model', '/engine': '/model',
|
|
1298
|
+
'/health': '/ping',
|
|
1299
|
+
'/settings': '/config', '/conf': '/config',
|
|
1300
|
+
'/persona': '/prompt', '/sysprompt': '/prompt',
|
|
1301
|
+
'/ver': '/version', '/v': '/version',
|
|
1302
|
+
'/sys': '/system', '/os': '/system',
|
|
1303
|
+
'/gpus': '/gpu',
|
|
1304
|
+
'/ps': '/process', '/processes': '/process',
|
|
1305
|
+
'/resource': '/vram',
|
|
1306
|
+
'/benchmark': '/eval', '/evaluation': '/eval',
|
|
1307
|
+
'/center': '/hub',
|
|
1308
|
+
'/app': '/portal', '/webportal': '/portal',
|
|
1309
|
+
'/info': '/about',
|
|
1310
|
+
'/sponsor': '/ads', '/ad': '/ads',
|
|
1311
|
+
'/image': '/gallery', '/photo': '/gallery',
|
|
1312
|
+
'/cls': '/clear', '/reset': '/clear',
|
|
1313
|
+
'/export': '/save', '/markdown': '/save',
|
|
1314
|
+
'/src': '/sources', '/srcs': '/sources',
|
|
1315
|
+
'/r': '/retry',
|
|
1316
|
+
'/kvip': '/key',
|
|
1317
|
+
'/switch': '/provider',
|
|
1318
|
+
'/providers': '/provider',
|
|
1319
|
+
'/profiles': '/profile',
|
|
1320
|
+
'/preset': '/profile',
|
|
1321
|
+
'/presets': '/profile',
|
|
1322
|
+
'/ingestion': '/ingest',
|
|
1323
|
+
});
|
|
1324
|
+
|
|
1325
|
+
export function resolveCommandAlias(name) {
|
|
1326
|
+
if (!name) return '';
|
|
1327
|
+
const normalized = name.startsWith('/') ? name.toLowerCase() : `/${String(name).toLowerCase()}`;
|
|
1328
|
+
return COMMAND_ALIASES[normalized] || normalized;
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1003
1331
|
export function findCommandDefinition(name) {
|
|
1004
|
-
|
|
1005
|
-
|
|
1332
|
+
if (!name) return null;
|
|
1333
|
+
const canonical = resolveCommandAlias(name);
|
|
1334
|
+
return COMMAND_DEFINITIONS.find(command => command.name === canonical) || null;
|
|
1006
1335
|
}
|
|
1007
1336
|
|
|
1008
1337
|
export function getCommandDetails(name) {
|
|
1009
1338
|
if (!name) return null;
|
|
1010
|
-
const
|
|
1011
|
-
return COMMAND_DETAILS[
|
|
1339
|
+
const canonical = resolveCommandAlias(name);
|
|
1340
|
+
return COMMAND_DETAILS[canonical] || null;
|
|
1012
1341
|
}
|