fix: preserve task stop intent and guard remote execution boundaries

This commit is contained in:
Xin Wang
2026-10-23 19:53:17 +08:00
parent 8ac75a1873
commit 89c3bad58e
16 changed files with 199 additions and 20 deletions
@@ -76,7 +76,8 @@ export function BackgroundTaskPanel({ assistantId }: { assistantId: string | nul
<summary className="cursor-pointer text-xs text-muted-foreground">后台任务 {tasks.length ? `· ${tasks.filter(task => !terminal.has(task.status)).length} 项待处理` : ""}</summary>
<div className="mt-2 max-h-64 space-y-2 overflow-y-auto">
{error && <p role="alert" className="text-xs text-destructive">{error}</p>}
{tasks.slice(0, 20).map(task => <TaskCard key={task.id} task={task} onChanged={refresh} />)}
<p className="text-xs text-muted-foreground">最多显示 100 项,优先显示未结束任务</p>
{tasks.map(task => <TaskCard key={task.id} task={task} onChanged={refresh} />)}
</div>
</details>;
}
@@ -1047,6 +1047,6 @@ function TaskFields({ form, setForm }: { form: ToolForm; setForm: React.Dispatch
<Field label="远端工作目录" required><Input value={form.directory} placeholder="/workspace/my-project" onChange={e => setForm(v => ({ ...v, directory: e.target.value }))} /></Field>
<Field label="用户名"><Input value={form.username} onChange={e => setForm(v => ({ ...v, username: e.target.value }))} /></Field>
<Field label="服务密码"><Input type="password" autoComplete="new-password" value={form.password} onChange={e => setForm(v => ({ ...v, password: e.target.value }))} /><span className="text-xs text-muted-foreground">对应 OPENCODE_SERVER_PASSWORD;编辑时留空保留原密码。</span></Field>
<Field label="任务时限(秒)"><Input type="number" min={30} max={7200} value={form.timeoutSeconds} onChange={e => setForm(v => ({ ...v, timeoutSeconds: e.target.value }))} /></Field>
<Field label="等待时限(秒)"><Input type="number" min={30} max={7200} value={form.timeoutSeconds} onChange={e => setForm(v => ({ ...v, timeoutSeconds: e.target.value }))} /><p className="text-xs text-muted-foreground">含排队时间;重启或重新观察任务后重新计时。</p></Field>
</div>;
}