TencentDB Agent Memory 的两份 gateway 配置逐字段对照

2026-08-16

TencentDB-Agent-Memory 这个仓库的 MemoryCore/ 目录时,最容易踩空的一步是配置文件:根目录下并排放着两个名字很像的 YAML —— tdai-gateway.yamltdai-gateway.standalone.yaml。名字里都有 standalone,内容却不是一回事。截至 2026-08-16 我们在快照里实读,前者 165 行,后者 97 行。

先把仓库状态交代清楚,因为这直接决定你看到的是不是同一份文件:这个仓库的默认分支是 feat/server_team,不是 main 也不是 master,本文引用的所有路径都在这个分支上。MemoryCore/package.json 里的 version2.0.0-beta.1,仍处于 beta 阶段,参数和字段随版本变动,下面的每一个默认值都要按你手上那份仓库的实际内容再核一遍。

两份文件各自的自我介绍

两份文件开头的注释就写明了定位,这是最直接的判据。

tdai-gateway.yaml 第 2 行的标题注释写的是「默认配置(Standalone + Skill)」;同一份文件 :7 的注释里给出了 Skill 模块的落盘目录约定 {baseDir}/skills/<name>/SKILL.md + files/——也就是说,它是把 Memory 引擎与 Skill 模块写在同一份配置里的那一份。这条落盘约定我们只抄到了配置注释,没有去核对应的写盘代码。

tdai-gateway.standalone.yaml 第 4-5 行写的是「Standalone 单机版配置」「零外部依赖 (不需要 Redis/Shark)」。

所以这两份的关系不是「精简版 / 完整版」那么简单:带 .standalone 后缀的那份反而是更小的那份,而不带后缀的 tdai-gateway.yaml 才是叠了 Skill 模块的那份。名字容易读反,这一点值得先记住。

完全相同的那一半

把两份逐字段对齐之后会发现,Memory 引擎的主体参数两边是一模一样的,包括数值:

字段tdai-gateway.yamltdai-gateway.standalone.yaml
deployMode / stateBackendstandalone / local(:23-24)同(:8-9)
server.port / host8420 / 127.0.0.1(:27-28)同(:12-13)
data.baseDir~/.memory-tencentdb/memory-tdai(:32)同(:16)
memory.capture.enabledtrue(:49)true(:30)
memory.extractionenabled:trueenableDedup:truemaxMemoriesPerSession:20(:52-54)同(:33-35)
memory.personatriggerEveryN:50maxScenes:15(:57-58)同(:38-39)
memory.pipelineeveryNConversations:5enableWarmup:truel1IdleTimeoutSeconds:600l2DelayAfterL1Seconds:90l2MinIntervalSeconds:900l2MaxIntervalSeconds:3600(:61-66)同一组同值(:42-47)
memory.recallenabled:truemaxResults:5scoreThreshold:0.3strategy:"hybrid"timeoutMs:5000(:69-73)同(:50-54)
memory.storeBackendsqlite(:76)sqlite(:59)
memory.embedding.provider"none"(:79)同(:72)
memory.bm25enabled:truelanguage:"zh"(:87-89)同(:80-82)

这张表的用法是:**如果你要改的是上面这些字段,选哪一份模板起手都不影响结果。**真正需要你先分清版本的是下面那几段。另外提醒一句,memory.embedding.provider 两边默认都是 "none"tdai-gateway.yaml:79 的行内注释原文写「默认关闭向量搜索, 仅用 BM25」——也就是说,开箱模板走的是关键词路径,不是向量路径。

真正不同的四类

一、LLM 接入的四行

这是两份文件里唯一同名字段取不同值的一组:

  • llm.baseUrltdai-gateway.yaml:38https://api.lkeap.cloud.tencent.com/v1standalone:20https://api.openai.com/v1
  • llm.model:40deepseek-v3.2standalone:22gpt-4o
  • llm.maxTokens:4132000standalone:234096
  • llm.timeoutMs:42300000standalone:24120000

