DeepTutor v1.4.8 技术解读:把 Partner 接入 My Agents 实时咨询,并为每个 Partner 建立私有长期记忆

发布时间:2026/11/5 10:34:25

DeepTutor v1.4.8 技术解读:把 Partner 接入 My Agents 实时咨询,并为每个 Partner 建立私有长期记忆 DeepTutor v1.4.8 技术解读把 Partner 接入 My Agents 实时咨询并为每个 Partner 建立私有长期记忆【免费下载链接】DeepTutorDeepTutor: Lifelong Personalized Tutoring. https://deeptutor.info/.项目地址: https://gitcode.com/GitHub_Trending/dee/DeepTutor本文基于 assets/releases/past_releases/ver1-4-8.md 官方发布说明整理与扩写并结合当前仓库源码deeptutor/下 partner、subagent、builtin tools 等模块逐条印证实现原理。2026 年 6 月 18 日发布的 DeepTutor v1.4.8是对 v1.4.7 的一次聚焦跟进在My Agents中你不仅能连接本机的 Claude Code / Codex 等本地 CLI 智能体还能把属于自己的Partners伙伴当作已连接智能体接进来在聊天中直接咨询它同时每个 Partner 从借用主人共享记忆升级为拥有独立私有记忆的完整主体。读完本文你将掌握Partner 如何作为连接型智能体运行、consult_subagent与单会话线程化背后的调用链、partner_read / partner_memorize / partner_search三件套强制挂载的分割记忆模型机制以及从 v1.4.7 平滑升级的注意事项。版本背景v1.4.8 解决什么问题DeepTutor 中的 Partners 是一类具有独立人设persona、知识库library与技能skills的长期助手通常通过 IM 渠道接入。在 v1.4.7 及之前Partner 的长期记忆实际上读写的是主人的共享记忆owners shared memory。v1.4.8 做了两件关键的事情把 Partner 变成可被咨询的 Agent——My Agents 列表中现在与本地 Claude Code / Codex 并列展示你的 Partners选中后整轮对话经由同一个consult_subagent工具路由到 Partner 自己的对话回路把 Partner 的记忆从主人身上切分出来——每个 Partner 在自己的 workspace里维护独立长期记忆主人的共享记忆降级为只读上下文。此次变更非破坏性、零迁移主人的记忆原样保留且仍可被读取升级后无需任何操作。功能一把 Partner 作为已连接 Agent 实时咨询1.1 使用方式在My Agents管理界面中Partner 与本地 Claude Code / Codex 并列展示。选择一个 Partner 连接后在 composer输入框中选中它发起提问本轮对话会以单个consult_subagent工具调用的形式把问题转发给该 Partner自己的 chat loop——也就是说是 Partner 以自己的人格、知识库和技能来回答而非 DeepTutor 主模型代答。Partner 的逐步运行过程trace会在侧边栏实时流式展示。从产品行为看一个 DeepTutor 聊天会话内对该 Partner 的多次咨询会被线程化进同一个 Partner 会话并以你的第一个问题为会话标题归档到该 Partner 自己的历史记录中这条连接还佩戴着 Partner 自己的头像方便在多连接中区分。1.2 源码级原理consult_subagent 的调用链consult_subagent由 deeptutor/capabilities/subagent/tools.py 中的ConsultSubagentTool实现其工具描述明确说明它可以问两类对象用户本机的本地智能体 CLIClaude Code、Codex、Gemini CLI、Kimi CLI、opencode、MiMo Code 等以及用户的 Partners——Partner 用自己的 persona、library 与 skills来回答。关键设计该工具只暴露一个question参数给模型其余服务端信息全部由能力层的augment_kwargs注入_subagentspec见 deeptutor/capabilities/subagent/capability.pyupdated[_subagent] { kind: conn[kind], cwd: conn.get(cwd) or , partner_id: conn.get(partner_id) or , # Partner 连接时携带 partner_id name: conn[name], budget: _resolve_budget(context), # 本轮咨询预算用户配置的 max rounds config: config, state: state, # 轮内状态咨询次数 / 会话 id images: images, session_key: skey, }其中partner_id非空即代表后端类型为 PartnerPARTNER_BACKEND_KIND。当目标为 Partner 时系统提示词system prompt会向主模型描述 Partner 的同事定位——例如英文文案为a companion with its own persona, library and skills … Your exchange is archived as one complete session in that partners history, and its reply is shown to the user livecapability.py中文场景对应把它当作一位独立的同事来求助。执行期还包含以下可验证机制咨询预算同一轮内模型最多咨询budget次范围由CONSULT_BUDGET_MIN/MAX约束可被 composer 中的subagent_consult_budget覆盖达到上限后工具会返回Consult budget reached并明确要求模型直接作答。会话连续性后端的 session/thread id 会写入 deeptutor/services/subagent/sessions.py 维护的subagent_sessions.json按聊天会话 连接复合键记忆。因此同一次 DeepTutor 聊天内的多次咨询复用同一个 Partner 会话Partner 能记住此前的上下文进行层层追问甚至跨轮次也能恢复同一 live 会话连接断开时才清理对应条目。实时 trace所有后端原生事件经on_event汇聚后以subagent_event单一 trace_kind 流式推送到侧边栏用consult_index与subagent_merge_id区分不同轮次的增量内容形成CLI 忠实的对话式转写。归档与标题整段往来作为一个完整会话归档进 Partner 的历史标题取自你的第一个问题与上面注入的 system framing 相呼应。图片转发仅当后端配置开启forward_images时本轮图片附件才被物化到临时目录供 Partner 摄取结束后清理。功能二Partner 拥有自己的记忆分割记忆模型2.1 三个 always-on 工具此前 Partner 在对话中直接使用聊天的read_memory/write_memory读写的是主人的共享记忆。v1.4.8 起每个 Partner 轮次都用下面三个**常驻强制挂载、不可关闭**工具替代它们实现在 deeptutor/tools/partner_memory.py元组PARTNER_BUILTIN_TOOL_NAMES是它的单一事实来源工具职责关键参数权限边界partner_read读取主人的共享长期记忆Partner 自己的记忆两段拼接返回无主人层只读自己的层可被partner_memorize维护partner_memorize把一条值得记住的偏好/事实写入Partner 自己的workspaceopadd/edit必填、text≤240 字符必填、target_idedit时的m_xxx条目 id、reason可选写入记忆日志永远只写自己的记忆碰不到主人的记忆partner_search在 Partner 自己全部历史会话上做关键词检索query必填忽略大小写、limit默认 30最大 100只检索自己的会话三个工具的返回也都携带结构化元数据例如partner_read返回has_shared/has_own标记partner_search按时间倒序返回形如[会话标题 · role · 时间戳] 命中片段的摘要行。2.2 数据落在哪里从 partner_memory.py 模块 docstring 与实现可见Partner 的长期记忆保存在Partner 的合成 workspacedata/partners/id/workspace/memory。partner_memorize写入时会先以partner事件源向记忆 trace 提交一条preference_stated事件再调用store.write_preference()落盘保证 trace 与偏好位于同一棵记忆树内、脚注引用可解析。partner_read的实现同时做了两次带路径覆盖的读取细节见源码with memory_path_service_override(get_admin_path_service()): # 主人 L3 层只读 shared _concat_l3() with memory_path_service_override(get_current_path_service()): # Partner 自己 L3 层 own _concat_l3()输出固定为两个小节## Shared memory (the owners — read-only)与## Your own memory空层会明确标注如none yet — use partner_memorize to add。Partner 用户身份本身由 deeptutor/services/partners/scope.py 界定PARTNER_USER_PREFIX partner_即 Partner 的 user_id 为partner_id并映射到其独立 workspace 与 scope——这正是路径覆盖读取能区分主人与 Partner的根基。2.3 强制挂载与开关移除的实现在 deeptutor/agents/chat/agentic_pipeline.py 的工具组合阶段能直接看到这条分割记忆模型的落地代码# Partners get the partner_* memory/history tools force-mounted and # chats read_memory/write_memory suppressed — the split-memory model forcedPARTNER_BUILTIN_TOOL_NAMES if is_partner else (), suppressed_PARTNER_SUPPRESSED_TOOLS if is_partner else (),其中_PARTNER_SUPPRESSED_TOOLS (read_memory, write_memory)。也就是说只要这一轮是 Partner 轮次_is_partner_turn判定partner_read / partner_memorize / partner_search就被强制加入工具面同时聊天记忆工具read_memory/write_memory被压制。同时在 deeptutor/tools/builtin/init.py 中三个 Partner 工具被全局注册以保证 schema/API 稳定但绝不在产品聊天中挂载并刻意缺席于CONFIGURABLE_BUILTIN_TOOL_NAMES——它们的注释写明they are mandatory, not owner-configurable。这就是发布说明所述per-Partner 的 read_memory / write_memory 开关从 Partner 工具设置中移除的源码依据既然 Partner 的记忆访问已由三件套接管且不可配置旧的读写开关自然失去意义。2.4 非破坏性与权限模型此次变更是自动且非破坏性的已存在的 Partner 依然能读取主人的共享记忆作为上下文只是新增的记忆落到 Partner 自己的可写存储主人的记忆数据完全不被触碰保持可读Partner 永远无法写入或篡改主人的记忆——写路径被partner_memorize硬编码到自己的 workspace。一个值得注意的配合Partner 是把主人的 exec/工具白名单按伙伴逐个允许/拒绝的而CONFIGURABLE_BUILTIN_TOOL_NAMES中read_memory/write_memory等 15 个工具仍可按伙伴粒度控制Partner 记忆三件套则不在其中属于强制面。发布说明中强调的可选择性拒绝例如面向 IM 的 Partner 可被禁止内存访问仍然针对的是旧聊天工具面不会与三件套冲突。功能三将 Partner 对话作为上下文引用仅管理员v1.4.8 还允许把一段 Partner 会话拉取进 DeepTutor 聊天作为**引用转写referenced transcript**上下文——仅管理员admin-only可用并以第三方身份冠以 Partner 自己的名字呈现与导入的智能体外史imported agent histories的处理方式相同。这与会话级参考转写能力是同一套机制在 deeptutor/services/session/source_inventory.py 中存在serialize_referenced_transcript(meta, messages, language...)用于把一段历史消息按引用来源序列化为转写块该函数也被 deeptutor/services/session/turn_runtime.py 在回合运行时调用L1435/L1451 附近。Partner 会话作为引用来源时其来源身份就是 Partner 自己的名字从而在回答上下文中明确这是一位第三方的独立输出。升级说明与验证v1.4.8 是 v1.4.7 的直接后继升级路径与官方声明一致pip 用户pip install -U deeptutorDocker 用户拉取ghcr.io/hkuds/deeptutor:latest无需迁移No migrations记忆变更自动生效且非破坏性。升级后可以这样验证新行为打开 My Agents确认 Partners 已与本地 Claude Code / Codex 并列连接某个 Partner 并在 composer 中选择它观察侧边栏是否实时流式出现该 Partner 自己的运行 trace。向该 Partner 连续追问多次然后在 Partner 的历史记录中确认这些咨询被归档为一个以首个问题为标题的完整会话。在 Partner 会话中让其记住一条偏好再回到主聊天用partner_read语义验证主人共享记忆未被改动而 Partner 自己的记忆里新增了该偏好数据文件位于data/partners/id/workspace/memory。检查 Partner 工具设置旧的read_memory/write_memory开关应已消失三件套强制且不可配置。延伸阅读源码索引若想继续深入这套机制的实现可在当前仓库中按以下路径阅读发布说明原文assets/releases/past_releases/ver1-4-8.md上一版本参考 ver1-4-7Partner 记忆三件套实现deeptutor/tools/partner_memory.py工具面组装与强制/压制逻辑deeptutor/agents/chat/agentic_pipeline.pyPartner 工具全局注册与不可配置声明deeptutor/tools/builtin/init.py咨询工具与后端调用deeptutor/capabilities/subagent/tools.py、deeptutor/capabilities/subagent/capability.py会话连续性与归档deeptutor/services/subagent/sessions.py、deeptutor/services/partners/sessions.py含PartnerSessionStore被partner_search用于检索全部历史Partner 用户作用域与路径映射deeptutor/services/partners/scope.py、deeptutor/multi_user/paths.py。小结v1.4.8 表面上是一份小型跟进发布实质完成了一次清晰的权限与职责重构——Partner 从借用主人记忆的聊天参与者升级为有独立记忆、可被主聊天实时咨询的完整 Agent。理解consult_subagent的注入式 spec、forced/suppressed工具面机制与partner_*三件套的数据落盘边界就掌握了这次发布的技术内核。【免费下载链接】DeepTutorDeepTutor: Lifelong Personalized Tutoring. https://deeptutor.info/.项目地址: https://gitcode.com/GitHub_Trending/dee/DeepTutor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/3 15:05:09

