Documentation
¶
Overview ¶
Package delegate 异构委托的**契约面**:请求能不能交出去、交出去的结果算不算完成。
为什么只做契约面 ¶
「把任务委托给另一个 agent 运行时(ACP / 别的 CLI)」方向明确,但它同时是 **协议面 + 传输**:握手版本、stdio 帧格式、会话续接都属于传输,落点大概率在 上游。此时由内核定一套线格式,等于把一种传输焊进契约。
故本包只回答三个跨传输恒定的问题:
- **能不能交给它**:请求需要的能力必须是对方**声明提供**的子集。 做不到的事一律拒绝,不许「尽力而为」——尽力而为的结果无法判定 「没做到」与「本来就没要求」,而委托方只能照单全收。
- **交给谁**:多个能满足的 offer 里取**能力最少**的那个(最小能力原则)。 委托的本质是把控制权交出去;把任务交给权限更大的那一方,是在没有 任何收益的情况下扩大暴露面。
- **回来算不算完成**:回执的状态是**三值**(completed / failed / refused), 且失败必须带原因。把「被拒绝执行」混进「执行失败」会让委托方 去修一个不存在的 bug。
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrNoRunner = errors.New("delegate: 没有能满足请求的执行方")
ErrNoRunner 没有任何 offer 能满足请求。
View Source
var ErrUnsupported = errors.New("delegate: 对方不提供所需能力")
ErrUnsupported 对方不提供所需能力。
Functions ¶
This section is empty.
Types ¶
type Offer ¶
type Offer struct {
// Name 执行方标识(留痕与选择用)。
Name string
// Provides 它**声明提供**的能力。
Provides []Capability
// MaxGoalBytes 目标描述的字节上限(<=0 = 不限制)。
MaxGoalBytes int
}
Offer 一个执行方的能力声明。
type Receipt ¶
type Receipt struct {
// Status 状态。
Status Status
// Summary 一句话结论(completed 时必填:没有结论的「完成」无法使用)。
Summary string
// Failure 失败/拒绝原因(failed 与 refused 时必填)。
Failure string
// Artifacts 产出物引用(路径或标识,原样携带)。
Artifacts []string
}
Receipt 一次委托的回执。
Click to show internal directories.
Click to hide internal directories.