文档

配置

配置

Memo 使用 config.toml 来管理提供商选择、模型配置覆盖和 MCP 服务器。 本页重点介绍每个键的含义以及 Memo 如何在运行时解析模型行为。

配置文件位置#

默认:

  • ~/.memo/config.toml

如果设置了 MEMO_HOME

  • 配置路径变为 $MEMO_HOME/config.toml

Web 认证配置:

  • 默认路径为 ~/.memo/server.yaml
  • 可通过 MEMO_SERVER_CONFIG 指定自定义路径

配置如何应用#

Memo 运行时使用以下顺序的配置:

  1. 通过 current_provider 选择活跃提供商。
  2. 读取该提供商的 model
  3. model_profiles 解析模型配置覆盖。
  4. context_window 策略解析会话上下文窗口。

TUI 中的 /models 切换会为选定的提供商/模型重新运行此解析。

提供商配置#

最小示例

current_provider = "deepseek"

[[providers.deepseek]]
name = "deepseek"
env_api_key = "DEEPSEEK_API_KEY"
model = "deepseek-chat"
base_url = "https://api.deepseek.com"

多个提供商

current_provider = "deepseek"

[[providers.deepseek]]
name = "deepseek"
env_api_key = "DEEPSEEK_API_KEY"
model = "deepseek-chat"
base_url = "https://api.deepseek.com"

[[providers.openai]]
name = "openai"
env_api_key = "OPENAI_API_KEY"
model = "gpt-4.1-mini"
base_url = "https://api.openai.com/v1"

提供商键

  • current_provider
    • 新会话的默认提供商名称。
    • 必须匹配一个已配置的提供商 name
  • providers.<name>.name
    • /models 中显示的提供商标识符。
  • providers.<name>.env_api_key
    • 用作第一优先级 API 密钥查找的环境变量名称。
  • providers.<name>.model
    • 发送到上游 API 的模型 ID。
  • providers.<name>.base_url(可选)
    • OpenAI 兼容端点。
    • 适用于自定义网关或兼容提供商。

模型配置(覆盖)#

Memo 对模型能力使用保守默认值,并通过本地 config.toml 覆盖来控制请求选项:

[model_profiles.gpt-5]
supports_parallel_tool_calls = true
supports_reasoning_content = true
context_window = 272000

# 提供商特定覆盖,键格式:"<provider>:<model>"
[model_profiles."openai:gpt-5"]
supports_parallel_tool_calls = false

支持的字段

  • supports_parallel_tool_calls
    • 控制 Memo 是否发送 parallel_tool_calls
  • supports_reasoning_content
    • 控制推理内容是否携带在工具调用后续轮次中。
  • context_window
    • Memo 运行时使用的会话提示/上下文硬限制。
    • 必须是正数。

键格式

  • [model_profiles.<model>]
    • 模型级覆盖,适用于所有使用此模型名称的提供商。
  • [model_profiles."provider:model"]
    • 提供商特定覆盖,适用于一个提供商 + 模型对。
    • 因为键中有 :,所以使用引号。

示例:

  • [model_profiles.gpt-5] 适用于任何使用 gpt-5 的提供商。
  • [model_profiles."openai:gpt-5"] 仅在提供商为 openai 且模型为 gpt-5 时适用。

上下文窗口策略#

会话上下文窗口按以下优先级解析:

  1. model_profiles."provider:model".context_window
  2. model_profiles."<model>".context_window
  3. 默认 120000

Memo 在启动时应用此设置,并在使用 /models 切换模型时重新应用。

实际示例

[model_profiles.gpt-5]
context_window = 272000

[model_profiles."openai:gpt-5"]
context_window = 128000

结果:

  • openai:gpt-5 -> 128000
  • 其他使用 gpt-5 的提供商 -> 272000
  • 任何没有 context_window 覆盖的模型 -> 120000

MCP 服务器配置#

本地 Stdio MCP

[mcp_servers.local_tools]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/your/path"]
# 可选
# type = "stdio"
# stderr = "inherit" # 或 "pipe" / "ignore"
# [mcp_servers.local_tools.env]
# FOO = "bar"

远程 Streamable HTTP MCP

[mcp_servers.remote]
type = "streamable_http"
url = "https://your-mcp-server.com/mcp"
bearer_token_env_var = "MCP_TOKEN"
# 可选自定义头部
# http_headers = { "X-Team" = "platform" }
# 或 headers = { "X-Team" = "platform" }

使用 CLI 管理 MCP#

memo mcp list
memo mcp get <name>
memo mcp add <name> -- <command...>
memo mcp add <name> --url <url> --bearer-token-env-var <ENV_VAR>
memo mcp remove <name>

也可使用:

memo mcp help

streamable_http MCP 服务器支持 OAuth 登录/注销:

memo mcp login <name> [--scopes read,write]
memo mcp logout <name>

运行时环境变量#

模型调用必需

  • <provider.env_api_key>:提供商配置中配置的环境变量名,用作第一优先级的 API 密钥查找。
  • OPENAI_API_KEY:当提供商特定密钥缺失时的回退 API 密钥。
  • DEEPSEEK_API_KEY:当提供商特定密钥和 OPENAI_API_KEY 都缺失时的回退 API 密钥。

常用可选

  • MEMO_HOME:覆盖 Memo 主目录。

Skills 发现#

Memo 在启动时自动发现 Agent Skills(SKILL.md)并将可用的 skill 元数据附加到运行时系统提示中。

发现路径

  • 项目范围:项目根目录 .<agent>/skills 目录(例如:.agents/skills.claude/skills.codex/skills
  • 用户范围:$MEMO_HOME/skills(或 ~/.memo/skills
  • 不扫描:Memo 主目录外的 ~/.xxx/skills 隐藏目录

最小 SKILL.md

---
name: doc-writing
description: Generate and update technical documentation.
---

# Doc Writing

Memo 读取 name + description frontmatter,并将每个发现的 skill 暴露给模型:

  • - <name>: <description> (file: <absolute-path-to-SKILL.md>)

用户可以通过在提示中提及 $skill-name 来显式调用(例如:$doc-writing)。

默认激活 Skills

可以持久化默认激活 skill 集合:

# 未设置:默认激活所有已发现 skills
# []:默认不激活任何 skill
active_skills = [
  "/absolute/path/to/.codex/skills/doc-writing/SKILL.md"
]

active_skills 保存的是 SKILL.md 的绝对路径。

高级工具/运行时开关

  • MEMO_SHELL_TOOL_TYPEunified_exec(默认)/ shell / shell_command / disabled
  • MEMO_FS_ALLOWED_ROOTS:文件系统工具额外允许访问的根目录,逗号分隔。
  • MEMO_ENABLE_MEMORY_TOOL=0:禁用 get_memory
  • MEMO_ENABLE_COLLAB_TOOLS=0:禁用子代理工具。
  • MEMO_SUBAGENT_COMMAND:用于生成子代理的命令。
  • MEMO_SUBAGENT_MAX_AGENTS:最大并发运行的子代理数(默认 4)。
  • MEMO_TOOL_RESULT_MAX_CHARS:单个工具结果在省略提示前保留的最大字符数。
  • MEMO_SANDBOX_WRITABLE_ROOTS:逗号分隔的绝对路径,附加到本地写入工具的写入沙箱根目录。

MCP 配置认证

  • <bearer_token_env_var>:如果在 MCP 服务器配置中设置,Memo 会读取此环境变量并为该服务器注入 Authorization: Bearer <token>

注意

  • SHELLUSERUSERNAME 是作为运行时回退读取的系统环境变量;它们不是 Memo 特定的功能开关。

相关#