Java四大权限修饰符详解:从private到public的访问控制与封装实践

最近在做一套 Java 进阶笔记,写到“权限修饰符”这一篇时,我突然意识到很多开发了两年三年的朋友,对这个知识点的理解还停留在“public 谁都能访问,private 只有自己能访问”的层面。可真到排查问题、设计接口、写框架的时候&…

2026/11/4 21:48:11

Linux服务器初始化:创建用户与用curl cip.cc查询公网IP

在一台全新的 Linux 服务器上做初始化时,有两件看起来没关系的事经常要一起处理:一是创建普通用户并配置权限,二是查清楚这台服务器的公网 IP。前者属于用户管理,后者属于网络排查,但实际运维中它们往往出现在同一个任…

2026/11/3 21:20:57

热电联供微网源荷随机性建模与两阶段优化求解

做热电联供微网优化研究,最容易被低估的就是“源荷随机特征”这六个字。我一开始就是用典型日数据跑确定性的Matlab调度模型,结果模型输出漂亮、实际执行却变形,后来才老老实实把光伏、风电、电负荷、热负荷的不确定性建模进去,用…

2026/11/5 10:33:54

LSM-Tree与StarRocks存储引擎深度解析

1. LSM-Tree存储引擎基础解析 LSM-Tree(Log-Structured Merge-Tree)是现代数据库系统中广泛采用的一种存储结构,其核心设计思想是通过顺序写入和后台合并来优化写性能。与传统的B树结构相比,LSM-Tree在写入密集型场景下能提供更高…

