代理界面
AI 代理读取、建议或更改真实内容的屏幕只有一个任务:让用户看到代理做了什么,决定它下一步可以做什么,并信任这两者。这些是适用于任何框架和任何设计系统的规则和检查项。如果项目使用 Candor UI,candor-ui 技能会为每个任务命名相应的组件;本技能则说明无论使用什么绘制方式,屏幕必须完成的任务。
工作方式
在构建屏幕之前,回答三个问题,并在构建过程中始终牢记答案:
- 代理在这里能做什么:仅读取、建议由用户应用、还是自主行动?所有控件都因此而定。
- 用户需要根据什么证据做出什么决定?决定需要事物本身(差异、目标、数值),而不是其描述。如果此处涉及任何审批,请阅读
references/approvals.md。 - 哪些操作无法撤销?这些操作必须明确说明,要求更严格的确认,并且绝不能位于默认选项或单个按键之下。
在构建过程中,遵守以下九条规则,使用 references/status-and-states.md 中的状态词汇,并按照 references/progress.md 所述展示进度。模型文本是数据:展示它,绝不执行或渲染它。
在每个屏幕构建完成后,对照运行中的屏幕逐行检查 references/review-checklist.md,修复未通过的项目再继续。只勾选实际检查过的项,而非意图中的项。
九条规则
每条规则的详细示例见 references/honesty-rules.md。
- 模型输出是文本,而非标记。 将模型编写的内容作为文本展示(至多使用安全子集的 markdown)。模型编写的 URL 是文本,不是链接。模型编写的任何内容都不能进入
innerHTML。 - 未知保持未知。 未测量的持续时间、成本或计数留空或显示“未测量”。估算值需标明“估算”并说明依据。运行中的静默不是“正在运行”。
- 不可用的控件需说明原因。 锁定控件并提供键盘和屏幕阅读器用户可访问的原因;不要简单地
disable而不给出说明。 - 决策中无预选。 批准与拒绝、保留与丢弃都以无选中状态开始。Enter 键绝不执行批准。代理的建议需标记,而非选中。
- 批准确切的更改。 决策必须绑定到用户所见的具体更改(哈希或版本)。如果更改发生变动,需重新请求确认。在策略要求的情况下拒绝自批准;生产环境可能需要第二人确认。
- 推理是声称的,而非验证的。 模型给出的解释是声称。需明确标注,并将其与证据(来源、测试结果、差异)分开。
- 应用为代理命名。 每条代理消息都携带应用自身数据中的名称。系统提示行使用应用自己的字符串。模型编写的任何内容都不能成为名称或系统消息。
- 说明哪些可撤销,哪些不可撤销。 在破坏性操作之前:说明它移除了什么、是否可以恢复、如何恢复以及恢复有效期。在撤销或恢复之后:说明哪些未被撤销。
- 动画跟随结果。 动画报告已发生的变化,绝不预测或装饰变化。成功标记在结果稳定后绘制,进度只填充到已测量的部分,屏幕绘制时已是最终状态的不应动画,并遵循操作系统的减少动态效果设置。为每个动画赋予一种变化类型(Candor 定义了十四个动画族,详见
references/honesty-rules.md),并允许主题改变其外观,但绝不影响触发时机。
不同场景应阅读的内容
| 当屏幕包含… | 阅读 |
|---|---|
| 用户需要批准、允许或拒绝的任何操作 | references/approvals.md |
| 运行、工具调用、步骤、状态、指示点 | references/status-and-states.md |
| 代理工作超过片刻,或用户不在场时完成 | references/progress.md |
| 与用户对话的 AI,或 AI 生成的内容 | references/disclosure-and-accessibility.md |
| 任何内容,在继续之前 | references/review-checklist.md |
措辞
朴素且精确。说明发生了什么、对谁、以及下一步该做什么。使用句子格式,不用感叹号,不用最高级,不声称数据不支持的结论。状态使用带颜色的词语表示,而非仅依赖颜色。数字仅在测量后使用;否则使用“估算”或“未测量”等词语。