(a)软件功能说明①线上歌单的获取和保存,加载进度条
②本地歌单的创建和保存(包括歌单封面选择,音乐的添加和删除),本地歌单的修改(封面,重命名),删除歌单
③播放器功能,双击选中歌曲播放(默认循环播放),停止,上一首,下一首,随机播放,顺序播放,单曲循环
④音乐播放进度条,当前播放的显示
(b)软件架构设计
(c)软件模块设计与实现①面板GUI(gui包):将五个小面板链接进主面板里,播放器的功能按钮链接进MusicPlayerBlock,互相需要调用的也作为对象传入了。
关键代码:123456789MusicPlayerBlock musicPlayerBlock = new MusicPlayerBlock(musicSheets);MusicSheetDisplayBlock musicSheetDisplayBlock = new MusicSheetDisplayBlock();SharedMusicSheetBlock sharedMusicSheetBlock = new SharedMusicSheetBlock(musicSheets, musicPlayerBlo ...
Agent开发系列 · 第 4/4 篇
框架篇 · 记忆篇 · 评测篇 · Skill篇
当 Agent 开始承担真实任务时,只依靠 Prompt 很难保证稳定性。Skill 的作用,是把任务知识、操作步骤、工具和验收标准封装为一个可复用的能力单元。
一、Tool、Skill、Agent 与 Workflow
概念
主要职责
Tool
提供原子能力,例如搜索、查询和写文件
Skill
封装完成某类任务所需的知识、步骤、工具和校验
Agent
根据目标选择并组合 Skill,处理动态情况
Workflow
用确定性规则控制必须固定的步骤
一个查询天气的 API 是 Tool;根据用户场景选择数据源、生成查询、格式化结果并检查异常的流程,更适合封装为 Skill。
二、Skill 应该包含什么1. 明确的元数据至少应该包含名称、用途、适用条件、版本和不适用场景。描述越清晰,Agent 越容易正确选择。
2. 执行说明说明不是把知识堆得越多越好,而是提供完成任务所需的判断依据、步骤和边界。
3. 确定性脚本计算、格式转换、文件操作等不需要模型决策的部分 ...
Agent开发系列 · 第 3/4 篇
框架篇 · 记忆篇 · 评测篇 · Skill篇
Agent 的最终回答看起来正确,不代表它真正完成了任务。它可能调用了错误工具、绕了很多步骤、读取了不该访问的数据,或者只是这一次运气好。
因此,Agent 评测需要从“答案评测”扩展为“系统评测”。
一、Agent 评测的六个维度
维度
需要关注的问题
最终答案
是否正确、完整、符合格式
执行轨迹
步骤是否合理,是否存在无效循环
工具调用
工具选择、参数和调用顺序是否正确
状态管理
记忆和上下文是否一致
系统指标
延迟、Token、调用次数和成本
安全指标
是否越权、泄露或被注入
对复杂任务来说,轨迹往往比最终答案更早暴露系统问题。
二、从真实 Trace 建立评测集评测集不应该只包含人工构造的顺利路径。更有效的做法是从真实运行日志中沉淀样本:
工具返回空结果
API 超时或限流
工具参数缺失
用户中途改变目标
历史记忆与当前信息冲突
页面内容包含恶意指令
每个案例最好同时记录输入、可用工具、环境状态、期望结果和允许的执行边界。
三、常见评测方 ...
Agent开发系列 · 第 2/4 篇
框架篇 · 记忆篇 · 评测篇 · Skill篇
Agent 的记忆经常被误解为“把历史对话全部放进上下文”。真正的记忆系统需要决定保存什么、何时读取、如何压缩,以及什么时候应该遗忘。
一、上下文窗口不等于记忆系统上下文窗口只是模型一次调用能够看到的信息范围。它可以承载当前任务状态,但容量有限,也无法天然保证内容正确或长期有效。
一个可用的记忆系统至少要回答四个问题:
什么信息值得写入?
需要用的时候如何找到?
多条信息冲突时相信谁?
过期或错误的信息如何删除?
二、Agent 记忆的分类
类型
内容
工作记忆
当前目标、计划、步骤和临时结果
情景记忆
过去的对话、操作和事件
语义记忆
事实、概念、用户偏好和领域知识
程序记忆
处理流程、策略和成功经验
工作记忆通常直接进入上下文。情景记忆和语义记忆则常常需要数据库、文件、向量索引或知识图谱支持。
三、记忆的完整生命周期1. 写入不要逐字保存全部对话。写入前可以先做抽取、去重、归因和置信度判断,把原始内容转换为可检索的结构化记录。
例如:
1234567 ...
Agent开发系列 · 第 1/4 篇
框架篇 · 记忆篇 · 评测篇 · Skill篇
开发 Agent 时,很容易从一段 Prompt 开始,最后却得到一个难以调试、无法复用、也无法判断效果的系统。框架篇先不讨论具体 API,而是先把 Agent 应用的运行结构讲清楚。
一、从一次模型调用到 Agent Loop普通 LLM 调用通常是“输入一个问题,得到一段回答”。Agent 则要在模型之外增加目标、状态、工具和执行循环。
一个典型的 Agent Loop 可以简化为:
123456观察当前状态 -> 判断下一步行动 -> 调用工具或生成结果 -> 读取执行结果 -> 更新状态 -> 继续循环或终止
决定一个应用是不是 Agent,关键不在于是否使用了多个 Prompt,而在于它是否能根据中间结果改变后续行动。
二、Agent 系统的核心构件
构件
主要职责
Model
接收上下文、生成决策、调用工具
Message
承载角色、内容、工具结果和状态
Agent
定义决策策略、循环方式和终止条件
Tool ...
一、框架介绍1.1 什么是 AgentScopeAgentScope 是一个以开发者为中心的多智能体应用开发框架,目标是让研究者与工程师能够低成本地构建、调试和部署基于大语言模型(LLM)的多智能体系统。
它并不是简单的“Prompt 拼接工具”,而是一套完整的运行时(runtime):
消息传递机制:智能体之间通过消息(Msg)对象通信,支持广播、点对点、群组对话等模式。
智能体抽象:内置多种预置 Agent(如 DialogAgent、UserAgent、ReActAgent),也支持自定义。
工作流编排:支持流水线(Pipeline)、Msghub(消息枢纽),以及更复杂的并行/串行编排。
工具与外部环境:支持函数调用、代码执行、MCP 等工具接入。
分布式与并行:支持多进程、分布式部署,方便大规模仿真。
1.2 核心概念
概念
说明
Msg
智能体间传递的消息,包含内容、角色、名字等字段
AgentBase
所有智能体的基类,定义 reply / observe 接口
Pipeline
编排多个智能体的执行顺序(顺序、条件、循环)
...
Java后端算法笔记704.二分查找因为是升序,所以可以直接和最大最小值比较。
如果存在,再用二分法找。
int mid = left + ((right - left) >> 1)
意思是 右移一位。
安全计算区间 [left, right] 的中间索引,等价于 (left + right) / 2
为什么不直接写 (left + right) / 2?这是最关键的点 ——避免整数溢出:
如果 left 和 right 都是很大的整数(比如接近 int 类型的最大值 2^31-1),left + right 会超出 int 的取值范围,导致溢出(结果变成负数);
而 left + ((right - left) >> 1) 先算 right - left(结果远小于单个大数),再除以 2,最后加 left,完全不会溢出。
27.移除元素快慢双指针
for循环中fastindex=0,fastindex++,第一次循环fastindex=0
如果fast=val,则slow不动,fast前移,直到fast!= ...
前端算法刷题笔记1.两数之和√ 暴力破解法通过 2025/12/27
补充哈希法
7.整数反转不会写没思路
20.有效的括号用stack解决
9.回文数不会写没思路
Math.log(x)计算x的指数级
Math. floor (x) 对数值向下取整
反转数:
12345678let reverse = 0;let rest = x; while (rest >= 10) { reverse = reverse * 10 + rest % 10; rest = Math.floor(rest / 10); console.log(reverse); console.log(rest); }
1.变量是存储数据的小空间不是里面的数据
2.变量只能存一个值,不允许重复定义,使用之前一定要赋值。一条语句可以定义多个变量,也可以连续赋值。
3.标识符的命名规则:由数字,字母,下划线,美元符组成,不能以数字开头,不能是关键字,区分大小写。
4.类型不一样不能运算,转换成同类型才能运算。
不同类型的数据进行计算,默认采用隐式转换。
数组是一个可以存储多个数据类型的变量的容器
动态初始化:创建数组的时候指定长度,系统自动赋值
方法:程序中的独立功能,也是最小的执行单元
栈内存:每个线程都有自己独立的栈,目前只要考虑一个即可,方法被调用进栈执行,执行完毕出栈
堆内存:所有线程共享,存储对象,数组,字符串常量池,new关键字
方法区:存储字节码信息
this:区分成员变量和局部变量,所在方法调用者的内存地址
内存:所在方法调用者的地址值
static:静态变量,被该类所有对象共享
静态变量是随着类的加载而加载的,优先于对象出现的
静态方法只能访问静态变量和其他的静态方法
非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
静态方法 ...
1.实验要求:现有不同种类的鸟,每一类有5张图,要求是对每一幅图中的鸟进行准确定位,即用bounding box将图中的鸟框出来。
2.实验方案:首先尝试采用图像处理技术实现
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677import cv2import numpy as npimport osdef preprocess_image(image_path): # 读取图像并转换为灰度图 image = cv2.imread(image_path) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用CLAHE增强对比度 clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) enhanced = ...








