Agent 三模式
功能职责
用户每次发送选一个内置 Agent 和一种审批尺度。发给模型的是全量工具表,真正能执行的由本轮 Agent 绑定;要不要停下来等人,由审批流水线裁定。
- 三个内置 Agent:
ask 只读问答,plan 只写计划,agent 可以改仓库和跑命令
- 三种审批:
manual 等人批,auto 由复审模型填单,失败升级给人,yolo 目录内自动过
- 发给模型的工具表是全集;本轮可执行名单冻进这一次 Run
- 模式规则以一条 developer 消息紧跟底座说明,不改底座正文
- 流水线:工具默认和参数校验 → 本 Agent 绑定与覆盖表 → 审批尺度;每层只处理上一层仍为 ask 的调用
- 一次模型回复里的待批工具合成一条审批;拒绝或单个工具失败不打死 Run
边界
- 不实现具体工具;工具能不能跑、要不要审,只看绑定和流水线
- 未列入本轮名单的工具直接拒绝;
yolo 和已批准都不能抬进来
- 工作区外的文件操作必须审批;Agent 覆盖表和
yolo 都不能直接放行
ask 不能写文件、跑命令、写记忆或改计划;做不到就直说,不要假装改好
plan 只许计划工具;用户要改代码时说明需切到 agent
agent 改计划用计划工具,不必为计划单独等人;写代码、跑命令仍走流水线
auto 只填已开出的审批单,失败或拿不准就升级成 manual,不自己开新单
- 会话上的逻辑 Agent ID 不随这次发送改成 ask / plan / agent
内部拆分
工作模式(WorkMode)
用户这一轮要哪个内置 Agent。不管审批尺度,不执行工具。
type WorkMode string // ask | plan | agent
func ParseWorkMode(raw string) WorkMode // 解析工作模式;空或不认识则回落到 agent。
Agent 配置(Profile)
一份内置 Agent:可执行工具名、覆盖表、这一轮的模式规则。不跑流水线,不调模型。
type Profile struct {
ID string // ask | plan | agent
Mode WorkMode
Names []string // 本轮可执行的工具名
Effects map[string]Effect // 第 2 层覆盖;只审上一层仍为 ask 的调用
Duty string // 本轮模式规则,发给模型时紧跟底座说明
}
func For(mode WorkMode) Profile // 返回该工作模式的内置配置。
func DeveloperPrompt(p Profile) string // 拼出本轮 developer 正文;空则不注入。
func Bound(p Profile, name string) bool // 该工具是否在本轮可执行名单里。
审批尺度(ApprovalMode)
用户这一轮允许多自动。不管绑定名单。
type ApprovalMode string // manual | auto | yolo
func ParseApprovalMode(raw string) ApprovalMode // 解析审批尺度;空则 manual。
审批流水线(Pipeline)
按层裁定一次工具调用:默认与校验 → 绑定与覆盖表 → 审批尺度。不执行工具。
type Effect string // allow | ask | deny
type PipelineInput struct {
Default Effect
InspectErr error // 参数校验失败则 deny
Bound bool // 未绑定则 deny
OutsideWorkspace bool // 目录外必须 ask,表和 yolo 不能抬
AgentEffect Effect
HasAgentEffect bool
Approval ApprovalMode
Approved bool // 审批单已批准本调用
}
func Decide(in PipelineInput) Effect // 逐层裁定;每层只处理上一层仍为 ask 的结果。
自动复审(Review)
auto 开单后,由独立复审模型填同一张单。不执行工具,不开新审批。
type ReviewSheet struct {
ApprovalID string
Calls []string // 待填的 tool_call_id
}
type ReviewDecision struct {
ToolCallID string
Status string // approved | denied
Reason string
}
func Fill(sheet ReviewSheet) ([]ReviewDecision, error) // 填单;失败则交给人。
流程
用户选模式和审批尺度后发一句话;模型若要动工具,按本轮名单和流水线走。也可以改选再发,或审一张已开的单。
// 用户用 ask + manual 提问
Run.Start(..., ask, manual)
Profile.For(ask)
Model.Stream(...)
Pipeline.Decide(...) // 写文件未绑定 → deny
Tool.Dispatch(...)
// 用户改用 plan 写大纲
Run.Start(..., plan, manual)
Profile.For(plan)
Plan.WritePlan(...)
// 用户改用 agent + yolo 改工作区内文件
Run.Start(..., agent, yolo)
Profile.For(agent)
Pipeline.Decide(...) // 目录内写文件 → allow
Write.Edit(...)
// 用户用 agent + auto,工具默认要审
Pipeline.Decide(...) // ask
Approval.Create(...)
Review.Fill(...) // 失败则升级给人
Approval.Decide(...)
Run.Continue(...)
// 用户用 agent + manual,路径在工作区外
Pipeline.Decide(...) // 即使 yolo 也不能抬;这里是 manual → ask
Approval.Decide(...) // 人批准后才能执行
Agent 三模式
功能职责
用户每次发送选一个内置 Agent 和一种审批尺度。发给模型的是全量工具表,真正能执行的由本轮 Agent 绑定;要不要停下来等人,由审批流水线裁定。
ask只读问答,plan只写计划,agent可以改仓库和跑命令manual等人批,auto由复审模型填单,失败升级给人,yolo目录内自动过边界
yolo和已批准都不能抬进来yolo都不能直接放行ask不能写文件、跑命令、写记忆或改计划;做不到就直说,不要假装改好plan只许计划工具;用户要改代码时说明需切到agentagent改计划用计划工具,不必为计划单独等人;写代码、跑命令仍走流水线auto只填已开出的审批单,失败或拿不准就升级成manual,不自己开新单内部拆分
工作模式(WorkMode)
用户这一轮要哪个内置 Agent。不管审批尺度,不执行工具。
Agent 配置(Profile)
一份内置 Agent:可执行工具名、覆盖表、这一轮的模式规则。不跑流水线,不调模型。
审批尺度(ApprovalMode)
用户这一轮允许多自动。不管绑定名单。
审批流水线(Pipeline)
按层裁定一次工具调用:默认与校验 → 绑定与覆盖表 → 审批尺度。不执行工具。
自动复审(Review)
auto开单后,由独立复审模型填同一张单。不执行工具,不开新审批。流程
用户选模式和审批尺度后发一句话;模型若要动工具,按本轮名单和流水线走。也可以改选再发,或审一张已开的单。