---
title: 3. 定义 Agent 行为
description: 用 Prompt、Skills、Memory 调教你的 Agent
---

到这一步你应该已经有一个能跑的 Agent（如果还没有，先看 [指南 2](/guides/2-first-agent/)）。这一章讲怎么真正"调教"它——让它有特定的角色、按你想要的方式做事、知道该用哪些工具、记住该记的事。

## 配置入口

Workspace 顶部的 **Agent 配置** 按钮打开配置弹窗，左侧导航有 5 个区域：

| 区域 | 作用 |
|---|---|
| 模型 | 选大模型和小模型 |
| Prompt | 写系统 Prompt（最重要的一项） |
| Skills | 勾选要启用的 skill |
| 设置 | Agent 引擎的高级运行参数 + MCP 配置 |
| 资源 | Agent 容器的 CPU / 内存 / 存储 |

加上独立的 **Memory** tab——它在 Workspace 顶部 tab 栏，不在配置弹窗里。

下文按重要性挨个讲。

## 模型：Agent 的大脑

**模型** 区域决定 Agent 用哪个大模型思考。要选的字段：

- **Agent 类型** ——Claude Code 或 Codex。Claude Code 走 Anthropic 协议，Codex 走 OpenAI 协议。这一项决定你后面能选哪些供应商
- **API 供应商** ——上一章准备好的那个
- **模型** ——具体的模型名（比如 `claude-sonnet-4-20250514` 或 `gpt-5.4`）
- **小模型** ——供 Agent 内部做轻量操作用（文件搜索、代码索引等）。默认与主模型相同；想省钱可以单独换成更便宜更快的小模型

> **切换 Agent 类型会重启容器**——所有运行中的 Session 会被中断。建议先停掉 Session 再切。

模型不是一选定终身。复杂任务用强模型，简单批量任务用快模型，同一个 Workspace 后期换模型也很方便，Prompt 和 Skills 都不用动。

## Prompt：行为的核心

系统 Prompt 是 Agent 行为里最要紧的一件。同一个模型，Prompt 不同，Agent 表现可以判若两人。

**Prompt** 区域里有两种来源：

- **自己写** ——直接在编辑框里写
- **从资源库引用** ——选择一份团队或自己已经维护好的 Prompt。引用的方式下，资源库里更新 Prompt，所有引用方自动同步

第一次建议自己写，熟悉了再考虑放到资源库里复用。

### 一份可用 Prompt 的基本结构

好的系统 Prompt 一般包含 4 个部分：

1. **角色定义** ——你是谁、你的职责范围
2. **做事步骤** ——遇到典型任务时怎么一步步处理
3. **输出格式** ——回复用什么语言、什么结构、用不用 Markdown
4. **约束** ——什么不能做、什么必须确认、什么必须优先

举个最小例子：

```text
你是一个翻译助手，专注把中文文档翻译成英文。

做事步骤：
1. 收到原文后，先识别文档类型（技术、营销、法律等）
2. 如果是技术文档，专有名词不翻译，保留英文原词
3. 给出翻译，逐段对照原文

回复语言：英文，保持原文的段落结构和 Markdown 格式。

约束：
- 遇到无法理解的术语，先问用户确认
- 不要自己编造原文里没有的内容
```

这只是个起点。真实 Agent 的 Prompt 通常更长，包含具体的工具用法、典型任务的处理原则、特殊场景的兜底方案。

### Prompt 编写原则

**先具体，再抽象。** 写"你是一个 X 助手"远不如写"你的工作是把某类事件的失败原因讲清楚，并判断要不要自动重试"——后者一句话就把范围、目标、决策点都说清了。

**给典型流程，不给穷举。** 不要试图列出 Agent 可能遇到的所有情况。挑 2–3 个最典型的任务，描述完整步骤，让 Agent 类比泛化。

**约束要写在 Prompt 里，不要等出问题才说。** "不要执行破坏性操作"、"修改前必须先 dry-run"、"遇到不确定的事要问用户"——这些应该在第一版就写进去，而不是等 Agent 翻车了才补。

**用真实 Session 迭代。** 写完第一版 Prompt 后跑几个真实任务，看 Agent 卡在哪儿、误解了什么，回头改。一份成熟的 Prompt 通常要迭代 5–10 轮才到位。

