diff --git a/wwwroot/api/cockpit_chat.dspy b/wwwroot/api/cockpit_chat.dspy index c03a11a..5f0218f 100644 --- a/wwwroot/api/cockpit_chat.dspy +++ b/wwwroot/api/cockpit_chat.dspy @@ -211,7 +211,7 @@ if action == 'send_message': ctx = await _load_ctx(sor, uid) model = await _sel_model(sor, user_model_id) if not model: - d = json.dumps({"error": "没有可用的LLM模型配置"}, ensure_ascii=False)+'\\n' + d = json.dumps({"error": "没有可用的LLM模型配置"}, ensure_ascii=False)+'\n' debug(f"YIELD error: {d[:80]}") yield d return @@ -234,12 +234,12 @@ if action == 'send_message': if act.get('action') == 'tool_call': tool = act.get('tool','') label = _tool_labels.get(tool,tool) - d = json.dumps({"content": f"🔄 {label}..."}, ensure_ascii=False)+'\\n' + d = json.dumps({"content": f"🔄 {label}..."}, ensure_ascii=False)+'\n' debug(f"YIELD progress: {d[:60]}") yield d result = await _exec_tool(sor, tool, act.get('params',{}), ctx, uid, org_id) ok = result.startswith("OK:") - d = json.dumps({"content": f"{'✅' if ok else '❌'} {label}: {result}"}, ensure_ascii=False)+'\\n' + d = json.dumps({"content": f"{'✅' if ok else '❌'} {label}: {result}"}, ensure_ascii=False)+'\n' debug(f"YIELD result: {d[:60]}") yield d msgs.append({"role":"assistant","content":raw}) @@ -248,7 +248,7 @@ if action == 'send_message': agent_reply = raw; break if not agent_reply: agent_reply = "处理超时" - d = json.dumps({"content": agent_reply}, ensure_ascii=False)+'\\n' + d = json.dumps({"content": agent_reply}, ensure_ascii=False)+'\n' debug(f"YIELD final: {d[:60]}") yield d await sor.C('pipeline_conversations',{'id':getID(),'role':'agent','content':agent_reply,'msg_type':'text','org_id':org_id,'created_by':'system'}) diff --git a/wwwroot/index_cockpit.ui b/wwwroot/index_cockpit.ui index bc20117..8f4f595 100644 --- a/wwwroot/index_cockpit.ui +++ b/wwwroot/index_cockpit.ui @@ -192,7 +192,7 @@ "event": "inputed", "actiontype": "script", "target": "self", - "script": "console.log('BIND inputed fired, params:',params);var p=params.prompt;var mid=params.model_id||'';if(typeof mid==='object'&&mid!==null)mid=mid.model_id||'';var ctx=bricks.getWidgetById('context_data',bricks.app);var cd=ctx?ctx.getValue():{};var iid=cd.iteration_id||'';var pid=cd.project_id||'';var fnames=params.file_names||[];var chat=bricks.getWidgetById('chat_scroll',bricks.app);var at=null;var _makeWidget=function(desc){if(!desc||!desc.widgettype)return null;var Klass=bricks.Factory.get(desc.widgettype);if(!Klass)return null;var opts=JSON.parse(JSON.stringify(desc.options||{}));if(desc.subwidgets&&desc.subwidgets.length>0){opts.subwidgets=desc.subwidgets.map(function(s){return _makeWidget(s)}).filter(function(s){return s!==null})}return new Klass(opts)};if(chat){var ub=new bricks.HBox({width:'100%'});var um=new bricks.VBox({width:'85%',alignSelf:'flex-end',bgcolor:'#dbeafe',borderRadius:'12px',padding:'12px 16px',marginBottom:'10px',gap:'4px'});um.add_widget(new bricks.Text({text:'你',cfontsize:0.75,color:'#2563eb',fontWeight:'bold'}));um.add_widget(new bricks.Text({text:p,cfontsize:0.95,color:'#1e293b',whiteSpace:'pre-wrap'}));for(var i=0;i