feat: 新增技能编排引擎和工作流构建器组件
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled

refactor: 统一Hands系统常量到单个源文件
refactor: 更新Hands中文名称和描述

fix: 修复技能市场在连接状态变化时重新加载
fix: 修复身份变更提案的错误处理逻辑

docs: 更新多个功能文档的验证状态和实现位置
docs: 更新Hands系统文档

test: 添加测试文件验证工作区路径
This commit is contained in:
iven
2026-03-25 08:27:25 +08:00
parent 9c781f5f2a
commit aa6a9cbd84
110 changed files with 12384 additions and 1337 deletions

View File

@@ -1,7 +1,7 @@
//! Google Gemini driver implementation
use async_trait::async_trait;
use futures::{Stream, StreamExt};
use futures::Stream;
use secrecy::{ExposeSecret, SecretString};
use reqwest::Client;
use std::pin::Pin;

View File

@@ -1,7 +1,7 @@
//! Local LLM driver (Ollama, LM Studio, vLLM, etc.)
use async_trait::async_trait;
use futures::{Stream, StreamExt};
use futures::Stream;
use reqwest::Client;
use std::pin::Pin;
use zclaw_types::{Result, ZclawError};

View File

@@ -499,7 +499,15 @@ impl OpenAiDriver {
eprintln!("[OpenAiDriver:stream_from_complete] Got response with {} choices", api_response.choices.len());
if let Some(choice) = api_response.choices.first() {
eprintln!("[OpenAiDriver:stream_from_complete] First choice: content={:?}, tool_calls={:?}, finish_reason={:?}",
choice.message.content.as_ref().map(|c| if c.len() > 100 { &c[..100] } else { c.as_str() }),
choice.message.content.as_ref().map(|c| {
if c.len() > 100 {
// 使用 floor_char_boundary 确保不在多字节字符中间截断
let end = c.floor_char_boundary(100);
&c[..end]
} else {
c.as_str()
}
}),
choice.message.tool_calls.as_ref().map(|tc| tc.len()),
choice.finish_reason);
}