Agent 配置
wescode 中的 Agent 概念——AI 角色定义、Cell 隔离、记忆命名空间与双层白名单。
Agent 概念
Agent 是 AI 角色的定义,由四个维度组成:
| 维度 | 说明 | 示例 |
|---|---|---|
| 系统提示词 | 定义 Agent 的行为和风格 | "你是一个代码审查专家..." |
| 工具 ACL | 允许/禁止使用的工具 | 禁用 delegate_task |
| 模型 | 使用的 LLM 模型 | gpt-4o |
| 技能白名单 | 可使用的技能列表 | ["code-review", "test-engineering"] |
Agent 与用户的关系
用户发起 Chat
→ 选择 Agent(如 default-coder)
→ Agent 决定:提示词 + 可用工具 + 模型 + 技能
→ 执行 Run
Agent 与 Cell 的关系
Agent 配置是 per-Cell 隔离的:
workspace A (Cell ws-a1b2)
├── Agent: default-coder(A 的配置)
├── Agent: reviewer(A 的配置)
└── Agent: custom-agent-a
workspace B (Cell ws-c3d4)
├── Agent: default-coder(B 的配置,独立于 A)
├── Agent: reviewer(B 的配置)
└── Agent: custom-agent-b
切换 workspace = 切换 Cell = Agent 列表独立。
Agent 记忆命名空间
Agent 是 Cell 内的次级隔离——共享 Cell 物理资源,独立认知配置:
| 命名空间 | 可见性 | 说明 |
|---|---|---|
agent://X/* | 仅 Agent X | Agent 私有记忆 |
cell://* | Cell 内所有 Agent | 共享记忆 |
示例
Agent "coder" 的记忆:
agent://coder/preference → "用户偏好 tab 缩进"
agent://coder/learned → "这个项目用 errors.Wrap"
所有 Agent 共享的记忆:
cell://about_me → "用户名是张三"
cell://env → "macOS 15, Go 1.22, Node 22"
预装 Agent
wescode 默认提供以下预装 Agent(通过 presets/agents/ 配置):
| Agent | 用途 | 特点 |
|---|---|---|
| 默认编程助手 | 通用编程 | 全量工具 + 全量技能 |
| 代码审查 | Code Review | 聚焦审查技能 |
| 测试工程 | 测试编写 | 聚焦测试技能 |
具体预装列表取决于版本,可在设置页查看。
创建自定义 Agent
AgentConfig 字段
type AgentConfig struct {
ID string // Agent 唯一标识
Name string // 显示名称
Description string // 描述
SystemPrompt string // 系统提示词
Model string // 默认模型(可选)
Skills []string // 技能白名单(nil=全量, []=无)
DisabledTools []string // 禁用的工具列表
Temperature float64 // 温度参数
MaxTokens int // 最大输出 token
}
API 端点
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /cells/{id}/agents | 列出 Agent |
POST | /cells/{id}/agents | 注册/更新 Agent |
GET | /cells/{id}/agents/{aid} | 获取单个 Agent |
DELETE | /cells/{id}/agents/{aid} | 删除 Agent |
创建示例
{
"id": "my-reviewer",
"name": "代码审查专家",
"description": "专注于代码质量和安全审查",
"system_prompt": "你是一位资深的代码审查专家。在审查代码时,重点关注:\n1. 安全漏洞\n2. 性能问题\n3. 代码规范\n4. 逻辑错误",
"skills": ["code-review", "investigation"],
"disabled_tools": ["delegate_task", "write"]
}
双层白名单
技能的可用性由两层白名单 AND 生效:
Cell 层
CellSpec.DisabledEngineSkills——禁用 Cell 内的引擎技能:
spec := wesgine.CellSpec{
DisabledEngineSkills: []string{"delegation"}, // 禁用委派技能
}
Agent 层
AgentConfig.Skills——Agent 自身的技能白名单:
agent := AgentConfig{
Skills: []string{"code-review", "test-engineering"}, // 只允许这两个
}
AND 生效逻辑
某技能是否可用?
= Cell 没有禁用它 AND Agent 白名单包含它
Cell 禁用 "delegation" → 所有 Agent 都不能用(无论 Agent 白名单是否包含)
Agent 白名单只有 "code-review" → 该 Agent 不能用其他技能(即使 Cell 允许)
特殊值:
Agent.Skills = nil → 全量(使用 Cell 允许的所有技能)
Agent.Skills = [] → 无(不使用任何技能)
Agent 在不同模式下的行为
| 模式 | Agent 作用 | 工具集 | 技能 |
|---|---|---|---|
| Sidebar Chat | 完整 Agent 角色 | 全量可用工具 | 全量可用技能 |
| Inline Command (Ctrl+K) | 简化模式 | Block 操作工具 | 按 Agent 白名单 |
| Selection Action | 单次调用 | 无 | 无 |
| Ghost Write | 不使用 Agent | 无(补全端点) | 无 |
Tier E vs Tier C 技能
Agent 可使用两种层级的技能:
| 层级 | 来源 | 生命周期 | 可编辑 |
|---|---|---|---|
| Tier E | wesgine 引擎 embed | 随二进制 | ❌ 只读 |
| Tier C | wescode 预装 / 用户安装 | per-Cell | ✅ 可编辑 |
Tier E 技能(约 7 个)
引擎内置:agentic-retrieval / agentic-execution / plan / delegation / memory-strategy / investigation / skill-authoring
Tier C 技能(wescode 26 个预装)
backend/presets/skills/
├── code-review/
├── test-engineering/
├── ...
└── (26 个编程业务技能)
通过 cell.Skills().InstallFromDir 装到 workspace Cell。
wescode 禁止同名覆盖 Tier E 技能。产品 delta 必须用不同名称(如 wescode-retrieval)。
最佳实践
- 使用默认 Agent 开始:预装 Agent 适合大多数场景
- 按任务创建专用 Agent:审查、测试、重构各一个
- 善用技能白名单:减少不必要的提示词干扰
- 理解隔离:Agent 配置随 workspace 切换