关于 Convex Agents Context
Convex Agents Context 技能介绍如何调整 Agent 的上下文,包括跨线程搜索、记忆注入、摘要和消息过滤,面向使用 Convex Agents 构建 Agent 的开发者。
主要功能
- 01配置默认上下文选项
- 02按调用覆盖上下文
- 03跨线程搜索消息
- 04自定义上下文处理器
- 05手动获取上下文
适用场景
- 01控制上下文长度以减少 token 溢出
- 02将用户记忆和资料注入提示词
- 03继续长对话前先生成摘要
- 04过滤敏感或无关消息
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sstobo/ convex-skills --skill convex-agents-context安装后在 Claude Code 中输入/convex-agents-context确认已加载。
详细介绍
用途
默认情况下,Agent 会将最近的消息作为上下文。本技能介绍如何自定义该行为,以实现跨线程搜索、记忆注入、摘要和过滤等高级模式。
何时使用本技能
- 限制上下文窗口以防止 token 溢出
- 跨多个线程搜索相关上下文
- 将记忆或用户画像注入到每个提示词中
- 在继续之前对长对话进行摘要
- 过滤掉敏感或不相关的消息
- 添加少样本示例以引导大模型
配置默认上下文选项
const myAgent = new Agent(components.agent, {
name: "My Agent",
languageModel: openai.chat("gpt-4o-mini"),
contextOptions: {
recentMessages: 50,
excludeToolMessages: true,
searchOptions: {
limit: 10,
textSearch: true,
vectorSearch: false,
},
},
});
按调用覆盖上下文
export const generateWithCustomContext = action({
args: { threadId: v.string(), prompt: v.string() },
handler: async (ctx, { threadId, prompt }) => {
const result = await myAgent.generateText(
ctx,
{ threadId },
{ prompt },
{
contextOptions: {
recentMessages: 20,
searchOptions: {
limit: 5,
textSearch: true,
vectorSearch: true,
},
},
}
);
return result.text;
},
});
跨线程搜索
export const generateWithCrossThreadContext = action({
args: { threadId: v.string(), userId: v.string(), prompt: v.string() },
handler: async (ctx, { threadId, userId, prompt }) => {
const result = await myAgent.generateText(
ctx,
{ threadId, userId },
{ prompt },
{
contextOptions: {
searchOtherThreads: true,
searchOptions: {
limit: 15,
textSearch: true,
vectorSearch: true,
},
},
}
);
return result.text;
},
});
自定义上下文处理器
完全自定义上下文:
const myAgent = new Agent(components.agent, {
name: "My Agent",
languageModel: openai.chat("gpt-4o-mini"),
contextHandler: async (ctx, args) => {
const userMemories = await getUserMemories(ctx, args.userId);
const examples = getExamples();
return [
...userMemories,
...examples,
...args.search,
...args.recent,
...args.inputMessages,
];
},
});
手动获取上下文
在不调用大模型的情况下获取上下文:
import { fetchContextWithPrompt } from "@convex-dev/agent";
export const getContextForPrompt = action({
args: { threadId: v.string(), prompt: v.string() },
handler: async (ctx, { threadId, prompt }) => {
const { messages } = await fetchContextWithPrompt(ctx, components.agent, {
threadId,
prompt,
contextOptions: {
recentMessages: 20,
searchOptions: { limit: 10, textSearch: true },
},
});
return messages;
},
});
核心原则
- 默认上下文已足够:大多数用例使用默认值即可
- 搜索可提升相关性:对长对话启用
- 跨线程需要 userId:在搜索多个线程时提供
- 上下文处理器功能强大:可用于记忆、示例、特殊格式化
- 最近的消息优先:在上下文顺序中,搜索之后使用
后续步骤
- 参见 rag 了解知识库上下文注入
- 参见 fundamentals 了解 Agent 设置
- 参见 rate-limiting 了解 token 管理
评论
支持 Markdown