Repository navigation
Agent Teams: let spawnTeammate pass agentOptions (provider/model/persona/toolFilter) through to startContinuable #9171
Replies: 5 comments
|
Related work — two complementary layers. kimi-tide (discussion #9169) solves per-step and per-member model routing today, purely plugin-side: decide at The two layers are complementary:
Our PoC (above) also shows why provider-name tricks don't work for teammates: on the continuable path the provider name is just a descriptor label and the provider's One caution if the layers coexist: two |
|
Follow-up — the wire already exists one layer down (verified on 0.2.0-rc.2). Cross-referencing @tafcear in discussion #9169, who independently verified this against a running 0.2.0-rc.2 host (we re-checked all of it locally, same version):
On coexistence: |
|
从一台 0.2.0-rc.2 上交叉核验:结论一致。另有两处会改变改法(不是改不改)的实测发现。 断层在两层,不是一层。 公开工具 const agentRequest = {
name: args.name,
description: args.description,
prompt: [...],
context,
provider: context === 'fork' ? config.forkProvider : config.freshProvider, // :290
signal: exec.signal,
};全包扫描: 关于「可见性」那一段,补一层实测到的坑。 一条持久性缺口。 member 记录里没有 model 字段( 核验方法:抽出本机在跑的 app.asar,逐条对照随包发布的 0.2.0-rc.2 源码。帖子里其余断言全部复现:调用点、能力声明、 |
|
Correction & strengthening from the proposer — with working patch evidence. @tafcear's cross-check (comment on this thread) corrected an understatement in our earlier follow-up: the break is not one call site — it spans three layers: the We have since validated the whole chain end-to-end with a zero-fork runtime patch on 0.2.0-rc.2: wrap One addition the patch evidence surfaced (echoing @tafcear): once the live agent is disposed, |
|
Good — and one thing your patch evidence explains that is worth writing into the ask, plus a confirmation. Why the roster shows the patched model while the teammate is live. With Your member-record request, confirmed at the source. The record built in One interface caveat if the fix is done provider-side. A custom provider can define its own seed strategy: Nothing further from me on the diagnosis — your three-layer framing plus the runtime patch is the complete picture, and the two asks (tool/service/roster wiring, member-record persistence) are the right ones. |
Uh oh!
There was an error while loading. Please reload this page.
Motivation
Every teammate in an Agent Team currently inherits the Lead's model and tool surface. Real deployments (e.g. a fixed AI video pipeline: script → storyboard → frame generation → render → edit) need:
Current state: the mechanism is complete, one wire is missing at the team layer
The subagent layer already supports per-child customization end to end: providers declare the
agentOptions / persona / toolFiltercapabilities, andstartContinuableresolvesrequest.agentOptionsinto the descriptor'sagentProvider / agentModel / agentReasoningEffort(pluspersona / toolFilter), which the continuation owner consumes.But
dsh-experimental-agent-team'sroster.spawnhardcodes the call:Verified byte-identical across 0.1.7-rc.1, 0.2.0-rc.2, and 0.2.1-alpha.1 (occurrences of
agentOptions/persona/toolFilterin the package: 0).PoC evidence (0.1.7-rc.1, standalone headless process)
startInProcessRunand stampingagentOptions { provider, model }), then calledspawnTeammate({ provider: "poc-spawn", ... }): the member record showsprovider == "poc-spawn", but the provider'sstart()is never invoked (on the continuable path the child is materialized by the continuation owner), andmember.modelis inherited from the Lead.Proposal
Minimal change: accept optional
agentOptions / persona / toolFilteron thespawnTeammaterequest and pass them through tostartContinuableinroster.spawn(and persist them on the member record — the roster already has amodeldisplay field). Alternatively, expose a per-role agentOptions table in the team service config.That single wire lets a team run "Lead on cloud, members on local models, least privilege per role", which makes Agent Teams a solid execution substrate for fixed pipelines (task-board DAG + code-side dispatcher).
(We currently carry a plugin-side workaround — patching the one
roster.spawncall site. Under the experimental contract we must re-apply it on every upgrade; we would love to see this land upstream.)Environment: dsh 0.1.7-rc.1 (compared against the published 0.2.0-rc.2 and 0.2.1-alpha.1 npm artifacts) · Linux · reproducible PoC scripts available on request.
All reactions