这四行是模板里预填的示例值,不是「推荐值」,也不代表任何一个服务端点的可用性——该填什么取决于你自己的接入方式,项目没有给通用值。我们没有部署过任何一个模块,也没有向任何端点发过请求,这里只陈述文件里写着什么。

二、只在 tdai-gateway.yaml 里出现的四段

这是两份文件体量差 68 行的主要来源:

  1. memory.promptMode: code:46)——这个键在 standalone 版里完全不存在
  2. skill 整段(启用状态)tdai-gateway.yaml:95enabled: true,下挂 routing.mode:"bm25"searchTopK:20(:104-105),extraction.enabled:truemaxIterations:16(:112-113),extraction.queuebackend:"local"keyPrefix:"tdai"resultTtlSeconds:86400lockTtlMs:600000maxRetries:2retryBackoffsMs:[5000,15000](:119-124),以及 resources.maxResourceSizeBytes:5000000(:130)。
  3. observability(:138-151):otel.enabled:falseclickhouse.enabled:falsekafka.enabled:falselangfuse.enabled:true 加上 ${LANGFUSE_HOST:-} 这类环境变量占位。
  4. metadata(:154-165):maxUsersPerInstance:500maxTeamsPerInstance:100store.mongoUri(环境变量占位)、store.mongoTransactions:truesystemUser.memory.*

后两段在 standalone 版里一行都没有。

三、只在 standalone 版里出现的一段

tdai-gateway.standalone.yaml:57-58 用两行注释解释了 storeBackendsqlitetcvdb 两个取值,紧接着 :61-69 给了一整段被注释掉的 tcvdb 示例:urlusername:"root"apiKeydatabaseembeddingModel:"bge-large-zh"timeout:10000

tdai-gateway.yaml没有这段示例。所以如果你要照着模板改 tcvdb,参照物只在 standalone 那份里。

四、server.apiKey 的处理方式不一样

tdai-gateway.yaml:29 有这个键,但被注释掉了,注文写的是「不填则所有 v2 接口默认开放(仅本机)」。而 tdai-gateway.standalone.yamlserver 段里这个键完全不出现,连注释形态都没有。

skill 段在 standalone 版里也是整段被注释掉的(:88-98),:87 的注文写「可选,默认关闭」,并提示可以用环境变量 TDAI_SKILL_ENABLED=true 启用。

三处需要单独拎出来看的差异

写到这里,把「配置里出现 ≠ 功能可用」这条规矩落到具体行上。

**第一处:tdai-gateway.yaml 自己标注了哪些字段没接线。**这份文件里有三段自述性质的注释,是原样记录的素材::106 写「以下为预留字段:resolver 有默认值但运行时暂无消费者,保持默认即可」,下挂 hybridAlphacharBudgetPercentfastPathMinNameLength:115toolCallThreshold: 10 后面直接注「预留字段,暂无消费者」;:131-133 写「以下为未接线字段,已从活跃配置移除」,点名 allowExecutable(注文写「本意为可执行资源安全开关,但未传入 SkillResourceStore,不拦截」)与 downloadDir(注文写「资源读取走内存返回,无消费者」)。另有 :116-117 说明 headChars / tailChars 「在 service 模式的 per-instance extractor 路径不透传,因此不在 yaml 暴露」。

**第二处:allowExecutable 在两份文件里的口径不一致。**上面那条注释说它已从活跃配置移除,而 tdai-gateway.standalone.yaml:98(该文件最后一行)的注释示例里仍然写着 # allowExecutable: false。两处位置都已给出,以你实读的仓库状态为准。

**第三处:l2DelayAfterL1Seconds 在 yaml 与 schema/代码之间对不上。**两份 gateway yaml 都写 90tdai-gateway.yaml:64tdai-gateway.standalone.yaml:45),而插件配置 schema 里的默认值是 10openclaw.plugin.json:76),代码侧 src/config.ts:566 也是 l2DelayAfterL1Seconds ?? 10SKILL.md:100 的推荐模板同样给 10。同组的其它 pipeline 字段两边是一致的。这里只陈述四处位置与各自的取值。

顺带一提:还有第三份模板被提到过