## Skills：可复用的能力封装

Skills 是封装好的"做某类事情的方法"——一个目录，里面有一份描述文件加若干工具脚本。启用后，Agent 启动时自动加载，知道有这个能力可用。

打开 Agent 配置的 **Skills** 区域，会看到所有可用的 skill 列表。勾选要启用的，保存。Agent 重启后生效。

### Skill 的启用时机

- 这件事**有相对固定的步骤** ——比如调用某个 API 的标准用法、按某种规范处理某类文件
- 这件事**只在某些 Agent 里需要** ——比如翻译类 Agent 需要术语查询的 skill，但代码 review Agent 用不上，没必要默认加载
- **已经有人封装好了** ——直接勾选用，不用重新教 Agent

如果你需要的 skill 还不存在，可以自己创建一份上传到资源库。这部分属于"扩展"和"规模化"的话题，详见 [指南 7：规模化运营](/guides/7-operate-at-scale/)。

## MCP：外部工具接入

MCP 是另一种让 Agent 调用外部工具的方式——通过协议连接一个独立运行的服务，那个服务暴露的工具就成了 Agent 可调用的能力。

在 Agent 配置的 **设置** 区域里有一段 **MCP 配置**，可以填入 MCP 服务的连接信息（命令或 URL）。具体怎么部署和接入 MCP 服务，详见 [指南 4：扩展 Workspace](/guides/4-extend-workspace/)。

## Memory：跨 Session 的记忆

默认每个 Session 是独立的——上一次对话学到的东西，下次不会自动记得。Memory 解决这个问题。

Neutree Agent Platform 用 **记忆库（Memory Store）** 来管理跨 Session 的记忆。它是一个独立的资源，可以挂给一个或多个 Workspace。完整设计见 [记忆库概念页](/concepts/memory-store/)，这里只讲怎么用。

### 入口位置

两个地方：

- **全局管理 → 记忆库**——账号级入口。在这里看到你所有的记忆库，新建库、编辑条目、看版本历史
- **Workspace 顶部 Memory tab**——当前 Workspace 视图。看到本 Workspace 挂了哪些库，可以临时挂载或卸载

### 库与 Workspace 的解耦关系

新建 Workspace 时，系统自动创建一个同名记忆库并挂给它——所以默认情况下你看到的就是"一个 Workspace 一个库"。但关系是解耦的：

- **一个 Workspace 可以挂多个库**——一个用户级库（语言偏好等通用记忆）+ 一个 Workspace 专属库就是常见组合
- **一个库可以挂给多个 Workspace**——做跨 Workspace 协同时把同一份记忆共享出去

迁移说明：旧版"每个 Workspace 一份单一 Markdown"的记忆，已经被自动迁到对应同名库里作为第一条记录。

### 记录结构与四种类型

每条记忆是库里的一条独立记录，必选一个类型：

| 类型 | 倾向 | 例子 |
|---|---|---|
| **user** | 用户全局的个性、偏好 | "默认用中文回复"、"代码风格遵守 PEP 8" |
| **feedback** | 当前对话里得到的即时反馈 | "回复时简洁一点"、"不要中英混杂" |
| **project** | 任务/项目级的稳定知识 | "这个项目用 PostgreSQL，主表在 `app_user` 库下"、"上次 `DROP TABLE` 翻车过，之后删表都先确认" |
| **reference** | 外部资料的指针 | "回答合规问题前先读 https://internal-wiki/compliance" |

每条记录都带**版本**，可追溯可回滚。

### 不适合放入记忆库的内容

