MCPcopy Create free account
hub / github.com/astercloud/aster / Execute

Method Execute

pkg/tools/executor.go:59–98  ·  view source on GitHub ↗

Execute 执行单个工具

(ctx context.Context, req *ExecuteRequest)

Source from the content-addressed store, hash-verified

57
58// Execute 执行单个工具
59func (e *Executor) Execute(ctx context.Context, req *ExecuteRequest) *ExecuteResult {
60 startTime := time.Now()
61
62 // 获取信号量
63 select {
64 case e.semaphore <- struct{}{}:
65 defer func() { <-e.semaphore }()
66 case <-ctx.Done():
67 return &ExecuteResult{
68 Success: false,
69 Error: ctx.Err(),
70 StartedAt: startTime,
71 EndedAt: time.Now(),
72 }
73 }
74
75 // 设置超时
76 timeout := req.Timeout
77 if timeout <= 0 {
78 timeout = e.config.DefaultTimeout
79 }
80
81 execCtx, cancel := context.WithTimeout(ctx, timeout)
82 defer cancel()
83
84 // 执行工具
85 output, err := req.Tool.Execute(execCtx, req.Input, req.Context)
86 endTime := time.Now()
87
88 result := &ExecuteResult{
89 Success: err == nil,
90 Output: output,
91 Error: err,
92 StartedAt: startTime,
93 EndedAt: endTime,
94 DurationMs: endTime.Sub(startTime).Milliseconds(),
95 }
96
97 return result
98}
99
100// ExecuteBatch 批量执行工具
101func (e *Executor) ExecuteBatch(ctx context.Context, requests []*ExecuteRequest) []*ExecuteResult {

Callers 2

ExecuteBatchMethod · 0.95
executionExampleFunction · 0.95

Calls 3

cancelFunction · 0.85
ExecuteMethod · 0.65
WithTimeoutMethod · 0.45

Tested by

no test coverage detected