落地并存测服全端:智能体 Graph/路由、后台切 8180、主账与部署脚本齐备,便于线上重发与验收。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# Kill duplicate agent wrappers; keep newest; then remove stale release dirs
|
||||
$ErrorActionPreference = 'Continue'
|
||||
$Root = 'E:\wwwroot'
|
||||
$keepRel = 'agent-20260913-210940'
|
||||
$keepHome = Join-Path $Root ("agent\releases\" + $keepRel + "\agent")
|
||||
|
||||
Write-Output '=== stop ALL agent cmd/python under wwwroot ==='
|
||||
Get-CimInstance Win32_Process | ForEach-Object {
|
||||
$cl = $_.CommandLine
|
||||
if (-not $cl) { return }
|
||||
$hit = $false
|
||||
if ($cl -like '*run-agent-http.cmd*' -or $cl -like '*run-agent-worker.cmd*') { $hit = $true }
|
||||
if ($cl -like '*agent.http_app*' -or $cl -like '*agent.worker_app*') { $hit = $true }
|
||||
if ($cl -like '*wwwroot\agent*') { $hit = $true }
|
||||
if ($hit) {
|
||||
Write-Output ("stop pid=$($_.ProcessId) $($_.Name)")
|
||||
Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
}
|
||||
# also free 8910
|
||||
Get-NetTCPConnection -LocalPort 8910 -ErrorAction SilentlyContinue |
|
||||
Select-Object -ExpandProperty OwningProcess -Unique |
|
||||
ForEach-Object { Stop-Process -Id $_ -Force -ErrorAction SilentlyContinue }
|
||||
Start-Sleep -Seconds 3
|
||||
|
||||
Write-Output '=== delete stale releases ==='
|
||||
Get-ChildItem (Join-Path $Root 'agent\releases') | Where-Object { $_.PSIsContainer } | ForEach-Object {
|
||||
if ($_.Name -eq $keepRel) {
|
||||
Write-Output ('KEEP ' + $_.Name)
|
||||
} else {
|
||||
$full = $_.FullName
|
||||
cmd /c ("rmdir /s /q `"$full`"") | Out-Null
|
||||
if (Test-Path $full) {
|
||||
Write-Output ('STILL ' + $_.Name)
|
||||
} else {
|
||||
Write-Output ('GONE ' + $_.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Write-Output '=== rewrite run scripts to keepHome ==='
|
||||
$venvPy = Join-Path $keepHome '.venv\Scripts\python.exe'
|
||||
$runHttp = @(
|
||||
'@echo off',
|
||||
('cd /d "' + $keepHome + '"'),
|
||||
'set YTD_ENV=test',
|
||||
'set AGENT_HTTP_PORT=8910',
|
||||
'set PYTHONUTF8=1',
|
||||
':loop',
|
||||
('"' + $venvPy + '" -m agent.http_app >> "' + $Root + '\logs\agent-http.out.log" 2>> "' + $Root + '\logs\agent-http.err.log"'),
|
||||
('echo agent exited >> "' + $Root + '\logs\agent-http.err.log"'),
|
||||
'timeout /t 3 /nobreak >nul',
|
||||
'goto loop'
|
||||
) -join "`r`n"
|
||||
Set-Content -Path (Join-Path $Root 'ops\run-agent-http.cmd') -Value $runHttp -Encoding ASCII
|
||||
|
||||
$runWorker = @(
|
||||
'@echo off',
|
||||
('cd /d "' + $keepHome + '"'),
|
||||
'set YTD_ENV=test',
|
||||
'set PYTHONUTF8=1',
|
||||
':loop',
|
||||
('"' + $venvPy + '" -m agent.worker_app >> "' + $Root + '\logs\agent-worker.out.log" 2>> "' + $Root + '\logs\agent-worker.err.log"'),
|
||||
('echo worker exited >> "' + $Root + '\logs\agent-worker.err.log"'),
|
||||
'timeout /t 3 /nobreak >nul',
|
||||
'goto loop'
|
||||
) -join "`r`n"
|
||||
Set-Content -Path (Join-Path $Root 'ops\run-agent-worker.cmd') -Value $runWorker -Encoding ASCII
|
||||
|
||||
# ensure junction
|
||||
$current = Join-Path $Root 'agent\current'
|
||||
if (Test-Path $current) { cmd /c ("rmdir `"$current`"") | Out-Null }
|
||||
cmd /c ("mklink /J `"$current`" `"$keepHome`"") | Out-Null
|
||||
|
||||
Write-Output '=== start one http + one worker ==='
|
||||
$w1 = Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{ CommandLine = ('cmd.exe /c "' + (Join-Path $Root 'ops\run-agent-http.cmd') + '"') }
|
||||
$w2 = Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{ CommandLine = ('cmd.exe /c "' + (Join-Path $Root 'ops\run-agent-worker.cmd') + '"') }
|
||||
Write-Output ("http_wmi=" + $w1.ReturnValue + " worker_wmi=" + $w2.ReturnValue)
|
||||
Start-Sleep -Seconds 6
|
||||
try {
|
||||
$h = Invoke-WebRequest -Uri 'http://127.0.0.1:8910/health' -UseBasicParsing -TimeoutSec 8
|
||||
Write-Output ('HEALTH=' + $h.StatusCode + ' ' + $h.Content)
|
||||
} catch {
|
||||
Write-Output ('health_fail ' + $_)
|
||||
Get-Content (Join-Path $Root 'logs\agent-http.err.log') -Tail 30 -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
Write-Output '=== left releases ==='
|
||||
Get-ChildItem (Join-Path $Root 'agent\releases') | ForEach-Object { $_.Name }
|
||||
Write-Output 'REPAIR_OK'
|
||||
Reference in New Issue
Block a user