fix(saas): industry template audit fixes + pgvector optional + relay timeout
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
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
- Fix seed template tools to match actual runtime tool names (file_read/file_write/shell_exec/web_fetch) - Persist system_prompt/temperature/max_tokens via identity system in agentStore.createFromTemplate() - Fire-and-forget assignTemplate() in AgentOnboardingWizard - Fix saas-relay-client unused variable warning - Make pgvector extension optional in knowledge_base migration - Increase StreamBridge timeout from 30s to 90s for thinking models
This commit is contained in:
@@ -577,7 +577,7 @@ async fn seed_demo_data(pool: &PgPool) -> SaasResult<()> {
|
||||
("demo-agent-coder", "Code Assistant", "A helpful coding assistant that can write, review, and debug code",
|
||||
"coding", "gpt-4o",
|
||||
"You are an expert coding assistant. Help users write clean, efficient code.",
|
||||
"[\"code_search\",\"code_edit\",\"terminal\"]", "[\"code_generation\",\"code_review\",\"debugging\"]",
|
||||
"[\"file_read\",\"file_write\",\"shell_exec\"]", "[\"code_generation\",\"code_review\",\"debugging\"]",
|
||||
0.3, 8192,
|
||||
"你是一位资深全栈工程师,擅长代码编写、评审和调试。你追求简洁高效的代码风格,注重可读性和可维护性。",
|
||||
"[\"代码编写\",\"代码审查\",\"Bug调试\",\"架构设计\"]",
|
||||
@@ -587,7 +587,7 @@ async fn seed_demo_data(pool: &PgPool) -> SaasResult<()> {
|
||||
("demo-agent-writer", "Content Writer", "Creative writing and content generation agent",
|
||||
"creative", "claude-sonnet-4-20250514",
|
||||
"You are a skilled content writer. Create engaging, well-structured content.",
|
||||
"[\"web_search\",\"document_edit\"]", "[\"writing\",\"editing\",\"summarization\"]",
|
||||
"[\"web_fetch\",\"file_write\"]", "[\"writing\",\"editing\",\"summarization\"]",
|
||||
0.7, 4096,
|
||||
"你是一位创意写作专家,擅长各类文案创作、内容编辑和摘要生成。你善于把握文字的节奏和情感表达。",
|
||||
"[\"文章写作\",\"文案创作\",\"内容编辑\",\"摘要生成\"]",
|
||||
@@ -597,7 +597,7 @@ async fn seed_demo_data(pool: &PgPool) -> SaasResult<()> {
|
||||
("demo-agent-analyst", "Data Analyst", "Data analysis and visualization specialist",
|
||||
"analytics", "gpt-4o",
|
||||
"You are a data analysis expert. Help users analyze data and create visualizations.",
|
||||
"[\"code_execution\",\"data_access\"]", "[\"data_analysis\",\"visualization\",\"statistics\"]",
|
||||
"[\"shell_exec\",\"file_read\"]", "[\"data_analysis\",\"visualization\",\"statistics\"]",
|
||||
0.2, 8192,
|
||||
"你是一位数据分析专家,擅长统计分析、数据可视化和洞察提取。你善于从数据中发现有价值的模式和趋势。",
|
||||
"[\"数据分析\",\"可视化报表\",\"统计建模\",\"趋势预测\"]",
|
||||
@@ -607,7 +607,7 @@ async fn seed_demo_data(pool: &PgPool) -> SaasResult<()> {
|
||||
("demo-agent-researcher", "Research Agent", "Deep research and information synthesis agent",
|
||||
"research", "gemini-2.5-pro",
|
||||
"You are a research specialist. Conduct thorough research and synthesize findings.",
|
||||
"[\"web_search\",\"document_access\"]", "[\"research\",\"synthesis\",\"citation\"]",
|
||||
"[\"web_fetch\",\"file_read\"]", "[\"research\",\"synthesis\",\"citation\"]",
|
||||
0.4, 16384,
|
||||
"你是一位深度研究专家,擅长信息检索、文献综述和知识综合。你注重信息来源的可靠性和引用的准确性。",
|
||||
"[\"深度研究\",\"文献综述\",\"信息检索\",\"知识综合\"]",
|
||||
@@ -627,7 +627,7 @@ async fn seed_demo_data(pool: &PgPool) -> SaasResult<()> {
|
||||
("demo-agent-medical", "医疗助手", "Clinical decision support and medical literature assistant",
|
||||
"healthcare", "gpt-4o",
|
||||
"You are a medical AI assistant. Help with clinical decision support, literature retrieval, and medication reference. Always remind users that your suggestions do not replace professional medical advice.",
|
||||
"[\"web_search\",\"document_access\"]", "[\"clinical_support\",\"literature_search\",\"diagnosis_assist\",\"medication_ref\"]",
|
||||
"[\"web_fetch\",\"file_read\"]", "[\"clinical_support\",\"literature_search\",\"diagnosis_assist\",\"medication_ref\"]",
|
||||
0.2, 16384,
|
||||
"你是一位医疗AI助手,具备丰富的临床知识。你辅助临床决策、文献检索和用药参考。\n\n重要提示:\n- 你的建议仅供医疗专业人员参考\n- 不能替代正式的医疗诊断\n- 涉及患者安全的问题需格外谨慎\n- 始终建议用户咨询专业医生",
|
||||
"[\"临床辅助\",\"文献检索\",\"诊断建议\",\"用药参考\"]",
|
||||
|
||||
@@ -13,8 +13,8 @@ use super::types::*;
|
||||
/// 上游无数据时,发送 SSE 心跳注释行的间隔
|
||||
const STREAMBRIDGE_HEARTBEAT_INTERVAL: Duration = Duration::from_secs(15);
|
||||
|
||||
/// 上游无数据时,丢弃连接的超时阈值
|
||||
const STREAMBRIDGE_TIMEOUT: Duration = Duration::from_secs(30);
|
||||
/// 上游无数据时,丢弃连接的超时阈值(90s = 6 个心跳,给 thinking 模型更多时间)
|
||||
const STREAMBRIDGE_TIMEOUT: Duration = Duration::from_secs(90);
|
||||
|
||||
/// 流结束后延迟清理的时间窗口
|
||||
const STREAMBRIDGE_CLEANUP_DELAY: Duration = Duration::from_secs(60);
|
||||
@@ -526,9 +526,9 @@ fn build_stream_bridge(
|
||||
idle_heartbeats as u64 * STREAMBRIDGE_HEARTBEAT_INTERVAL.as_secs(),
|
||||
);
|
||||
|
||||
// After 2 consecutive heartbeats without real data (30s),
|
||||
// After 6 consecutive heartbeats without real data (90s),
|
||||
// terminate the stream to prevent connection leaks.
|
||||
if idle_heartbeats >= 2 {
|
||||
if idle_heartbeats >= 6 {
|
||||
tracing::warn!(
|
||||
"[StreamBridge] Timeout ({:?}) no real data, closing stream for task {}",
|
||||
STREAMBRIDGE_TIMEOUT,
|
||||
|
||||
Reference in New Issue
Block a user