test(subagent): narrow named instance evidence

This commit is contained in:
pku-xht 2026-08-18 04:34:24 +08:00
parent a89f72841a
commit cf16ee41bf
7 changed files with 66 additions and 106 deletions

View file

@ -18,59 +18,47 @@
models:
- id: deepseek-v4-flash
- id: deepseek-v4-pro
- id: subagent-codex-safe
- id: subagent-codex-primary
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-safe
permissionMode: never
env:
DSH_CODEX_INSTANCE: safe
- id: subagent-codex-bypass
providerName: codex-primary
- id: subagent-codex-secondary
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-bypass
permissionMode: dangerously-bypass-approvals-and-sandbox
env:
DSH_CODEX_INSTANCE: bypass
- id: subagent-claude-safe
providerName: codex-secondary
- id: subagent-claude-primary
name: '@deepseek-ai/dsh-subagent-claude-code'
config:
providerName: claude-safe
permissionMode: dontAsk
env:
DSH_CLAUDE_INSTANCE: safe
- id: subagent-claude-bypass
providerName: claude-primary
- id: subagent-claude-secondary
name: '@deepseek-ai/dsh-subagent-claude-code'
config:
providerName: claude-bypass
permissionMode: bypassPermissions
env:
DSH_CLAUDE_INSTANCE: bypass
- id: tool-subagent-codex-safe
providerName: claude-secondary
- id: tool-subagent-codex-primary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: codex-safe
toolName: subagent_codex_safe
provider: codex-primary
toolName: subagent_codex_primary
backgroundMode: one-shot
maxDepth: provider-managed
- id: tool-subagent-codex-bypass
- id: tool-subagent-codex-secondary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: codex-bypass
toolName: subagent_codex_bypass
provider: codex-secondary
toolName: subagent_codex_secondary
backgroundMode: one-shot
maxDepth: provider-managed
- id: tool-subagent-claude-safe
- id: tool-subagent-claude-primary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: claude-safe
toolName: subagent_claude_safe
provider: claude-primary
toolName: subagent_claude_primary
backgroundMode: one-shot
maxDepth: provider-managed
- id: tool-subagent-claude-bypass
- id: tool-subagent-claude-secondary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: claude-bypass
toolName: subagent_claude_bypass
provider: claude-secondary
toolName: subagent_claude_secondary
backgroundMode: one-shot
maxDepth: provider-managed

View file

@ -7,59 +7,47 @@
path: ./cordis.yml
patches:
- insert:
- id: subagent-codex-safe
- id: subagent-codex-primary
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-safe
permissionMode: never
env:
DSH_CODEX_INSTANCE: safe
- id: subagent-codex-bypass
providerName: codex-primary
- id: subagent-codex-secondary
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-bypass
permissionMode: dangerously-bypass-approvals-and-sandbox
env:
DSH_CODEX_INSTANCE: bypass
- id: subagent-claude-safe
providerName: codex-secondary
- id: subagent-claude-primary
name: '@deepseek-ai/dsh-subagent-claude-code'
config:
providerName: claude-safe
permissionMode: dontAsk
env:
DSH_CLAUDE_INSTANCE: safe
- id: subagent-claude-bypass
providerName: claude-primary
- id: subagent-claude-secondary
name: '@deepseek-ai/dsh-subagent-claude-code'
config:
providerName: claude-bypass
permissionMode: bypassPermissions
env:
DSH_CLAUDE_INSTANCE: bypass
- id: tool-subagent-codex-safe
providerName: claude-secondary
- id: tool-subagent-codex-primary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: codex-safe
toolName: subagent_codex_safe
provider: codex-primary
toolName: subagent_codex_primary
backgroundMode: one-shot
maxDepth: provider-managed
- id: tool-subagent-codex-bypass
- id: tool-subagent-codex-secondary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: codex-bypass
toolName: subagent_codex_bypass
provider: codex-secondary
toolName: subagent_codex_secondary
backgroundMode: one-shot
maxDepth: provider-managed
- id: tool-subagent-claude-safe
- id: tool-subagent-claude-primary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: claude-safe
toolName: subagent_claude_safe
provider: claude-primary
toolName: subagent_claude_primary
backgroundMode: one-shot
maxDepth: provider-managed
- id: tool-subagent-claude-bypass
- id: tool-subagent-claude-secondary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: claude-bypass
toolName: subagent_claude_bypass
provider: claude-secondary
toolName: subagent_claude_secondary
backgroundMode: one-shot
maxDepth: provider-managed

View file

