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 XAgent 私有记忆
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 Ewesgine 引擎 embed随二进制❌ 只读
Tier Cwescode 预装 / 用户安装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)。


最佳实践

  1. 使用默认 Agent 开始:预装 Agent 适合大多数场景
  2. 按任务创建专用 Agent:审查、测试、重构各一个
  3. 善用技能白名单:减少不必要的提示词干扰
  4. 理解隔离:Agent 配置随 workspace 切换