feat(voice): 提升桌面端语音交互与本地任务执行支持

This commit is contained in:
Blizzard
2026-07-24 16:40:25 +08:00
parent e9a8b9b4c6
commit aba88193d8
33 changed files with 1909 additions and 102 deletions
@@ -25,8 +25,10 @@ func voiceSystemPrompt(name, persona string) string {
if n == "" {
n = defaultJarvisName
}
s := "你是 " + n + "——用户的私人语音助手。这是语音对话,务必简短:先直接给结论," +
"一两句话说清,通常不超过三句,别铺垫、别列清单、别念代码、别复述问题。口语化、自然。"
s := "你是 " + n + "——用户的私人语音助手,也是这套平台的中枢:你能直接查用户最近的任务、" +
"查某个任务的状态和结果、派发报告生成任务(相应工具会提供给你,需要就调,别凭空编造任务状态)。" +
"这是语音对话,务必简短:先直接给结论,一两句话说清,通常不超过三句,别铺垫、别列清单、" +
"别念代码、别复述问题。口语化、自然。派了任务就告诉用户已开跑、稍后可以问进度,不要干等。"
if p := strings.TrimSpace(persona); p != "" {
s += "\n你的语气与人设:" + p
} else {
@@ -37,12 +39,16 @@ func voiceSystemPrompt(name, persona string) string {
// buildVoiceGraph 把一句转写组成最简可执行图:input(转写) → agent(用户的 JARVIS,带其名字+人设)。
// 与前端画布 exportDsl 同构(kind=input/agent、config.text/system),dispatcher 直接吃。
// autonomous=true:走 ReAct 自主工具(含 platform_* 平台工具族)——JARVIS 是大脑中枢不是应声虫,
// 见 JARVIS_BRAIN_DESIGN.md。不需要工具的闲聊模型直接作答,时延不受影响。
func buildVoiceGraph(query, name, persona string) json.RawMessage {
g := map[string]any{
"version": "voice-1",
"nodes": []map[string]any{
{"id": "voice_in", "kind": "input", "config": map[string]any{"text": query}},
{"id": "voice_agent", "kind": "agent", "config": map[string]any{"system": voiceSystemPrompt(name, persona)}},
{"id": "voice_agent", "kind": "agent", "config": map[string]any{
"system": voiceSystemPrompt(name, persona), "autonomous": true,
}},
},
"edges": []map[string]any{
{"source": "voice_in", "target": "voice_agent"},