mirror of
https://github.com/hellodigua/ChatLab.git
synced 2026-10-25 17:54:34 +08:00
fix(ai): harden shared SSE streaming
This commit is contained in:
1 parent
1af644e4ab
commit
9a0e6093f3
7 files changed
+76
-53
No files matched your search
@@ -35,6 +35,8 @@ export function createCliRunAgentStream(
|
||||
chatType,
|
||||
locale,
|
||||
assistantId,
|
||||
skillId,
|
||||
enableAutoSkill,
|
||||
compressionConfig,
|
||||
ownerInfo,
|
||||
mentionedMembers,
|
||||
@@ -61,17 +63,26 @@ export function createCliRunAgentStream(
|
||||
? adaptToolsForAgent(AGENT_TOOL_REGISTRY, () => ({ db, sessionId, locale }), { maxToolResultTokens })
|
||||
: []
|
||||
|
||||
const skillManager = new SkillManager(aiDataDir)
|
||||
skillManager.init()
|
||||
const skillMgr = new SkillManager(aiDataDir)
|
||||
skillMgr.init()
|
||||
const toolNames = agentTools.map((t: { name: string }) => t.name)
|
||||
const skillMenu = skillManager.getSkillMenu(chatType ?? 'group', toolNames)
|
||||
|
||||
if (skillMenu) {
|
||||
let resolvedSkillDef: { name: string; prompt: string } | undefined
|
||||
let resolvedSkillMenu: string | undefined
|
||||
if (skillId) {
|
||||
const def = skillMgr.getSkillConfig(skillId)
|
||||
if (def) resolvedSkillDef = { name: def.name, prompt: def.prompt }
|
||||
} else if (enableAutoSkill) {
|
||||
const menu = skillMgr.getSkillMenu(chatType ?? 'group', toolNames)
|
||||
if (menu) resolvedSkillMenu = menu
|
||||
}
|
||||
|
||||
if (resolvedSkillMenu) {
|
||||
const activateSkillTool = createActivateSkillTool({
|
||||
chatType: chatType ?? 'group',
|
||||
allowedTools: toolNames,
|
||||
locale,
|
||||
getSkillConfig: (id) => skillManager.getSkillConfig(id),
|
||||
getSkillConfig: (id) => skillMgr.getSkillConfig(id),
|
||||
})
|
||||
agentTools.push(activateSkillTool as any)
|
||||
}
|
||||
@@ -113,7 +124,8 @@ export function createCliRunAgentStream(
|
||||
chatType,
|
||||
locale,
|
||||
assistantSystemPrompt,
|
||||
skillMenu,
|
||||
skillMenu: resolvedSkillMenu,
|
||||
skillDef: resolvedSkillDef,
|
||||
compressionConfig: resolvedCompression,
|
||||
tools: agentTools,
|
||||
aiDataDir,
|
||||
|
||||
@@ -37,6 +37,7 @@ export interface RunAgentOptions {
|
||||
locale?: string
|
||||
assistantSystemPrompt?: string
|
||||
skillMenu?: string | null
|
||||
skillDef?: { name: string; prompt: string }
|
||||
compressionConfig?: CompressionConfig
|
||||
tools?: AgentTool[]
|
||||
aiDataDir: string
|
||||
@@ -58,6 +59,7 @@ export async function runServerAgent(options: RunAgentOptions): Promise<void> {
|
||||
locale = 'zh-CN',
|
||||
assistantSystemPrompt,
|
||||
skillMenu,
|
||||
skillDef,
|
||||
compressionConfig,
|
||||
tools = [],
|
||||
aiDataDir,
|
||||
@@ -83,7 +85,9 @@ export async function runServerAgent(options: RunAgentOptions): Promise<void> {
|
||||
const t = createAiTranslate(locale)
|
||||
|
||||
let skillCtx: { skillDef?: { name: string; prompt: string }; skillMenu?: string } | undefined
|
||||
if (skillMenu) {
|
||||
if (skillDef) {
|
||||
skillCtx = { skillDef }
|
||||
} else if (skillMenu) {
|
||||
skillCtx = { skillMenu }
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user