DSH / Atlas
2026-09-16implementedsimplificationarchived 2026-09-30

Keep model configuration outside subagent catalogs

将模型配置保留在子代理目录之外

The parent catalog serves direct-child discovery. Recording a child's creation-time LLM provider and model would preserve immutable configuration without opening child histories, but discovery and navigation consumers do not read those values. Creation configuration also does not establish which model served a request.

English

Problem

The parent catalog serves direct-child discovery. Recording a child's creation-time LLM provider and model would preserve immutable configuration without opening child histories, but discovery and navigation consumers do not read those values. Creation configuration also does not establish which model served a request.

Decision

The catalog event and projection retain child identity, creation time, mode, and label. establishCatalogChild(parent, childHeader, descriptor) receives only the values needed to publish membership. Child composition and request history retain their own model configuration; catalog loading adds no child observation or model lookup.

This decision supersedes only the creation-model metadata choice in the parent-catalog decision. That note remains active for successful publication, event order, fork isolation, and projection ownership. The unreleased optional metadata declaration and its dedicated expectations are absent; existing historical Session generations from the migration base remain intact.

Alternatives considered

Keep optional creation metadata for future display. Optional fields still require durable schemas, cache invalidation, producers, and replay expectations. A consumer requiring the immutable creation route could justify those costs; current consumers do not require it.

Read child histories during discovery. This adds work proportional to child histories without helping membership. A display that needs the model used by a request can observe the child's existing modelSelection projection independently.

Consequences

The catalog provides no historical creation-route record. Reintroducing one requires a consumer whose requirement cannot be met by the existing child composition or request projections. Initial reads, live updates, reconnect, and authorization keep their existing owners. Catalog and creation tests, recorded-session replay, and both SDK expectations verify that membership still publishes without the extra metadata.

中文

问题

父目录用于发现直接子级。记录子级创建时的 LLM provider 和 model,可以在不打开子级历史的情况下保留不可变配置,但发现与导航的消费者不读取这些值。创建配置也不能确定实际处理某次请求的模型。

决策

目录事件与投影保留子级身份、创建时间、模式和标签。establishCatalogChild(parent, childHeader, descriptor) 只接收发布成员关系所需的值。子级组合与请求历史各自保留模型配置;目录加载不增加子级观察或模型查询。

本决策仅替代父目录决策中的创建模型元数据选择。该记录继续说明成功发布、事件顺序、fork 隔离和投影所有权。未发布的可选元数据声明及其专属预期输出不予保留;迁移基线中已有的历史 Session 世代保持完整。

考虑过的替代方案

保留可选创建元数据,供未来展示使用。 可选字段仍需要持久化 schema、缓存失效、写入方和回放预期输出。需要不可变创建路由的消费者可以证明这些成本合理,但当前消费者没有此需求。

在发现过程中读取子级历史。 这会增加与子级历史规模相关的工作,却不帮助确定成员关系。需要展示请求实际使用模型的功能,可以独立观察子级已有的 modelSelection 投影。

后果

目录不提供历史创建路由记录。重新引入此记录,需要存在无法通过已有子级组合或请求投影满足需求的消费者。初始读取、实时更新、重连和授权继续由现有模块负责。目录与创建测试、已记录 Session 回放以及两套 SDK 的预期输出验证了成员关系仍可在没有额外元数据的情况下发布。