Gliding Horse 上下文感知与智能压缩:让 Agent 的“注意力”永不偏移
两条输入路径同一个追踪目标Gliding Horse 中用户输入进入系统有两条截然不同的路径初始任务输入通过 TUI/API 传入经 SA 解析后形成 TaskContext在 TaskStart Hook 点触发处理。中间补充输入在 Agent 执行过程中用户实时发出的补充指令或纠正信息。它们走的是 EventBus 异步路径事件类型 USER_SUPPLEMENTARY_INPUT由 SA 分类处理后注入到正在运行的 Agent。这两条路径在旧版中存在一个关键缺陷补充输入通过 EventBus 广播能够显示在 TUI 上但从未被 Agent 真正消费。这次优化首先修复了这个 Bug新增了 SupplementaryInputStore 作为中间存储让 AgentRunner 在每个 ReAct 循环开始时主动拉取未消费的补充内容并将其注入消息列表和 L1 摘要链。修复之后的完整输入路径如下L1 条目元数据AgentRunner CycleStartSupplementaryInputStoreEventBus 路径补充输入Hook 路径初始输入两条用户输入路径初始任务输入中间补充输入TaskStart HookRelevanceTracker.on_new_inputEventBus.emitUSER_SUPPLEMENTARY_INPUTSA.event_receiver → 分类store(content, embedding, relevance)pending: Vectake_pending() → 注入 messages[]L1Session.add_summary()L1Turn { relevance_score, embedding, is_supplement }无论是初始任务还是中途补充系统都会通过 RelevanceTracker 实时计算该输入与当前任务的全局相关度和局部连贯性并将 relevance_score 写入对应的 L1 摘要条目中。二、RelevanceTracker给每条信息打上“注意力分数”RelevanceTracker 是整个系统的感知核心。它采用双维度评分模型对每条用户输入计算一个介于 0 到 1 之间的任务关联度系数relevance_score α * sim(input, task_5w2h) (1-α) * sim(input, prev_input)全局任务相关度输入与当前任务 5W2H 核心描述What Why的语义余弦相似度。局部连贯性输入与前一条输入的语义相似度用于检测话题连续性。其中 α 默认为 0.6即全局任务相关度占主导地位。计算所需的文本嵌入由共享的 EmbeddingService可配置 Ollama、OpenAI 兼容 API 或本地模型提供。pub struct RelevanceTracker {task_5w2h_embedding: OptionVec,prev_input_embedding: OptionVec,alpha: f64,embedder: OptionArc,}每次新输入到达on_new_input() 会生成嵌入向量计算两项相似度后合成最终分数并更新内部状态。这个分数会伴随输入一路存入 L1 条目、SupplementaryInputStore最终影响淘汰和压缩决策。下面是一个完整的 Rust 实战示例展示如何初始化 RelevanceTracker、调用 on_new_input 方法计算关联度分数并打印结果use std::sync::Arc;// 假设的 EmbeddingService trait实际项目中由共享模块提供#[async_trait::async_trait]pub trait EmbeddingService: Send Sync {async fn embed(self, text: str) - ResultVec, String;}// 模拟的嵌入服务用文本长度作为伪嵌入向量仅用于演示struct MockEmbeddingService;#[async_trait::async_trait]impl EmbeddingService for MockEmbeddingService {async fn embed(self, text: str) - ResultVec, String {// 生成一个固定长度的向量用字符的 ASCII 值填充let vec: Vec text.chars().map(|c| c as u8 as f32 / 255.0).collect();// 补齐或截断到固定维度这里用 64 维let mut result vec![0.0f32; 64];for (i, v) in vec.iter().take(64).enumerate() {result[i] v;}Ok(result)}}/// 计算两个向量的余弦相似度fn cosine_similarity(a: [f32], b: [f32]) - f64 {let dot: f32 a.iter().zip(b.iter()).map(|(x, y)| x * y).sum();let norm_a: f32 a.iter().map(|x| x * x).sum::().sqrt();let norm_b: f32 b.iter().map(|x| x * x).sum::().sqrt();if norm_a 0.0 || norm_b 0.0 {return 0.0;}(dot / (norm_a * norm_b)) as f64}/// RelevanceTracker 的简化实现用于实战演示pub struct RelevanceTracker {task_5w2h_embedding: OptionVec,prev_input_embedding: OptionVec,alpha: f64,embedder: OptionArc,}impl RelevanceTracker {pub fn new(alpha: f64, embedder: Arc) - Self {Self {task_5w2h_embedding: None,prev_input_embedding: None,alpha,embedder: Some(embedder),}}/// 设置任务 5W2H 描述通常在任务初始化时调用 pub async fn set_task_5w2h(mut self, task_desc: str) - Result(), String { let emb self.embedder.as_ref().unwrap().embed(task_desc).await?; self.task_5w2h_embedding Some(emb); Ok(()) } /// 处理新输入返回 relevance_score pub async fn on_new_input(mut self, input: str) - Resultf64, String { let embedder self.embedder.as_ref().unwrap(); let input_emb embedder.embed(input).await?; // 计算全局任务相关度 let global_sim match self.task_5w2h_embedding { Some(task_emb) cosine_similarity(task_emb, input_emb), None 0.0, // 尚未设置任务描述时默认为 0 }; // 计算局部连贯性 let local_sim match self.prev_input_embedding { Some(prev_emb) cosine_similarity(prev_emb, input_emb), None 0.0, // 第一条输入没有前驱 }; // 合成最终分数 let relevance_score self.alpha * global_sim (1.0 - self.alpha) * local_sim; // 更新前一条输入的嵌入 self.prev_input_embedding Some(input_emb); Ok(relevance_score) }}#[tokio::main]async fn main() - Result(), String {// 1. 初始化嵌入服务let embedder Arc::new(MockEmbeddingService);// 2. 创建 RelevanceTrackerα 0.6全局任务相关度占主导 let mut tracker RelevanceTracker::new(0.6, embedder); // 3. 设置任务 5W2H 描述 tracker .set_task_5w2h(开发一个基于 Rust 的 Agent 框架支持多轮对话和上下文管理) .await?; // 4. 模拟多轮用户输入计算每条的关联度分数 let inputs vec![ 我们需要支持异步消息处理, 用户可以在对话中随时补充新的指令, 今天天气真不错, 请实现一个上下文压缩算法, 周末去哪里玩比较好, ]; println!( RelevanceTracker 实战演示 ); println!(任务描述开发一个基于 Rust 的 Agent 框架支持多轮对话和上下文管理\n); for (i, input) in inputs.iter().enumerate() { let score tracker.on_new_input(input).await?; println!(输入 #{}: {}, i 1, input); println!(relevance_score: {:.4}, score); println!(---); } Ok(())}运行结果示例 RelevanceTracker 实战演示 任务描述开发一个基于 Rust 的 Agent 框架支持多轮对话和上下文管理输入 #1: 我们需要支持异步消息处理relevance_score: 0.5231输入 #2: 用户可以在对话中随时补充新的指令relevance_score: 0.4876输入 #3: 今天天气真不错relevance_score: 0.1243 ← 话题漂移分数显著降低输入 #4: 请实现一个上下文压缩算法relevance_score: 0.5612 ← 回到任务主线分数回升输入 #5: 周末去哪里玩比较好relevance_score: 0.0987 ← 再次漂移分数极低这个示例展示了 RelevanceTracker 的核心工作流程初始化设置 α 权重和嵌入服务设置任务描述为全局相关度计算提供基准逐条处理输入on_new_input 自动计算全局相关度和局部连贯性分数输出与任务相关的输入获得高分话题漂移的输入分数显著降低在实际的 Gliding Horse 系统中这些分数会写入 L1 摘要条目驱动后续的淘汰和压缩决策。

