From ddea65cc8b4f3528f5b42a00c5b1e604d9d8e087 Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Thu, 10 Apr 2025 20:28:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- renderer/public/iconfont.css | 10 +- renderer/public/iconfont.woff2 | Bin 4180 -> 4264 bytes renderer/public/mcp.css | 17 ++ .../src/components/main-panel/chat/chat.ts | 9 +- .../src/components/main-panel/chat/index.vue | 245 ++++++++++++++++-- .../components/main-panel/chat/setting.vue | 28 +- .../components/main-panel/chat/task-loop.ts | 33 ++- service/tabs.json | 81 +++++- 8 files changed, 375 insertions(+), 48 deletions(-) diff --git a/renderer/public/iconfont.css b/renderer/public/iconfont.css index fd355cf..2f0615f 100644 --- a/renderer/public/iconfont.css +++ b/renderer/public/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 4870215 */ - src: url('iconfont.woff2?t=1744201767604') format('woff2'), - url('iconfont.woff?t=1744201767604') format('woff'), - url('iconfont.ttf?t=1744201767604') format('truetype'); + src: url('iconfont.woff2?t=1744276722320') format('woff2'), + url('iconfont.woff?t=1744276722320') format('woff'), + url('iconfont.ttf?t=1744276722320') format('truetype'); } .iconfont { @@ -13,6 +13,10 @@ -moz-osx-font-smoothing: grayscale; } +.icon-double-loading:before { + content: "\e8fc"; +} + .icon-stop:before { content: "\e708"; } diff --git a/renderer/public/iconfont.woff2 b/renderer/public/iconfont.woff2 index dbe8675dc193024ae366c01e8c12329feefcbb4b..fad5f13c5c38e30e622a0b5e163b8863ceb8a480 100644 GIT binary patch literal 4264 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 KE+UMW2zx!=!|p8r literal 4180 zcmV-a5UcNZPew8T0RR9101#9F3jhEB03ECV01yNK0RR9100000000000000000000 z0000SR0d!GhYSj+7@$xAHUcCAa0@yB1Rw>3X9t1>8|4@?qxO=t(n$7yNnQ=H3w)Ue;&(P`9&oT8wtlW*zz^vht>5mLn(RSTl?Rg z+1Y(!Ukq_g(9EOT>Eh{AAv8i%2~n)ESSE59p0@c94mk^YO1X`rj0KU00eCu$2(SZ} zu#CWE;q>pXq8WUz`ed+3I=U;CC$nh}o_%J2lHcUFSaEm)iU3ISb9IC+n7R0%_FePu z253x$8LIzgKWX-b6t-N_muA%H<^%r`H+DW-7c4PZ00EP_bbWo25>DMvMV0qOa!`ik z^iDzVlEbz`{xA8z%p2fF8_sso4ggJn!`|z*^!5x(bz3!j^a~wpbmIB^aLdoEMji{% zag23c_eDV6d~3yZ9~*WcpR^ZG<4CSg2AosF$#P^L&y6Z6RtDAFLbuK&+>s>Sj&Cu{ z|9tpkVW=a@GuL))IlTU$W2N7>NB=uO_QmDsF2au^a%7mDvHZAPT^JV1EIOM@b=h3N z6bj5YUeZlO(jiLhn>u_=t!VZ*=qC^p0lmXG9jED+l z12KZKiKtSx5E*3`)K7^hDCZ(_%C(4I%5|b7woQsGStay2=Yr8K!q%7m`Pu&$`)1s%oy0cDgV zr^bFQm85YKvRNf3O=uYT=q?7+(5d;8G-$xP;LkL+EVQh3(Z6TWm-aCv#KZ`-!AbA%pdJPi7KpRl@Ps4prB=J)gXvP_3e7`5&L6^O~5_0 zMUPB;(Kk>p8;b|%q0qqo5p*Tm=^w%Yc^w+ECiK(sM+1VQ(jGD1t21`RmJ&U76~^IF38ygWzs>3*m-vtHrLt^Fkzm<-l7NkN2LwQ;tc`zyd z@U$pu7*GdeXQXaSZp#QJ%-lkGK1s`82}iK-bWPzg_e?;+%vRB#f@U3W)}7{kL(kn3 zcP_B=xB1PpM|~8d0U>2s1B~-S00RUNy#79Hp+cJ-2kO7I?uY&=-KNTFM>D-U*KXZA z*K>B7Zr|j$XSk}%9NqoJ(Axi4KnWrsft0U@1`3EyO!5snhD}WH8I$}YCJ%-o;{LjafUdu^ zTQ?_ON`lTl!nt8%u4xW_mN5>Fjf>hbNU3XY;kKFQ$%cezx?5=FKQfc`)|^ zY%D8f&C|M?dM)nzAjQJ4%~(Zp)-nVzpaYHiYV*9)@kJIn?*_os}tSVM^t4Q|DOC>s6i6yFCRKuF7(0 z(lDP=n9<~_1z8?`IZ3v=mBx<#X?Hitywo7K(?+GEJXsl;T)x!U(IVSD%A&8tmfX;^ z>KiO3k4#sbYg4u2)H_p4$4zbO9GdxL>(pYk`FOz2Cd-kJ*`?ub)J@&CT^GXqDZ}mT zs%pO!Z&_(x0*RJ!MpS!ke&yFxNBRBJy_Is0nLRkWIE9DPyuB@@WGXtX-(3_uPH2Br z85#8S%SZH+%P&8ov~FAcE=Z;~GFZqGtI0eOj)l|VI3s8rT-Xv@xHz+LY}|VZ;-*WS zxk;QedE>$j%n~kKwAp{?=obTkLk3E_IO+0*6+Y*EMnaAoX&MuJndzxn^B4JDa@zp_ z>FJx&6}am92VoKk7IZF1Z(@?5FM?ZtS{*+j>I%Xf`h;G{m8b;%jk9coeU2($c+znJ zW1)BgHQ-h0)C95l;#eup8%UQ)f0en$4!;hm-MsoaS0Qs(lgYT}FK6VFM$N>bif&|BcW(h1EuW$h3VZ!X8%K zdg>O?;X7?l&+N9OqN$eMXP(*&Hkj5<6AEG!LT-a046@ZcoG!)!`Z@XnhRYERVj?nO z1&6>{F#*}|?I*Px>Y$nYc5g)wpfSz#SP8yfu1)NTI|Ly_{YH$Q_7okmFh*{Vc ze}&VjWEHcmY$1TChbSJ^7;_A>#03ZdBsR8~5-B9k;(}YFTACN7m@-`XQ`pPt>Id}Y z>?Qf>u2kdFwA-T!CUZ!h@X$f}G4!N!ZP>lBb?UmFVU339ldoyCs$0XE_!qOX@|SS- zGMXL=_i~ox|Ejk@=UP}NR>C=_;#fU&edz2geIM}G8~-k{L$A^fyA{dm=4OXvP@>#! zEQ2K_Au!_RFZia&?rzc3_vo&j?zw!3o1-a*wa%Hox%4g?Bd^2CIF#+?*BycguGDZ`ZHWiz+ z*c?W9xS@Amjgo%#VTm8OsjMg@Y;n9ur1euo}2cWsF( z>tJ_msF^wY({;VSUmT(HUQVVj;*a>!Of2I9A8WSz&{A0`KrxehUXcACu80-GO{m(s zWotDjk!8je9us8WdKjIE3^X({yFIT+0tkRYW?Ha{*v0Dy&H-~eh3dV=7xvH=3EU_h`amvv>i29pZ{ zd^Wi}30GKC+r4uOf~9Qi*5N6zdqCr*Bg@k(fYx*+EWCT2o;G&egn4s|im*qgC&Skn zpRFq^$|qD-;!mvW7RiAs(lE7yIhov2!fZr-v$foVFi1+3P;vmayLYedcDVN=k`_|p zOYurbOL_$4E4PKjt@WXm({>P7?|mV$DO!-OhZn-&n0yl!09msV*RI6~pEHF(cx~zw z49*Y&0eJEUywL{qasoOEwdk}K)P`!UMT-KI98#}+`)uqv(d7chZDIIngNLu9h+zp8$=?b#FU6bOL11~1nz|D>IIw$7)o3wnrM<3 zMIwXPlxQa7>b`6ilU$P~cP3qb0PJq}hX4R&;;#X)bu%FbU)R}HP_%i~W++5f*v7q3ec*(bv&wyN%lj-qXtrIjmMB3d>8%+yx&QM zr~tS>I|dm+?Vt{Lce%gdD6wFjj1SxGM%rz{8g{n2MZkF}+ zH}pCS5>gFQU0uMS%Y7KNJ%E`m??6g>4|4;4z(SXQux?jqHLYRlGM2mwScPER(-hAX znXCL`zad@Gid)$~NGm8Yhwc8g@)HOojDU7aN7ZPe@L)bx?E^$MRrm~Ew^_BGcDpDG z*m@qiR{^VR>tML&zQr@e+pGBZeM7pU6;1HZr5OVGc;jGeuK_+K(zWCuDc6~>V?E4jfs*F&9o$-Bs7-dpRbc9o+YNST=`yw<%mN@N z%t`2w`K3U06vj1h;WOB>I~(kA8bLbE%RN1@Tz*EE2;rddU`ve48zzUsVz eYN0e~Kw+AS7EUVK=fr2LlUNWY%8XqH0000_`TjHj diff --git a/renderer/public/mcp.css b/renderer/public/mcp.css index 5613211..489e074 100644 --- a/renderer/public/mcp.css +++ b/renderer/public/mcp.css @@ -155,6 +155,23 @@ a { padding: 5px 10px; } +.inner .openmcp-code-block { + border: none; + margin: 0; + padding: 0; +} + +.inner .code-header { + display: none; + color: var(--foreground); + background-color: transparent !important; + padding: 0; +} + +.inner pre { + margin: 0 !important; +} + .lang-id { font-weight: bold; } diff --git a/renderer/src/components/main-panel/chat/chat.ts b/renderer/src/components/main-panel/chat/chat.ts index 9c757fc..b4a7732 100644 --- a/renderer/src/components/main-panel/chat/chat.ts +++ b/renderer/src/components/main-panel/chat/chat.ts @@ -6,6 +6,7 @@ export interface ChatMessage { content: string; tool_call_id?: string name?: string // 工具名称,当 role 为 tool + tool_calls?: ToolCall[] } // 新增状态和工具数据 @@ -31,8 +32,12 @@ export interface ChatStorage { export interface ToolCall { id?: string; - name: string; - arguments: string; + index?: number; + type: string; + function: { + name: string; + arguments: string; + } } export const allTools = ref([]); diff --git a/renderer/src/components/main-panel/chat/index.vue b/renderer/src/components/main-panel/chat/index.vue index 3ac41bc..bd716db 100644 --- a/renderer/src/components/main-panel/chat/index.vue +++ b/renderer/src/components/main-panel/chat/index.vue @@ -2,13 +2,13 @@
-
-
+
+
- +
@@ -16,26 +16,72 @@
- -
+ +
Agent
-
- +
- -
-
Tool
-
-
- 正在调用工具: {{ streamingToolCalls[0].name }} + +
+
+ Agent + + 正在使用工具 + + + +
+
+
+ +
+
+
+ {{ call.function.name }} + {{ call.type }} +
+
+
+
+
+
+
+
+ + +
+
+ {{ "响应" }} + + + +
+
+
+
+
+
+
+ +
+
{{ item.text }}
+
{{ JSON.stringify(item) }}
+
+
+
- {{ message.content }}
-
@@ -72,15 +118,13 @@ \ No newline at end of file diff --git a/renderer/src/components/main-panel/chat/setting.vue b/renderer/src/components/main-panel/chat/setting.vue index d6c9eb7..16063ad 100644 --- a/renderer/src/components/main-panel/chat/setting.vue +++ b/renderer/src/components/main-panel/chat/setting.vue @@ -1,7 +1,7 @@