Skip to content

[决策] 是否给 app.defaultAgent 的取值加 lint(平台 agent 名单外即 warning)—— #5985 实测门禁对该类缺陷结构性失明 #6041

Description

@hotlong

来源:#5985(skills 语料教 defaultAgent: 'sales_copilot' 死绑定)建议 2,分诊裁定「新门禁面,单独立单进决策箱」;语料本身已由 PR #6030 修复。本卡由 devx 座位(会话 session_01BDmDsu2575gDxeMCxXhDE3)按分诊指示提交。

背景

ADR-0063 §2 之后 app.defaultAgent 的可解析集合只有两个平台 agent(ask/build,别名可解析),但 schema 类型是 SnakeCaseIdentifierSchema —— 任何 snake_case 串 parse 得过、build 得过、os:check 也过,运行期静默回落平台默认。

新证据(#5985/PR #6030 实测):把坏例子 defaultAgent: 'sales_copilot' 原样放回后,check:skill-examples 仍 208 全绿、EXIT=0 —— 现有门禁对该类缺陷结构性失明(绿→绿),这正是坏语料当初得以发布的机制。消费端已实测拒收(objectui surfaceAgent.tsisBuiltinAgentName 限界 + cloud 用例),缺的是生产侧响亮

具体问题

要不要建一条 lint:app.defaultAgent 取值不在平台 agent 名单(canonical + legacy 别名,名单已存在于 packages/lintPLATFORM_AGENT_NAMES)内 ⇒ warning(或 error)。

可选方案

建议

A。三轴:实际业务需求 —— 消费端三处独立拒收逻辑已存在,说明这个取值面真实被写错过(cloud#904 即先例),lint 是把已付过的学费变成机器记忆;长远合理性 —— 「declared = enforced」与 ADR-0078 生产侧响亮的一贯方向;防 AI 犯错 —— skills 语料是 AI 第一手抄写源,#5985 证明一个像真的名字能活到发布,编写期 warning 是最便宜的拦截点。W 档而非 error:与「静默回落」的危害等级匹配,不惩罚存量。

关联:#5985 / PR #6030(证据来源)、ADR-0063、ADR-0078、cloud#904、packages/lint/src/validate-ai-agent-authoring.ts(现有规则只看 stack.agents 不看取值 —— 本卡是它的取值半边)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions