ソースを参照

fix(bot): 创建会话不再向 Hermes 发送 disabled_toolsets

Hermes 现版本拒绝该字段,新建 Bot 发消息会直接失败。
Samien 1 ヶ月 前
親
コミット
a340ba4

+ 3 - 3
src/server/workspaceRuntime.ts

@@ -19,7 +19,7 @@ import type {
   WorkspaceAgentUsageSummary,
 } from '../shared/workspace.js'
 import { personaSection } from '../shared/workspace.js'
-import { deniedHostToolsets, readHostTools } from './hostToolSettings.js'
+import { readHostTools } from './hostToolSettings.js'
 function globalComputers(home: string) {
   try { return readHostTools(home) }
   catch { return { denyServerTools: true, scriptMachine: false, serverComputer: false, vm: false, cloud: false } }
@@ -606,7 +606,8 @@ export class WorkspaceRuntime extends WorkspaceScheduler {
       const cwd = recovering || target.pairedToken ? undefined
         : await configuredWorkingDirectory((path, options) => target.session.request(path, options), agent.profile)
       this.nodes.requireSource(owner, agent)
-      const deniedToolsets = deniedHostToolsets(this.store.home)
+      // Hermes rejects disabled_toolsets on session.create. Host-tool denial
+      // stays a YaoYao policy; it is not a session-create parameter.
       const createSession = () => gateway.rpc('session.create', {
             profile: agent.profile,
             title: `Yaoyao ${c.id}${run.conversationTaskId ? ` / ${run.conversationTaskId}` : ''}`,
@@ -615,7 +616,6 @@ export class WorkspaceRuntime extends WorkspaceScheduler {
             hidden: true,
             room_plumbing: true,
             close_on_disconnect: false,
-            disabled_toolsets: deniedToolsets,
           })
       let opened
       if (binding?.storedId) {

+ 1 - 1
tests/live/workspaceMemoryBridge.live.test.ts

@@ -81,7 +81,7 @@ it.skipIf(!available)('runs the production WorkspaceRuntime create, bind, prompt
     expect(rpc.filter(r=>r.method==='session.resume')).toHaveLength(1)
     for(const row of rpc.filter(r=>r.method==='session.create')){
       expect(row.params).not.toHaveProperty('skip_memory');expect(row.params).not.toHaveProperty('workspace_memory')
-      expect(row.params).toMatchObject({hidden:true,room_plumbing:true,source:'yaoyao_workspace',disabled_toolsets:['terminal','file']})
+      expect(row.params).toMatchObject({hidden:true,room_plumbing:true,source:'yaoyao_workspace'});expect(row.params).not.toHaveProperty('disabled_toolsets')
     }
     const sent=JSON.stringify(modelCalls)
     expect(sent).toContain(botMemory);expect(sent).not.toContain(profileMemory);expect(sent).not.toContain('PROFILE_PRIVATE_USER_MUST_NOT_REACH_BOT')