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

发布时间:2026/9/9 20:25:22

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/9/9 20:20:21

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

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

2026/9/9 20:20:21

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

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

2026/9/9 20:20:21

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

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

2026/9/10 0:15:59

Helix 3D Toolkit:用代码参数化生成螺旋结构的工具库

简介:Helix 3D Toolkit 是面向 WPF 与 WinRT/Metro 平台的 3D 开发工具包,适合需要在 Windows 应用中集成三维交互界面的开发者,帮助简化 3D 视图、模型容器与三维对象的管理与操作。压缩包共 814 个文件、约 14.36MB,以 C# 源码&…

2026/9/10 0:15:59

科研级相机微弱信号捕捉:制冷降噪与暗电流控制全解析

先说说我的感受。玩天文摄影和科学观测的朋友应该都有过这种体验:目标明明就在视野里,信号就是弱得可怜。行星表面细节、暗淡星云的长曝光、光谱实验里某个只有几十电子增量的特征峰——这些场景下,普通相机的底噪和热噪声会让你怀疑人生。真…

2026/9/10 0:15:58

C#上位机对接HTTP POST JSON接口:实战经验与踩坑记录

简介:实现C# HTTP POST的JSON数据交互,是许多.NET开发者会遇到的典型场景。这套资料面向需要对接Web API、构建客户端通信模块的C#程序员,系统梳理了HttpClient使用、POST请求构建、异步发送与响应读取,以及Json.NET序列化/反序列…

2026/9/10 0:15:58

基于QT的串口、TCP、UDP通讯源代码与工程实践

简介:面向QT开发者的TCP/UDP与串口通信源码包,覆盖网络通信和本地串行通信两大场景,适合嵌入式、物联网及设备控制等项目参考学习。压缩包共67个文件,以cpp/h源码为主,包含TCP客户端/服务器、UDP收发、串口读写等核心模…

2026/9/10 0:15:58

异构算力下算子、算子库与系统软件栈:从原理到FlagOS落地实践

最近在群里聊大模型部署,几乎每次都会有人问“你这套东西能跑在什么芯片上”。一问到算子、算子库、异构算力,对话就变得特别模糊。尤其像FlagOS(众智FlagOS)这种面向大模型、又是开源、又宣称支持几乎所有芯片的系统软件栈&#…

2026/9/10 0:10:58

微博私信管理效率工具:石青软件1.1.2.0功能实战测评

简介:石青微博私信软件1.1.2.0是一款面向微博运营与营销人群的私信群发工具,支持登录、搜索与批量私信等核心操作。此次升级重构登录算法,并更新搜索算法,提升账号交互稳定性与用户检索效率;同时移除IP精灵&#xff0c…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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