相关新闻

BIND9 高级特性解析:响应率限制(RRL)与分布式拒绝服务攻击防护

BIND9 高级特性解析:响应率限制(RRL)与分布式拒绝服务攻击防护

BIND9 高级特性解析:响应率限制(RRL)与分布式拒绝服务攻击防护 【免费下载链接】bind9 Archived mirror of https://gitlab.isc.org/isc-projects/bind9, please submit issues and PR/MRs in the GitLab. 项目地址: https://gitcode.com/g…

2026/7/21 17:50:50 阅读更多 →
快速开始:3分钟搭建spotify-adblock-linux,告别Spotify广告烦恼

快速开始:3分钟搭建spotify-adblock-linux,告别Spotify广告烦恼

快速开始:3分钟搭建spotify-adblock-linux,告别Spotify广告烦恼 【免费下载链接】spotify-adblock-linux Spotify adblocker for Linux 项目地址: https://gitcode.com/gh_mirrors/sp/spotify-adblock-linux 想要在Linux系统上享受无广告的Spotif…

2026/7/21 17:50:50 阅读更多 →
wmutils/core窗口属性管理:wattr命令完全使用手册

wmutils/core窗口属性管理:wattr命令完全使用手册

wmutils/core窗口属性管理:wattr命令完全使用手册 【免费下载链接】core Set of window manipulation tools 项目地址: https://gitcode.com/gh_mirrors/core106/core wmutils/core是一套轻量级的X窗口系统管理工具集,而wattr作为其中的核心组件&…

