mcpField
C
Convex Agents Context

Convex Agents Context

github.com/sstoboAgent 工作流24197 次安装40 周前更新
代码仓库

关于 Convex Agents Context

Convex Agents Context 技能介绍如何调整 Agent 的上下文,包括跨线程搜索、记忆注入、摘要和消息过滤,面向使用 Convex Agents 构建 Agent 的开发者。

主要功能

  1. 01配置默认上下文选项
  2. 02按调用覆盖上下文
  3. 03跨线程搜索消息
  4. 04自定义上下文处理器
  5. 05手动获取上下文

适用场景

  1. 01控制上下文长度以减少 token 溢出
  2. 02将用户记忆和资料注入提示词
  3. 03继续长对话前先生成摘要
  4. 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