@ -18,31 +18,25 @@
models:
- id: deepseek-v4-flash
- id: deepseek-v4-pro
- id: subagent-codex-safe
- id: subagent-codex-primary
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-safe
permissionMode: never
env:
DSH_CODEX_INSTANCE: safe
- id: subagent-codex-bypass
providerName: codex-primary
- id: subagent-codex-secondary
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-bypass
permissionMode: dangerously-bypass-approvals-and-sandbox
env:
DSH_CODEX_INSTANCE: bypass
- id: tool-subagent-codex-safe
providerName: codex-secondary
- id: tool-subagent-codex-primary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: codex-safe
toolName: subagent_codex_safe
provider: codex-primary
toolName: subagent_codex_primary
backgroundMode: one-shot
maxDepth: provider-managed
- id: tool-subagent-codex-bypass
- id: tool-subagent-codex-secondary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: codex-bypass
toolName: subagent_codex_bypass
provider: codex-secondary
toolName: subagent_codex_secondary
backgroundMode: one-shot
maxDepth: provider-managed

View file

@ -7,31 +7,25 @@
path: ./cordis.yml
patches:
- insert:
- id: subagent-codex-safe
- id: subagent-codex-primary
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-safe
permissionMode: never
env:
DSH_CODEX_INSTANCE: safe
- id: subagent-codex-bypass
providerName: codex-primary
- id: subagent-codex-secondary
name: '@deepseek-ai/dsh-subagent-codex'
config:
providerName: codex-bypass
permissionMode: dangerously-bypass-approvals-and-sandbox
env:
DSH_CODEX_INSTANCE: bypass
- id: tool-subagent-codex-safe
providerName: codex-secondary
- id: tool-subagent-codex-primary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: codex-safe
toolName: subagent_codex_safe
provider: codex-primary
toolName: subagent_codex_primary
backgroundMode: one-shot
maxDepth: provider-managed
- id: tool-subagent-codex-bypass
- id: tool-subagent-codex-secondary
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: codex-bypass
toolName: subagent_codex_bypass
provider: codex-secondary
toolName: subagent_codex_secondary
backgroundMode: one-shot
maxDepth: provider-managed

View file

@ -307,7 +307,7 @@
}
},
{
"name": "subagent_claude_bypass",
"name": "subagent_claude_primary",
"description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.",
"parameters": {
"type": "object",
@ -332,7 +332,7 @@
}
},
{
"name": "subagent_claude_safe",
"name": "subagent_claude_secondary",
"description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.",
"parameters": {
"type": "object",
@ -357,7 +357,7 @@
}
},
{
"name": "subagent_codex_bypass",
"name": "subagent_codex_primary",
"description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.",
"parameters": {
"type": "object",
@ -382,7 +382,7 @@
}
},
{
"name": "subagent_codex_safe",
"name": "subagent_codex_secondary",
"description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.",
"parameters": {
"type": "object",

View file

@ -307,7 +307,7 @@
}
},
{
"name": "subagent_codex_bypass",
"name": "subagent_codex_primary",
"description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.",
"parameters": {
"type": "object",
@ -332,7 +332,7 @@
}
},
{
"name": "subagent_codex_safe",
"name": "subagent_codex_secondary",
"description": "Delegate a self-contained task to a subagent (a separate agent that works in its own context) to offload focused, independent work — research, a scoped implementation, an analysis — so it does not consume this conversation's context. The subagent returns its result, not its intermediate steps. Give it a complete, standalone prompt: it does not see this conversation. This call waits for the result by default. Set `run_in_background: true` to return a job id; collect with `job_output` and stop with `job_kill`.",
"parameters": {
"type": "object",

View file

@ -53,7 +53,6 @@ interface RealHarness {
readonly ctx: Context
readonly handles: SubprocessHandle[]
readonly parent: Agent
readonly providerName: string
readonly env: Record<string, string>
readonly workspace: string
}
@ -134,7 +133,6 @@ async function realRuntime(): Promise<RealRuntime> {
async function realHarness(
script: readonly ResponsesBehavior[],
permissionMode?: CodexPermissionMode,
providerName = 'codex',
): Promise<{
readonly harness: RealHarness
readonly fixture: ResponsesFixture
@ -142,7 +140,6 @@ async function realHarness(
const instance = await realInstanceFixture(script)
const { ctx, handles } = await realRuntime()
await ctx.plugin(codex, {
providerName,
env: instance.env,
...permissionMode === undefined ? {} : { permissionMode },
disposeGraceMs: 2_000,
@ -156,7 +153,6 @@ async function realHarness(
ctx,
handles,
parent,
providerName,
env: instance.env,
workspace: instance.workspace,
},