Documentation
¶
Overview ¶
agent.go:AgentConfig → agent.Agent 的装配(单文件 Build 与多文件 BuildApp 共用),含模型/存储/召回的解析辅助。
app.go 实现配置的多文件形态:按所有权切分为三层文件——
app.yaml 应用级(部署拥有):进程级资源 + 接线板,业务含量为零 agents/<name>.yaml agent 维度(产品面拥有):模型/记忆/预算/审批 + namespace 关联 namespaces/<name>.yaml namespace 维度(域团队拥有):tools/components/skills
约定:文件名即名字(显式 name 必须一致);相对路径相对引用它的文件 解析;agent 关联 namespace 即自动挂载其全部导出 skill。
装配语义:namespace 是库,agent 挂载时按解析出的执行画像实例化一份 (源连接按 namespace 文件缓存共享,components/skills 装配按 agent 实例化);跨 namespace 的 cap://skill 引用在同一 agent 挂载的集合内 按关联顺序解析。
执行画像 A 类(model/loop/reliability/digest/step_defaults)五级就近降级 (高→低,见 profile.go):
agent给该ns指定(per-mount) → component → namespace → agent自己 → app
model 特例:能力不可自指,ns/component 不参与,链退化为 per-mount → agent自己 → app。会话状态(session/memory/todo)与治理边界(approval/ budget/structured_output)是 B/C 类:app→agent 整块降级,不下沉 component ——那是 agent/部署持有的安全边界,库不能给自己放权。
Package config 提供整个应用的声明式定义与总装:凭证、提示词源、能力源、 skill、agent、serving、IM 通道,一份 YAML 全部描述,Build 组装为可运行 的 App。代码组织:schema.go 收口配置模型;config.go 单文件 Load/Build; agent.go agent 装配;app.go 多文件 LoadApp/BuildApp;namespace.go ns 装配。
exec.go:app 级脚本执行沙箱策略。default_sandbox 让所有 exec 能力 (exectool 声明的、skillpack 自动生成的)不显式配就走同一沙箱; require_sandbox 禁止回落到宿主直跑。默认经装配层解析后注入进各 exec source 的 conf(不是 exec 包全局单例,守 DI 原则)。
hubs.go:技能装配的按名解析环境(eino AgentHub/ModelHub 的本地等价物)。 skillpack frontmatter 的 `agent:`/`model:` 字段据此解析:agent 注册表在 全部 agent 装配完成后回填(技能装配早于 agent,查找延迟到调用期,名字 合法性用"已声明 agent 名"在装配期校验);具名模型懒构建 + 缓存,Ring 0 包装与其他专属模型同源。
namespace.go 实现命名空间(能力清单文件)的装配:
namespace ├── sources 工具供给源(mcp/http/...),ns 内共享,对外不可见 ├── skills 过程卡(内联 prompt+params)或外部 SKILL.md 包,进目录 └── subagents 声明式 sub-agent(同构隔离子循环),进目录
边界规则在装配期落实:工具引用不出命名空间(内联卡的直挂是唯一 显式豁免——主循环亲自执行是该形态的定义);skills/subagents 挂载 即对 agent 可见,跨文件同名在目录冲突检测处报错。
observe.go:可观测性装配。eino 全局回调是进程级切面,"本进程装过什么" 的账本由装配层(本文件)持有——observe 包只出纯构造,不持有状态。 幂等键取配置值本身(logger 身份 / 轨迹 path):同一配置重复装配(多次 Build、副本重启测试)只装一份;不同配置各装一份、各收全量事件(全局 切面的语义即如此,按 app 过滤要走 eino per-invocation callback,另议)。
profile.go 定义统一执行画像(execution profile)与其分层降级合并。
一套 schema、四层可声明:任何执行单元(主 loop 或 component)共用同一组 执行参数(model/loop/reliability/digest/steps),声明在哪层就在哪层生效, 缺失则沿 app → agent → namespace → component 逐级向上降级(就近者胜), 外加 agent 给某 namespace 的 per-mount 指定(最高优)。字段全部可判空 (指针/空串):nil=继承、非 nil=本层生效——才能区分"没配"与"配成零值"。
model 是特例:能力(namespace/component)不能自己指定 model(部署/成本 决策由集成方定),故 namespace/component 的 Profile.Model 必须为 nil, 由 validateNoModel 在装配期强制;可声明 model 的只有 app / agent自己 / per-mount。因 ns/component 贡献 nil,通用 merge 天然得到 model 的三级链。
schema.go 收口全部配置模型定义(YAML 结构):app / agent / namespace / subagent 的声明式 schema 都在这里;各层的“组装”逻辑分见 config.go(单 文件)、app.go(多文件)、agent.go(agent 装配)、namespace.go(ns 装配)。
执行画像(model/loop/reliability/digest)是各层共用的一套 Profile (见 profile.go),各层内嵌;治理边界(approval/budget/structured_output) 与会话状态(session/memory/todo)是 agent 专属、可由 app 设默认。
skillpack.go:外部 skillpack(use: 链接)的装配接线。启动期下载安装 (v1 主路径,见 docs/skillpack-design.md):EnsurePack 物化到 .skills + skills.lock 校验 → LoadManifest → skill.BuildPack → 进目录。 打包期 CLI(sync/verify)延后,核心逻辑已收口在 skill 包与本文件, 届时只需薄壳。
Index ¶
- type AgentConfig
- type AgentFile
- type AgentSpec
- type App
- type AppConfig
- type AppSpec
- type ApprovalConfig
- type BudgetConfig
- type BuildOptions
- type CapabilitiesConfig
- type CatalogConfig
- type ChannelConfig
- type Config
- type DigestProfile
- type ExecConfig
- type LoopProfile
- type MemoryConfig
- type MemoryScope
- type MemorySeed
- type ModelConfig
- type Mount
- type NamedModelConfig
- type NamespaceConfig
- type NamespaceFile
- type NamespaceMount
- type NamespaceSkill
- type NamespaceSpec
- type ObservabilityConfig
- type Profile
- type PromptConfig
- type PromptSourceConfig
- type PromptsConfig
- type ReliabilityProfile
- type RetrieverInstance
- type SecretsConfig
- type ServingConfig
- type SessionConfig
- type SessionRecall
- type SkillEntry
- type SkillpacksConfig
- type SourceConfig
- type StoreInstance
- type SubagentConfig
- type SuspendConfig
- type TodoConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AgentConfig ¶
type AgentConfig struct {
Name string `yaml:"name"`
Description string `yaml:"description"`
// 执行画像 A 类(model/loop/reliability/digest/steps),agent 自己这一层:
// 既配主循环,也作为其 component 的降级源。
Profile `yaml:",inline"`
Prompt PromptConfig `yaml:"prompt"` // 提示词分层(L1 loop / L2 system)
Capabilities CapabilitiesConfig `yaml:"capabilities"` // 能力选品 + 内置开关
// Stores/Retrievers 是具名实例声明(仅定义);模块块的 store/retriever
// 槽用 cap://store/... · cap://retriever/... 引用它们(见 StoreInstance)。
Stores []StoreInstance `yaml:"stores"`
Retrievers []RetrieverInstance `yaml:"retrievers"`
// 会话状态(主循环专属,component 无状态调用没有):
Session SessionConfig `yaml:"session"`
Memory MemoryConfig `yaml:"memory"`
Todo TodoConfig `yaml:"todo"`
// 治理边界(Ring 0,agent 独占、不被 namespace 覆盖):审批 + 预算 +
// 结构化输出,三块各自顶层。
Approval ApprovalConfig `yaml:"approval"`
// Delegate 启用动态委派(builtin delegate 工具):模型运行期把子任务
// 委派给隔离子循环,治理面见 skill.DelegateConfig。缺省关。
Delegate skill.DelegateConfig `yaml:"delegate"`
Budget BudgetConfig `yaml:"budget"`
StructuredOutput loop.StructuredConfig `yaml:"structured_output"`
}
AgentConfig 声明一个 agent(唯一主循环是 ReAct)。执行画像(model/loop/ reliability/digest/steps)内嵌自 Profile,是主循环设置、兼作其 component 的 通用默认;会话状态(session/memory/todo)是主循环专属;治理边界(approval/ budget/structured_output)是 agent 独占的 Ring 0 安全边界。
type AgentFile ¶
type AgentFile struct {
AgentConfig `yaml:",inline"`
// Namespaces 是关联的 namespace 挂载(相对本文件),自动挂载其全部
// 导出 skill;capabilities.exclude 可屏蔽个别。每个挂载可携带 per-mount
// 覆盖画像(最高优),兼容裸字符串写法(仅路径),见 NamespaceMount。
Namespaces []NamespaceMount `yaml:"namespaces"`
}
AgentFile 是 agent 维度的配置文件(agents/<name>.yaml)。
type App ¶
type App struct {
Agents map[string]*agent.Agent
Catalog *source.Catalog
Prompts *prompt.Resolver
Server *serving.Server // serving 未配置时为 nil
// AgentMounts 是多文件路径下各 agent 的挂载目录(关联 namespaces
// 导出的 skills),供巡检与调试;单文件路径为 nil。
AgentMounts map[string]*source.Catalog
}
App 是总装产物。
type AppConfig ¶
type AppConfig struct {
Secrets SecretsConfig `yaml:"secrets"`
Prompts PromptsConfig `yaml:"prompts"`
// Sources 是全局兼容源(直挂 agent 工具面的通用工具,如 fs)。
Sources []SourceConfig `yaml:"sources"`
Catalog CatalogConfig `yaml:"catalog"`
// 执行画像基线(app 层)。model 取代原 default_model。
Profile `yaml:",inline"`
// Stores 是 app 层具名存储实例(全局共享后端,如所有 agent 共用一个
// redis session 实例);agent 层可再声明私有实例。
Stores []StoreInstance `yaml:"stores"`
Retrievers []RetrieverInstance `yaml:"retrievers"`
// DefaultModelLegacy:default_model 已改名 model(执行画像内嵌),
// 旧键装配期报错指路。
DefaultModelLegacy *ModelConfig `yaml:"default_model"`
// 会话状态 / 治理边界的 app 层默认(可选,agent 未声明整块时回落至此)。
Session SessionConfig `yaml:"session"`
Memory MemoryConfig `yaml:"memory"`
Todo TodoConfig `yaml:"todo"`
Approval ApprovalConfig `yaml:"approval"`
Budget BudgetConfig `yaml:"budget"`
StructuredOutput loop.StructuredConfig `yaml:"structured_output"`
// Agents 是 agent 文件路径列表,相对 app.yaml 所在目录。
Agents []string `yaml:"agents"`
Serving ServingConfig `yaml:"serving"`
Channels []ChannelConfig `yaml:"channels"`
Suspend SuspendConfig `yaml:"suspend"`
// Skillpacks 是外部技能包策略(全 app 一份,namespace 里的 use: 链接同样生效)。
Skillpacks SkillpacksConfig `yaml:"skillpacks"`
// Models 是具名模型(skillpack frontmatter `model:` 按名引用)。
Models []NamedModelConfig `yaml:"models"`
Exec ExecConfig `yaml:"exec"`
Observability ObservabilityConfig `yaml:"observability"`
// StateDir 同单文件 Config.StateDir:可写运行状态目录。
StateDir string `yaml:"state_dir"`
// WorkDirLegacy:旧键 work_dir 装配期报错指路 state_dir。
WorkDirLegacy *string `yaml:"work_dir"`
}
AppConfig 是应用级入口(app.yaml):进程级资源与接线板 + 全局默认。 执行画像(Profile)是所有 agent/component 的基线;会话状态与治理边界的 app 层块为可选默认(agent 未声明整块时回落至此)。
type AppSpec ¶
AppSpec 是 LoadApp 的产物:全部文件解析完毕、名字与路径校验通过。 Root 是加载它的只读资源 FS(prompt/skill 等只读子资源从此解析,与配置 同源;见 docs/resource-loading-design.md)。
type ApprovalConfig ¶
type ApprovalConfig struct {
Mode string `yaml:"mode"` // interactive(默认) | auto | deny
loop.ApprovalPolicy `yaml:",inline"` // remember, rules
Store string `yaml:"store"`
StoreConfig map[string]any `yaml:"store_config"`
}
ApprovalConfig 是审批治理模块:模式 + 参数级策略(规则 + 决策记忆); mode 之外的 remember/rules 内联自 loop.ApprovalPolicy。store 槽指定 决策记忆后端(cap://store/approval/<name> 或裸 type):不配留进程内, 配 redis 则"总是允许/拒绝"跨副本生效。
type BudgetConfig ¶
type BudgetConfig struct {
loop.BudgetConfig `yaml:",inline"` // max_model_calls, max_tokens
Store string `yaml:"store"`
StoreConfig map[string]any `yaml:"store_config"`
}
BudgetConfig 是预算治理模块:上限(内联自 loop.BudgetConfig)+ 账目 后端。store 槽(cap://store/budget/<name> 或裸 type)不配时账目留在 进程内(单副本);配 redis 则同一会话跨副本共用一份账目,预算是真正 的分布式硬上限。
type BuildOptions ¶
type BuildOptions struct {
// Interactor 是 agent 的默认交互通道(CLI 场景传 interact.NewCLI());
// IM 通道会在各自会话里覆盖它。
Interactor runctx.Interactor
// ExtraCapabilities 是代码侧构造的能力(local.Func、rpctool、子 agent),
// 以 "local" source 入目录。
ExtraCapabilities []capability.Capability
Logger *slog.Logger
}
BuildOptions 是代码侧的注入点。
type CapabilitiesConfig ¶
type CapabilitiesConfig struct {
Include []string `yaml:"include"`
Exclude []string `yaml:"exclude"`
AskUser *bool `yaml:"ask_user"` // 内置交互能力(默认开,显式 false 关闭)
// GoalCheck 开启目标达成核对(U4.1):多步任务收尾前强制一次"对照原始
// 目标逐条自查"的重生成。**默认关**——真机 A/B 显示强模型 + 中等难度
// 任务上,强制重生成可能丢内容、净负;价值在弱模型/更难/高风险任务上,
// 待 eval 定位后再考虑放开默认。显式 true 开启。
GoalCheck *bool `yaml:"goal_check"`
}
CapabilitiesConfig 是能力选品 + 内置交互能力开关。
type CatalogConfig ¶
type CatalogConfig struct {
MaxRisk string `yaml:"max_risk"` // 准入上限,默认 mutating(dangerous 不入目录)
}
CatalogConfig 是目录准入配置。
type ChannelConfig ¶
type ChannelConfig struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Agent string `yaml:"agent"`
SessionMapping string `yaml:"session_mapping"` // chat | chat_user
ReplyMode string `yaml:"reply_mode"` // text | card | stream(无装饰器时的默认策略)
// Placeholder 是 processing 占位文案(空 = 内置英文默认「⏳ Working…」)。
Placeholder string `yaml:"placeholder"`
// Texts 覆盖面向用户的文案(键 = serving.Texts 字段的 snake_case,如
// placeholder/stopped/approval;空字段回落英文默认)。IM 部署在此配
// 本地化文案。
Texts map[string]string `yaml:"texts"`
// Decorator/OnProgress 按名引用代码注册的扩展(serving.RegisterDecorator /
// RegisterProgressHandler),装配期查名 fail fast。
Decorator string `yaml:"decorator"`
OnProgress string `yaml:"on_progress"`
Config map[string]any `yaml:"config"`
}
ChannelConfig 声明一个 IM 通道绑定。
type Config ¶
type Config struct {
Secrets SecretsConfig `yaml:"secrets"`
Prompts PromptsConfig `yaml:"prompts"`
Sources []SourceConfig `yaml:"sources"`
Catalog CatalogConfig `yaml:"catalog"`
// 执行画像基线(app 层):model 取代原 default_model,reliability/loop/
// digest/steps 为全体执行单元的降级源。
Profile `yaml:",inline"`
// Namespaces 是三层结构的主路径:tools(ns 内共享)→ components
// (执行单元声明)→ skills(对外产品,唯一进目录的编排单元)。
Namespaces []NamespaceConfig `yaml:"namespaces"`
// Skills 是平铺声明的兼容路径,新配置建议用 namespaces。条目二选一:
// 内部声明(prompt/engine/...)或外部引用(use: 链接,见 SkillEntry)。
Skills []*SkillEntry `yaml:"skills"`
Agents []AgentConfig `yaml:"agents"`
// Skillpacks 是外部技能包策略(物化目录/获取策略/pin 政策)。
Skillpacks SkillpacksConfig `yaml:"skillpacks"`
// Models 是具名模型(skillpack frontmatter `model:` 按名引用)。
Models []NamedModelConfig `yaml:"models"`
Exec ExecConfig `yaml:"exec"`
Serving ServingConfig `yaml:"serving"`
Channels []ChannelConfig `yaml:"channels"`
Suspend SuspendConfig `yaml:"suspend"`
Observability ObservabilityConfig `yaml:"observability"`
// StateDir 是可写运行状态目录,当前消费方是 skill 安装(skillpacks
// 物化到 <state_dir>/agent-kit/.skills);file 后端与轨迹路径仍各自
// 显式配置,尚未收口到这里。只读资源(配置/提示词/skill 包)不走
// 这里——它们由资源 FS 承载(见 docs/resource-loading-design.md)。
// 默认链:state_dir → 环境 AGENTKIT_STATE_DIR → $XDG_STATE_HOME/agentkit。
StateDir string `yaml:"state_dir"`
// WorkDirLegacy:work_dir 已拆义为只读根(资源 FS)+ 可写状态(state_dir),
// 旧键装配期报错指路。
WorkDirLegacy *string `yaml:"work_dir"`
// DefaultModelLegacy:default_model 已改名 model(执行画像内嵌),
// 旧键装配期报错指路。
DefaultModelLegacy *ModelConfig `yaml:"default_model"`
// contains filtered or unexported fields
}
Config 是应用的完整声明(单文件形态,兼容路径;多文件形态见 LoadApp: app.yaml + 每 agent/namespace 一个文件)。顶层执行画像(model/loop/ reliability/digest/steps)内嵌自 Profile,是所有 agent/component 的基线。
type DigestProfile ¶
type DigestProfile struct {
Over *int `yaml:"over"`
Truncate *int `yaml:"truncate"`
// DegradeKeep 是暂存后端不可用时的应急保留量(rune,缺省 24000):
// 指针发不出去还只留 truncate 的量 = 不必要的数据损失;完全不截又会
// 炸上下文窗(生产实测单结果 10 万字符)。中小结果在降级态零损失,
// 极端长文仍有物理护栏。
DegradeKeep *int `yaml:"degrade_keep"`
Store string `yaml:"store"`
StoreConfig map[string]any `yaml:"store_config"`
}
DigestProfile 是"大工具结果进上下文前的处理":over 触发消化、truncate 硬 截断兜底、store 暂存后端(供 read_result 取回)。
type ExecConfig ¶
type ExecConfig struct {
// DefaultSandbox 是未显式配 sandbox/command 的 exec 工具的回落沙箱名
// (需 impl/exec/* 空导入注册,如 docker)。
DefaultSandbox string `yaml:"default_sandbox"`
// SandboxConfig 是默认沙箱的构造配置(如 docker 的 image/network/memory)。
SandboxConfig map[string]any `yaml:"sandbox_config"`
// RequireSandbox 开启后禁止宿主直跑:无沙箱可用的 exec 工具装配即 fail fast。
RequireSandbox bool `yaml:"require_sandbox"`
}
ExecConfig 是 app 级脚本执行策略。
type LoopProfile ¶
type LoopProfile struct {
// MaxSteps 是工具调用的轮数上限(一轮 = 一次模型决策 + 一批工具执行;
// react 装配时换算为 eino 的节点步数 2N+1,额外的 1 是收尾作答)。
// 默认 12 轮。yaml 键 max_rounds——名实对齐(内部字段名沿用)。
MaxSteps *int `yaml:"max_rounds"`
// MaxStepsLegacy 已废弃:max_steps 语义即轮数,改名 max_rounds(报错指路)。
MaxStepsLegacy *int `yaml:"max_steps"`
Compaction *loop.CompactionConfig `yaml:"compaction"`
}
LoopProfile 是执行单元的循环控制:迭代上限 + 上下文压缩。compaction 归 loop(而非 session)——它压缩的是"执行单元循环的工作上下文",主 loop 与 component 都有,只有主 loop 额外有 session;归 loop 才能全链降级到 component。
type MemoryConfig ¶
type MemoryConfig struct {
Store string `yaml:"store"` // cap://store/memory/<name> 或裸 type
StoreConfig map[string]any `yaml:"store_config"` // 裸 type 时的就地配置
// ExposeTools 挂载 memory_save/search 工具(长期记忆的读写入口)。
// 原名 tools 与"工具列表"惯用词冲突,已改名(旧键装配期报错)。
ExposeTools bool `yaml:"expose_tools"`
ToolsLegacy *bool `yaml:"tools"` // 已废弃:改 expose_tools(报错指路)
// Scope 是多用户隔离的作用域策略:write 对话写入落点(user 默认 |
// shared | session),read 召回覆盖(缺省 [user, shared])。
Scope MemoryScope `yaml:"scope"`
// Recall 是长期记忆的自动召回(L4):top_k>0 启用,检索策略由后端决定。
Recall struct {
TopK int `yaml:"top_k"`
} `yaml:"recall"`
// Seed 装配期灌入共享池的知识条目(域共享知识的运维写入口)。
Seed []MemorySeed `yaml:"seed"`
}
MemoryConfig 是长期记忆模块:后端、工具挂载、作用域隔离、召回、seed。
type MemoryScope ¶
MemoryScope 是长期记忆作用域。
type MemorySeed ¶
MemorySeed 是共享池 seed 条目。
type ModelConfig ¶
ModelConfig 声明一个模型。
type Mount ¶
type Mount struct {
*NamespaceSpec
Override Profile
}
Mount 是 agent 对一个 namespace 的解析后挂载:namespace 文件 + per-mount 覆盖画像(五级链的最高优)。嵌入 *NamespaceSpec,故 .Name/.Path/ .NamespaceConfig 直接可用。
type NamedModelConfig ¶
type NamedModelConfig struct {
Name string `yaml:"name"`
Provider string `yaml:"provider"`
Config map[string]any `yaml:"config"`
}
NamedModelConfig 声明一个具名模型(顶层 models: 块),供 skillpack frontmatter `model:` 按名引用。
type NamespaceConfig ¶
type NamespaceConfig struct {
Name string `yaml:"name"`
Profile `yaml:",inline"`
// Sources 声明能力供给源(与顶层 sources: 同构);"声明源用 sources、
// 引用工具面用 tools"全库一致。
Sources []SourceConfig `yaml:"sources"`
// Tools 已废弃:源声明改用 sources(装配期报错指路)。
ToolsLegacy []SourceConfig `yaml:"tools"`
Skills []NamespaceSkill `yaml:"skills"`
// Subagents 是本 namespace 声明的 sub-agent(挂载即对 agent 可见,
// 与 skills 同一可见性规则)。
Subagents []SubagentConfig `yaml:"subagents"`
// ——已随概念收敛移除,误写装配期报错指路——
ImportsLegacy []string `yaml:"imports"`
ComponentsLegacy []map[string]any `yaml:"components"`
}
NamespaceConfig 是一个配置命名空间的完整声明。执行画像(loop/reliability/ digest/steps;不含 model)内嵌自 Profile——该 ns 下 component 的画像默认, 覆盖 agent、被 component 覆盖。
type NamespaceFile ¶
type NamespaceFile struct {
NamespaceConfig `yaml:",inline"`
}
NamespaceFile 是 namespace 维度的配置文件(namespaces/<name>.yaml)。 namespace 层可声明执行画像(内嵌自 NamespaceConfig 的 Profile,但不含 model——能力不可自指模型)。
type NamespaceMount ¶
NamespaceMount 是 agent 对一个 namespace 的挂载:路径 + per-mount 覆盖画像。 覆盖画像是五级链里的最高优,且只装执行画像 A 类(component 实际拥有的 配置);model 可在此指定(集成方给该 mount 显式选模型)。
YAML 兼容两种写法:裸字符串(仅路径,无覆盖)或映射(path + 覆盖字段):
namespaces:
- ../namespaces/catalog.yaml # 仅路径
- path: ../namespaces/research.yaml # 路径 + 覆盖
model: {provider: openai, config: {...}}
loop: {max_rounds: 5}
func (*NamespaceMount) UnmarshalYAML ¶
func (m *NamespaceMount) UnmarshalYAML(node *yaml.Node) error
UnmarshalYAML 接受裸字符串(路径)或映射(路径 + 覆盖画像)。
type NamespaceSkill ¶
type NamespaceSkill struct {
Name string `yaml:"name"`
Version string `yaml:"version"`
Description string `yaml:"description"`
Params map[string]capability.ParamDecl `yaml:"params"`
// Prompt 是内联卡的任务书正文(与 from 互斥)。
Prompt prompt.Value `yaml:"prompt"`
// Tools:内联卡 = 直挂宿主的工具引用(tools/<source>/<name|*>);
// from 包 = 在包的 allowed-tools 之上再收紧(交集)。
Tools []string `yaml:"tools"`
// From 集成一个外部 SKILL.md 技能包;须显式 name(命名归属团队)。
From string `yaml:"from"`
Integrity string `yaml:"integrity"`
// Context 是 from 包内部循环的起始上下文(fresh 缺省 | fork)。
Context string `yaml:"context"`
// MaxRounds 是 from 技能包内部循环的轮数覆盖(与平铺 SkillEntry 的
// max_rounds 同义;两条 skillpack 装配路径同一配置面)。
MaxRounds int `yaml:"max_rounds"`
// ——已随编排族移除,误写装配期报错指路——
StepsLegacy []map[string]any `yaml:"steps"`
UseLegacy *string `yaml:"use"`
EngineLegacy *string `yaml:"engine"`
OutputLegacy *string `yaml:"output"`
DeliverLegacy *string `yaml:"deliver"`
StepDefaultsLegacy map[string]any `yaml:"step_defaults"`
}
NamespaceSkill 声明一个 skill(Agent Skills 标准语义),两种形态:
内联卡:name + description + params + prompt——SKILL.md 的配置层 等价物,主循环照指引亲自执行,tools 直挂宿主工具面; 外部包:from 集成一个 SKILL.md 技能包(github.com/...@ver | https://...zip | file:...),隔离子循环执行。
type NamespaceSpec ¶
type NamespaceSpec struct {
NamespaceFile
Path string // 资源 FS 内路径('/' 分隔),亦作源连接缓存键
}
NamespaceSpec 是解析后的 namespace 文件。
type ObservabilityConfig ¶
type ObservabilityConfig struct {
Log bool `yaml:"log"`
TrajectoryPath string `yaml:"trajectory_path"`
}
ObservabilityConfig 是观测配置。
type Profile ¶
type Profile struct {
Model *ModelConfig `yaml:"model"`
Loop LoopProfile `yaml:"loop"`
Reliability ReliabilityProfile `yaml:"reliability"`
Digest DigestProfile `yaml:"digest"`
// StepDefaultsLegacy 已随编排族移除(固定流程下沉宿主 eino compose),
// 误写装配期报错指路。
StepDefaultsLegacy map[string]any `yaml:"step_defaults"`
}
Profile 是执行画像:app/agent/namespace/component 各内嵌一份(YAML inline), per-mount 覆盖亦是同形 Profile,五级就近合并得 component 生效值。
type PromptConfig ¶
type PromptConfig struct {
System prompt.Value `yaml:"system"` // L2 业务 persona
Loop prompt.Value `yaml:"loop"` // L1 框架规约覆盖(默认内置)
}
PromptConfig 是提示词分层模块:L1 框架规约 + L2 业务 persona,均支持 标量:字面量或 cap://prompt/ 前缀引用。
type PromptSourceConfig ¶
type PromptSourceConfig struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Config map[string]any `yaml:"config"`
}
PromptSourceConfig 声明一个提示词供给源。
type PromptsConfig ¶
type PromptsConfig struct {
Sources []PromptSourceConfig `yaml:"sources"`
DefaultLabel string `yaml:"default_label"`
}
PromptsConfig 是 app 级提示词供给模块:供给源 + 默认版本标签。
type ReliabilityProfile ¶
type ReliabilityProfile struct {
ToolTimeout *loop.Duration `yaml:"tool_timeout"`
Retry *loop.RetryConfig `yaml:"retry"`
}
ReliabilityProfile 是执行单元的可靠性:工具单次调用超时 + 模型瞬时错误重试。
type RetrieverInstance ¶
type RetrieverInstance struct {
Name string `yaml:"name"`
Kind string `yaml:"kind"` // session
Type string `yaml:"type"` // bigram | vector | ...
Config map[string]any `yaml:"config"`
}
RetrieverInstance 是一个具名召回器实例声明;session.recall 用 cap://retriever/<kind>/<name> 引用它。
type SecretsConfig ¶
type SecretsConfig struct {
Provider string `yaml:"provider"` // env(默认)| file
Config map[string]any `yaml:"config"`
}
SecretsConfig 声明凭证 provider。
type ServingConfig ¶
type ServingConfig struct {
Addr string `yaml:"addr"`
}
ServingConfig 是 Gateway 配置。
type SessionConfig ¶
type SessionConfig struct {
Window int `yaml:"window"` // 0 = 不启用会话记忆
Store string `yaml:"store"` // cap://store/session/<name> 或裸 type(inmemory/file/...)
StoreConfig map[string]any `yaml:"store_config"` // 裸 type 时的就地配置
// RecordTools 控制本轮工具轨迹随会话持久化的详略:
// summary(默认)| full | off。off 退回只存问答(任务连续性受限)。
RecordTools string `yaml:"record_tools"`
// Recall 是窗口外会话历史的自动召回(L4):top_k>0 启用,retriever 指定
// 检索策略(cap://retriever/session/<name> 或裸 type,缺省 bigram 词法)。
Recall SessionRecall `yaml:"recall"`
}
SessionConfig 是会话短期记忆模块:窗口、后端、轨迹详略、窗外召回。 (上下文压缩 compaction 归执行画像 loop.compaction,主 loop 与 component 共用同一机制,见 LoopProfile。)
type SessionRecall ¶
type SessionRecall struct {
TopK int `yaml:"top_k"`
Retriever string `yaml:"retriever"`
RetrieverConfig map[string]any `yaml:"retriever_config"`
}
SessionRecall 是窗外会话召回配置。
type SkillEntry ¶
type SkillEntry struct {
skill.Declaration `yaml:",inline"`
From string `yaml:"from"` // 外部获取来源:github.com/...@ver | https://...zip | file:...
Use string `yaml:"use"` // 已废弃:外链改用 from(装配期报错指路)
Integrity string `yaml:"integrity"` // sha256:<hex>,可选强校验
Tools []string `yaml:"tools"` // 白名单收紧(∩ allowed-tools)
Context string `yaml:"context"` // from 包内部循环:fresh(默认)| fork
// Model/MaxRounds 是 from 技能包的本地覆盖(内联卡没有内部循环,
// 声明它们装配期报错)。
Model *skill.ModelDecl `yaml:"model"`
MaxRounds int `yaml:"max_rounds"`
}
SkillEntry 是 skills: 列表的一个条目:内部声明(内嵌 skill.Declaration) 或外部引用(use: 链接)二选一。外部形态把市面 SKILL.md 技能包一行集成 进来(装配期物化到 .skills,见 skillpack.go),其余字段作本地覆盖: name 覆盖 ns/名字,model/max_steps 沿用内嵌声明的同名字段,tools 在 包的 allowed-tools 之上再收紧(交集),context: fork 以调用方对话快照 起步(与编排步骤同义)。
type SkillpacksConfig ¶
type SkillpacksConfig struct {
// Dir 覆盖安装目录(相对值以 state_dir 为基准)。默认固定约定:
// <state_dir>/agent-kit/.skills——agent-kit 是 SDK,落盘产物收口在
// 宿主项目的 agent-kit/ 命名空间下(对齐 node_modules/.terraform 心智)。
Dir string `yaml:"dir"`
// Sync:auto(默认,缺失即下载)| require-local(缺失 fail fast,
// 为打包期物化预留的收紧档)。
Sync string `yaml:"sync"`
// AllowUnpinned 放行未锁定版本的 ref(lock 仍会锁死首次解析结果)。
AllowUnpinned bool `yaml:"allow_unpinned"`
}
SkillpacksConfig 是 app 级外部技能包策略。
type SourceConfig ¶
type SourceConfig struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Required bool `yaml:"required"`
Priority int `yaml:"priority"`
Config map[string]any `yaml:"config"`
}
SourceConfig 声明一个能力供给源。
type StoreInstance ¶
type StoreInstance struct {
Name string `yaml:"name"`
Kind string `yaml:"kind"` // session | memory | todo | result | suspend | budget | approval
Type string `yaml:"type"` // inmemory | file | redis | ...(各自后端注册表)
Config map[string]any `yaml:"config"`
TTL loop.Duration `yaml:"ttl"` // 保留时长(todo/result/approval/budget),0=不过期
}
StoreInstance 是一个具名存储实例声明(app 或 agent 层)。模块块的 store 槽用 cap://store/<kind>/<name> 引用它;换后端=改 type、或声明另一实例把 store 指过去;跨 agent 共享=在 app 层声明一次,各 agent 引用同名实例。
type SubagentConfig ¶
type SubagentConfig struct {
Name string `yaml:"name"`
Version string `yaml:"version"`
Description string `yaml:"description"`
Params map[string]capability.ParamDecl `yaml:"params"`
// Prompt 是 persona + 任务书模板,params 以 {name} 占位渲染。
Prompt prompt.Value `yaml:"prompt"`
// Tools 是工具面引用:tools/<source>/<name|*>(本 ns 工具)。
Tools []string `yaml:"tools"`
// Context 是起始上下文:fresh(缺省)| fork(调用方对话快照起步)。
// 心法:先把事实显式写进输入,写不进或写不全才 fork。
Context string `yaml:"context"`
// Deliver 是产出的交付语义(attach|always|direct,缺省=证据)。
Deliver string `yaml:"deliver"`
// Todo 给内部循环挂调用级临时清单(调用结束即弃)。默认关——
// sub-agent 长到需要计划通常是"该拆成结构"的信号。
Todo bool `yaml:"todo"`
// 执行画像 A 类(loop/reliability/digest;不含 model)——sub-agent
// 自己这一层,最近,压过 namespace/agent/app。
Profile `yaml:",inline"`
// ——已移除键,误写装配期报错指路——
EngineLegacy *string `yaml:"engine"`
EngineConfigLegacy map[string]any `yaml:"engine_config"`
ModeLegacy *string `yaml:"mode"`
StepsLegacy []map[string]any `yaml:"steps"`
OutputLegacy *string `yaml:"output"`
ExportLegacy *bool `yaml:"export"`
}
SubagentConfig 声明一个 sub-agent:与主循环同构的隔离子循环 (persona/工具面/画像不同,harness 同一套)。对应 Claude Code 的 .claude/agents/*.md。执行画像(loop/reliability/digest)内嵌自 Profile(不含 model——能力不可自指模型,model 走画像链)。 没有 engine 键:sub-agent 永远运行标准循环(同构)。
type SuspendConfig ¶
type SuspendConfig struct {
Dir string `yaml:"dir"`
Store string `yaml:"store"`
StoreConfig map[string]any `yaml:"store_config"`
// TTL 是挂起记录(轮次/交互/效果日志)的过期时长,缺省 168h(7 天):
// 无人应答的挂起不该在后端永久堆积。具名 store 实例自带的 ttl 优先。
TTL loop.Duration `yaml:"ttl"`
}
SuspendConfig 启用持久化挂起(IM 通道与 HTTP /messages 共用同一 后端):ask_user/审批等待持久化,跨小时/跨天/跨进程重启均可恢复; 未配置时 IM 为进程内阻塞等待,HTTP 用装配时注入的 Interactor。 后端收敛到 store.KV:store 写裸 type(file/redis/...)或 cap://store/suspend/<name> 引用具名实例(多文件 app 层); dir 是 file 后端的简写(等价 store: file + store_config: {dir: ...})。