- **会变的状态**——今天的待办、当前的环境变量。这些应该写文件或动态查询
- **机密**——API key、密码。请用 [凭证](/guides/1-setup/#凭证agent-访问资源的钥匙)
- **巨长的内容**——完整的代码库说明、几十页的规范文档。索引会进入每次对话的 context，太长会浪费 token；正文长内容应该放到子文件，让 Agent 按需读

### Agent 的读写方式

对 Agent 来说，记忆库就是它容器里的一个**目录**——挂在 `/mnt/memory/<store-name>/`。它用普通的文件操作读写：`cat`、`grep`、`head`、bash pipe 都能用，不需要学专用 API。

每个库的根目录下有一份 `MEMORY.md`（大写）作为**索引**——Agent 自主维护，平台会把它内联进系统 prompt。所以 Agent 一启动就能看到当前挂了哪些库、各自大纲是什么；要看具体内容再按路径读子文件。

当 Agent 在对话中说"我把这件事记下来了，下次会注意"，它就在调这套文件操作。

### 推荐的初始整理

如果你的 Workspace 是从旧版迁过来的，第一条记忆通常是一整段陈年笔记。直接对 Agent 说：

> "目前的记忆是从旧版本迁移上来的，按照最佳实践重新整理一下。"

Agent 会自己拆分、归类、维护 `MEMORY.md` 索引。整理完再用就顺很多。

## 设置和资源

剩下两项一般保持默认即可：

- **设置** ——Agent 引擎本身的高级参数（Claude Code 写入 `.claude/settings.json`，Codex 追加到 `~/.codex/config.toml`），以及 MCP 配置。打开后右侧会显示当前 Agent 类型对应的字段说明
- **资源** ——Agent 容器的 CPU、内存、存储空间。默认配置覆盖大部分场景，只有当 Agent 需要处理大文件或运行重型工具时才需要往上调

## 最小迭代节奏

刚开始定义 Agent 行为时，建议这个顺序：

1. 选好模型
2. 写一个能让它**做对一类典型任务**的 Prompt
3. 用真实 case 跑几次，看哪里需要补充——回头改 Prompt
4. 重复 3。等 Prompt 基本稳定后，再考虑加 Skills 和 MCP
5. 等这一个 Workspace 真的好用，把 Prompt 抽到资源库，让其他 Workspace 也能引用

避免一开始就堆 Skills 和 MCP。先把 Prompt 调对，比配 10 个 skill 都重要。

## 开启 Builder Mode

[Builder Mode](/concepts/builder-mode/) 让你在对话里直接说"把 prompt 改清楚一点"、"加个每天 9 点的 schedule"，Agent 自己改、你点批准，不用回 UI 表单填字段。需要时把它打开。

**入口**：Workspace 设置 → **MCP** tab → **Platform** 卡片 → **Builder 模式** 下拉框。

三个选项：

| 选项 | 范围 | 能力 |
| --- | --- | --- |
| **未启用** | 关闭 | Agent 不会拿到任何 builder 工具 |
| **本 workspace** | 当前 Workspace 自己 | 改 system prompt 来源、启停 skills、新建/改/删 commands 和 schedules、改模型/provider/agent 类型、重命名、调可见性 |
| **账号范围** | 你账号下的跨 Workspace 资源 | 管理 Prompt 资源库（创建/编辑/删除） |

两个范围是互斥的——一次只能选一个。「账号范围」目前 v1 只放开了 Prompt 资源库，未来会扩展到其他账号级资源。

无论选哪个范围，开启后 Agent 都自动具备一组**只读**能力，用来作为提议的依据：

- 读你账号下可见的 Prompt 资源库、Skills、Providers
- 读当前 Workspace 的配置（prompt 来源、模型、启用的 skills 等）
- 读当前 Workspace 的 schedules 和 commands
- 拉历史 session 的完整对话用于回顾分析（按需下载 JSONL）

范围选项控制的是 **能写什么**，读这一层是共享的——这样 Agent 不论开哪一档都能"看清现状再提议"。

选好保存——下次发消息时，Agent 就能看到对应的工具。打开后你也不用记任何指令，**直接用自然语言描述需要的改动**就行：

> "看看最近 5 个聊天，分析我的 system prompt 哪里让你卡住，提议改进。"

Agent 会把改动以卡片形式发到对话里，你看完点 *批准* 或 *拒绝*。具体能做什么、怎么用，回 [Builder Mode 概念页](/concepts/builder-mode/) 看完整说明。

## 接下来

- 想给 Agent 接更多外部能力（MCP 服务、自定义 tab、自定义命令）→ [指南 4：扩展 Workspace](/guides/4-extend-workspace/)
- 想让 Agent 不止靠人工对话触发 → [指南 5：触发 Agent](/guides/5-trigger-agents/)