2026/11/5 10:33:54

OpenClaw:AI认知协作如何重构29个行业工作流

1. OpenClaw的本质认知革命 OpenClaw的出现彻底改变了人们对AI工具的刻板印象。这个平台最颠覆性的特点在于:它根本不是传统意义上的"软件工具",而是一个具备认知能力的数字工作伙伴。就像当年智能手机重新定义了"电话"的概念一样&a…

2026/11/5 10:33:54

eNSP下载安装全攻略:版本匹配、安装顺序与故障排查

1. 为什么一个“下载地址”背后藏着这么多门道每次在技术群里看到有人甩出一句“求一个eNSP下载地址”,底下回复往往五花八门:有人丢个网盘链接,有人让去某论坛翻帖,还有人直接说“官网找不到了,我发你”。表面上看&am…

2026/11/5 10:33:54

四款主流开发工具横向评测:Cursor、Trae、TRAE CN与QODER

1. 项目概述:四款开发工具横向评测在当今快节奏的开发环境中,选择合适的代码编辑器或集成开发环境(IDE)对开发者工作效率有着决定性影响。Cursor、Trae、TRAE CN和QODER这四款工具近期在开发者社区引发了广泛讨论。作为一位长期跟…

2026/11/5 10:33:54

SpringBoot与Mahout推荐引擎实战:协同过滤从原理到部署

简介:这份资源面向想入门推荐系统、又希望兼顾工程落地的 Java 开发者与在校学生,用 SpringBoot 搭建服务层、Apache Mahout 提供协同过滤算法,基于用户对电影的评分数据完成相似用户或相似物品的挖掘与推荐,属于可运行的中小型实…

2026/11/5 10:28:52

C/C++的OpenCV实现模板匹配的基础实现与优化

前言 模板匹配(template matching)是图像处理里最直观的定位手段:拿一张小图(模板)在一张大图(待搜索图)上逐位置滑动,计算每个位置的相似度,相似度最高的位置就是匹配结…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