fix(ai): harden shared SSE streaming

This commit is contained in:
digua committed 2026-06-02 15:41:21 +08:00
1 parent 1af644e4ab
commit 9a0e6093f3
7 files changed
+76 -53

No files matched your search

+18 -6
View File
@@ -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,
+5 -1
View File
@@ -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 }
}