README.md:216 提到过一份 tdai-gateway.proxy.yaml,原文写它是「LLM access through an OpenAI-compatible proxy」;tdai-gateway.yaml:36 的注释也写「见 tdai-gateway.proxy.yaml 或 docs/llm-via-proxy.md」。而我们在 2026-08-16 的快照里按 tdai-gateway* 检索,只返回两个文件,就是本文对照的这两份;按 llm-via-proxy* 检索无结果。同样只陈述这个差异。

容器里读的是哪一份

如果你走的是镜像这条路,那么「选哪份 yaml」这件事还叠了一层环境变量。MemoryCore/Dockerfile 共 164 行,运行期段落(:144-148)里设了 TDAI_GATEWAY_CONFIG=/data/config/tdai-gateway.yamlTDAI_GATEWAY_HOST=0.0.0.0TDAI_DATA_DIR=/data/tdai-memory,另外 :150EXPOSE 8420。也就是说容器默认读的是挂载进 /data/config/ 的那份,文件名按不带 .standalone 后缀的写法。

同一份 Dockerfile 的 :154-155 有一段注释专门解释了为什么 TDAI_GATEWAY_PORT 故意不写进 ENV:一旦它成为镜像环境变量,就会盖掉挂载配置里的 server.port。这提示的是环境变量与 yaml 是两层,改端口时要先看清这一层关系。健康检查那行(:156-157)打的是 http://127.0.0.1:${TDAI_GATEWAY_PORT:-8420}/health,兜底端口同样是 8420。

你该拿哪一份起手

不给推荐,只给判定动作,你按自己的处境往下走:

  • **你要不要 Skill 模块?**要 → tdai-gateway.yamlskill.enabled 已经是 true;不要 → standalone 版里这段本来就是注释掉的。
  • **你要不要 observability 与 metadata 两段?**要 → 只有 tdai-gateway.yaml 里有可照抄的字段结构;不要 → standalone 版根本没这两段,少一层需要理解的配置面。
  • **你要不要改 tcvdb?**要 → 唯一的字段示例在 standalone 版 :61-69
  • **你要改的字段在上面那张「完全相同」的表里吗?**在 → 两份都行,别为选模板纠结。

最后一件必须说清楚的事:server.apiKey 在两份模板里默认都不生效。代码侧 src/gateway/server.ts:1116-1129verifyAuthserver.apiKey 未配置时直接 return "ok",注释写的是 auth disabled — default behaviour;同仓 Dockerfile:146 默认把 TDAI_GATEWAY_HOST 设为 0.0.0.0;而 README.md:204 的环境变量表里写 TDAI_GATEWAY_API_KEY 对非回环绑定是 requiredserver.ts:739-746 在「非回环且未开鉴权」时会打一条 logger.warn,文案是「Bind to 127.0.0.1, or set TDAI_GATEWAY_API_KEY, before continuing.」,我们没有在仓库里找到「未设 API Key 且绑非回环则拒绝启动」的实现。这几处位置都在上面列出来了,改配置前请自己去核一遍。这个项目会采集并存储团队的对话、文档与代码,属于敏感数据,网络暴露面怎么处理请按你自己的合规要求评估。

延伸阅读


本文依据 TencentDB Agent Memory 官方仓库(github.com/TencentCloud/TencentDB-Agent-Memoryfeat/server_team 分支上的 README、INSTALL、CHANGELOG、ROADMAP 与四个模块的源码整理, 核对日 2026-08-16,对应仓库快照 97f9465。该仓库的默认分支即为 feat/server_team。 本文内容为仓库源码与文档口径,我们没有部署、也没有运行过该项目的任何一个模块, 因此不涉及运行效果、检索质量与性能的任何描述。 该项目主模块处于 beta 阶段、其余模块版本号仍为 0.1.0,参数与接口随版本变动,请以仓库最新内容为准。 该项目会采集并存储团队的对话、文档与代码,属于敏感数据,是否使用请结合自身合规要求评估。 安全与合规相关做法请结合自身环境评估,本文不构成安全方案建议。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。