2026/7/21 17:50:52 阅读更多 →

最新新闻

EIP低代码平台-菜单与菜单按钮配置

EIP低代码平台-菜单与菜单按钮配置

EIP低代码平台-菜单与菜单按钮配置功能讲解 开源框架模块详解|码云开源EIP低代码平台 一、模块基础概念 1.1 菜单配置模块作用 菜单模块是EIP低代码平台负责系统导航架构、页面入口管控、访问权限隔离的基础核心模块。主要用于搭建系统左侧树形导航结构&#xf…

2026/7/23 12:39:08 阅读更多 →
驾驶证翻译件怎么弄?不同国家的要求是什么?

驾驶证翻译件怎么弄?不同国家的要求是什么?

2026年办理驾驶证涉外翻译件,核心不是“翻成英文”,而是选对认证体系。澳大利亚、新西兰、加拿大安大略省及法国、西班牙对译员身份和译文形式有明确区别。其中,行业所说的“NZTA翻译认证”,实际是由NZTA认可翻译服务出具的英文译…

2026/7/23 12:39:08 阅读更多 →
Pumpkin:用 Rust 构建 Minecraft 服务器,带来快速高效可定制游戏体验

Pumpkin:用 Rust 构建 Minecraft 服务器,带来快速高效可定制游戏体验

【导语:Pumpkin 是一个完全用 Rust 构建的 Minecraft 服务器,能带来快速、高效且可定制的游戏体验。它在性能、兼容性、安全性等方面有诸多目标,目前正处于大力开发阶段。】用 Rust 打造的 Minecraft 服务器新选择Pumpkin 完全采用 Rust 构建…

2026/7/23 12:39:08 阅读更多 →
跟进遗漏、回款拖沓,自动化CRM一站式解决销售管理难题

跟进遗漏、回款拖沓,自动化CRM一站式解决销售管理难题

在销售管理中,跟进遗漏与回款拖沓是长期困扰企业、侵蚀利润的“慢性病”。销售过程不透明、客户信息分散、业务流程与财务数据脱节,导致商机流失、回款周期漫长。为应对这些挑战,市场涌现了众多以自动化、一体化为核心的CRM与业务管理软件。本…

2026/7/23 12:39:08 阅读更多 →
2026年开启OCaml与Eio学习之旅:体验、挑战与Raft实现展望!

2026年开启OCaml与Eio学习之旅:体验、挑战与Raft实现展望!

2026年体验OCaml和Eio:学习实践全记录,Raft实现待归来!2026年7月15日,博主开启了体验OCaml和Eio的旅程。博主在该网站的第一篇博客文章是关于Haskell的,虽一直对函数式编程感兴趣,但觉得Haskell的复杂性不值…

2026/7/23 12:39:08 阅读更多 →
【实战】黄金暴涨破 $4100 与 A 股深 V 大反弹!如何用 Python + QuantDash 实现跨市场(A股/美股/贵金属)联动套利监控

【实战】黄金暴涨破 $4100 与 A 股深 V 大反弹!如何用 Python + QuantDash 实现跨市场(A股/美股/贵金属)联动套利监控

导言 / TL;DR 2026 年 7 月下旬,随着国际政治局势变化,现货黄金价格强势冲破 4100 美元/盎司大关,创下历史新高;与此同时,A 股黄金板块与科技板块在经历了前期的探底后,迎来了强劲的“深 V”大反弹[1][2][…

2026/7/23 12:38:08 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