OpenClaw 中文版 Molili 更新:接入钉钉、飞书、Siri 语音同步上线 8000+Skill 技能

OpenClaw 中文版 Molili 更新:接入钉钉、飞书、Siri 语音同步上线 8000 款 Skill 技能,有点值得期待!
入口: https://www.molili.com.cn/
亮点:
1 、一键部署、一键安装
2 、简单、易用



xiaohack博客专注前沿科技动态与实用技术干货分享,涵盖 AI 代理、大模型应用、编程工具、文档解析、SEO 实战、自动化部署等内容,提供开源项目教程、科技资讯日报、工具使用指南,助力开发者、AI 爱好者获取前沿技术与实战经验。

OpenClaw 中文版 Molili 更新:接入钉钉、飞书、Siri 语音同步上线 8000 款 Skill 技能,有点值得期待!
入口: https://www.molili.com.cn/
亮点:
1 、一键部署、一键安装
2 、简单、易用



最近在项目里想加个思维导图功能,试了几个库,要么配置贼复杂,要么样式跟我的 shadcn 项目完全不搭。想着既然 shadcn/ui 那么好用,为什么不能有个思维导图组件呢? 于是就有了 mindmapcn。 装完就能用,不用配一堆东西,不用费心搞 SSR 异步加载那堆代码,这就是我开发 mindmapcn 的初衷。 如果你在用 shadcn/ui,那这个组件应该会让你觉得很舒服: 核心是基于 Mind Elixir 这个库。选它是因为: mindmapcn 做的事情就是把它包装成 shadcn 风格,让它用起来更顺手。 装完之后,代码大概长这样: 注意: 记得给容器设个高度,不然组件不知道该渲染多大。可以用 我自己用它做过这些: 基本上需要树状结构可视化的场景都能用。 如果你的项目有亮色/暗色主题切换,思维导图会自动跟着变。不用写任何额外代码,它会自己检测 CSS 变量然后调整颜色。(当然这个还是要跟 Tailwind 的主题系统配合使用) shadcn 生态的优势就是文件直接到你代码库里,所以定制化是很简单的事情,以下是一些常见的定制方式: 不过你可能需要先熟悉 Mind Elixir 的 API。 更多例子可以看官网文档。 做这个组件的时候,我就想着三点: 简单 - 不想让用户配一堆东西。装上就能用,这是最基本的。 好看 - 既然是 shadcn 生态的,样式得跟得上。主题适配、响应式这些都得有。 够用 - 基础功能要全,但也不能太复杂。大部分场景能覆盖到就行,不够用户也可以根据自己需求改。 都是 React 生态标准配置,也是 AI 前端的主流技术栈,所以交给 AI 接入思维导图问题也不大。 代码都在 GitHub 上:https://github.com/SSShooter/mindmapcn MIT 协议,随便用。有问题可以提 issue,想贡献代码也欢迎 PR~ 这个项目能做出来,得感谢: ebook-to-mindmap 已经率先用上这个小组件了,目前效果还不错。 如果你正好需要在项目里加个思维导图,欢迎试用: 有任何问题或建议,欢迎在 GitHub 上交流。
就像你平时
npx shadcn add button 一样,现在思维导图也能这么安装了。为什么要做这个?
一行命令搞定
npx shadcn@latest add https://mindmapcn.vercel.app/mindmaps/mindmap.json它长什么样?
底层用的什么?
基本用法
import { MindMap } from "@/components/ui/mindmap";
export default function MyMindMap() {
const data = {
nodeData: {
topic: "我的思维导图",
root: true,
children: [{ topic: "子节点 1" }, { topic: "子节点 2" }],
},
};
return (
<div className="h-screen w-full">
<MindMap data={data} />
</div>
);
}h-screen 或者 h-[600px] 这种。能用来干嘛?
主题适配
定制化
快速开始
安装
npx shadcn@latest add https://mindmapcn.vercel.app/mindmaps/mindmap.json用起来
import { MindMap } from "@/components/ui/mindmap";
function App() {
return (
<div className="h-screen w-full">
<MindMap
data={{
nodeData: {
topic: "开始",
root: true,
children: [{ topic: "简单" }, { topic: "好用" }],
},
}}
/>
</div>
);
}设计想法
技术栈
开源
感谢
试试看
npx shadcn@latest add https://mindmapcn.vercel.app/mindmaps/mindmap.json相关链接
大多数人以为客服系统不过是一个聊天框。 其实不是。 在那个小小的悬浮窗口背后,是一个实时消息核心,它必须在不可预测的流量下以低延迟传递消息。系统中存在并发控制,用来管理成千上万——有时甚至是几十万——的同时连接。内存管理也在高压下进行,低效的分配模式可能悄无声息地引入延迟尖峰。多租户隔离确保一个客户的工作负载永远不会影响另一个客户的系统稳定性。部署策略在 SaaS 与私有化环境下有根本性的差异。可靠性保证决定了消息是在边缘条件下“只送一次”、“至少送一次”,还是可能丢失。而在这一切之下,还有长期的架构权衡,这些权衡决定了系统在几年中的演进,而非几周。 表面上看似简单的界面,实际上是一个分层系统,需要在性能、隔离、可靠性和可维护性之间取得平衡。界面可能极简,但其背后的工程复杂度绝不简单。 在过去几年里,我构建了一个名为 升讯威在线客服与营销系统 的实时客服系统。它支持 SaaS 与私有化部署,并围绕高并发、可维护性以及清晰的架构设计。最初只是一个最小化原型,但逐渐发展为生产级系统:拥有真实的消息管道、租户隔离、访客追踪、可扩展 API,以及一个面向适应性而非偶然复杂性的结构。 本系列文章记录了这一技术演进——在从零构建和优化实时基础设施系统的过程中,所做的决策、面临的约束、进行的修正,以及获得的经验教训。 工程透明度能够建立信任——尤其是在基础设施级软件领域。 在客服系统领域,有许多产品可供选择。它们是经过多年迭代打磨的成熟系统,背后有强大的资源支持。从外部看,它们呈现出干净的界面和精心设计的用户体验。 然而,通常不为人所见的是支撑这些系统在大规模下可靠运行的工程思考。界面可能看起来很简单,但其背后的基础设施必须能够持续承载负载、应对流量突发、可靠地隔离租户,并在不断演进中不会因自身复杂性而崩塌。这些设计选择——权衡、约束和修正——很少在公开讨论中出现。 这些问题不是功能列表能够回答的,它们需要通过受约束条件塑造的架构思维来解答。 本系列将从工程视角探讨这些问题。它会审视当时看似合理、但后来需要修正的决策;讨论简洁性与可扩展性、抽象性与性能、即时交付与长期可维护性之间的权衡。 这不是市场宣传,也不是提供生产级代码的逐步教程。而是对架构决策、实践中遇到的约束,以及在构建和演进实时系统过程中获得的经验教训的系统性探索。 本系列将跟随系统的发展历程,从最初的假设到更成熟的架构形态。它将从一个核心问题出发:为什么从零构建一套客服系统是合理的——以及哪些约束条件支撑了这一决策。随后,它会讲述从最小化原型向生产级架构的演变过程,展示早期的简洁性如何逐步让位于结构上的严谨性。 讨论内容将包括在 .NET 中设计实时消息核心,以及在持续负载下处理高并发 WebSocket 连接的实际情况。还会探讨延迟敏感环境中的内存分配模式与 GC 行为,这些不是理论话题,而是直接影响用户体验的关键因素。稳定性机制,如背压、队列管理和故障隔离,也将在防止级联崩溃的背景下进行分析。 随着系统扩展,架构关注点转向多租户隔离、部署灵活性和可靠性保证。支持 SaaS 与私有化环境引入了不同的运维约束,并迫使团队对可配置性、自动化和环境假设做出明确决策。消息可靠性模型——以及理论保证与实际可操作性之间的妥协——成为核心考量。 后续文章还将回顾当早期设计决策不足时对核心组件的重写,如何在不造成过度抽象的情况下设计可扩展 API,以及在不破坏底层系统稳定性的前提下,将 AI 功能集成到延迟敏感的实时消息管道中。 每篇文章都将聚焦于工程思考,而非表面功能。在适当情况下,我会讨论权衡方案、被舍弃的替代方案和架构妥协——因为真实系统往往更多地由约束条件塑造,而非理想设计。架构图可能看起来清晰,但真正的清晰往往是在不断修正之后才显现出来。 本系列不是围绕产品能做什么来组织的,而是围绕系统如何在增长、负载和时间的考验下生存和演进来展开的。 计划的文章主题包括: 每篇文章都会聚焦于工程思考,而非表面功能的堆砌。 在适当的地方,我还会讨论权衡方案、被舍弃的替代方案以及架构妥协——因为真实系统往往更多地由约束条件塑造,而非理想设计。 本系列将聚焦于架构、设计思维以及从构建和演进生产环境下实时系统中总结出的工程经验。重点在于思考过程:为什么做出某些决策、哪些约束条件影响了这些决策,以及这些决策随时间推移表现如何。 本系列不会披露敏感的安全细节、客户数据、特定部署配置或内部专有实现机制。真实系统运行在特定的运维环境中,这些内容既不能公开,也不应公开。稳定性和安全性不是理论问题,而是实际责任。 在提供示例时,将以抽象形式展示模式,而非暴露内部结构。基准测试可能会以方向性描述呈现,而非具体生产数据。若包含架构图,也仅代表概念模型,而非真实基础设施布局。 目的在于分享思考方式,而不是暴露运营风险。工程透明度并不意味着发布每行代码或每条部署细节,而是要对塑造系统的决策保持清晰,对伴随这些决策的权衡保持诚实。 这些界限不是讨论的限制,而是负责任的工程实践的一部分。 如果你正在构建实时系统,其中延迟、高并发和可靠性不是抽象概念,而是日常工程约束,那么本系列可能对你有帮助。 如果你正在探索多租户架构,超越理论图示的层面,或者处理以 WebSocket 为主的工作负载,其中连接生命周期管理和内存行为直接影响系统稳定性,那么本系列讨论的话题可能与你面临的问题高度相关。同样,如果你关注系统在经过多年迭代后仍能保持可理解性和可适应性——而不仅仅是几周的开发——本系列也正是以这种视角编写的。 这不是为了快速消化而优化的内容。它假设你愿意用权衡而非绝对的思路思考问题,用演进而非速成的视角看待系统。重点不在于功能对比,而在于结构化思考。目标不是构建一次就能工作的东西,而是构建随着复杂性增长仍能持续可靠运行的系统。 如果你只是想找一份“10 分钟教你做聊天应用”的快速指南,本系列不适合你。市面上有很多优秀的快速原型资源。本系列关注的是原型开始面对真实流量、真实约束和真实运维责任后的那些问题。 软件系统在不断演进。 随着功能增加和边缘场景出现,系统会逐渐积累复杂性。早期设计中看不见的瓶颈会意外浮现,你不得不重新审视那些曾经完全合理的假设。架构图上看似清晰的设计,在生产环境中往往会变得分层、需要协商和调整。 没有任何系统会保持与最初版本完全相同。并发模型会被调整,数据结构会被替换,消息管道会被重写。部署流程会被简化——有时又会因新需求而再次复杂化。随着时间推移,挑战不再仅仅是让系统运行,而是确保系统在累积的决策下仍能持续稳定运行。 本系列旨在记录这一过程——不是作为完美成功的故事,而是作为一个持续的工程实践。内容将包括修正、结构性调整,以及最初的自信如何让位于更深层次理解的瞬间。系统的稳定性很少依赖单一的“正确决策”,它通常是迭代、约束与精炼的结果。 在基础设施级的 SaaS 系统中,演进不是可选项。真实流量会暴露隐藏的弱点;真实客户会带来重塑架构的新需求;真实的运维责任会改变权衡的评估方式。随着时间推移,工程工作不再只是增加功能,而是如何在适应变化的同时保持系统清晰可控。 如果你对实时架构、分布式设计权衡,或构建和维护必须持续运行的系统的实际挑战感兴趣,那么关注这段工程记录会对你有所启发。 感谢大家耐心阅读本系列内容,也非常期待各位的指正与交流——每一条反馈都是对工程思考的促进和完善。 需要说明的是,本系列分享的是一个真实的产品——升讯威在线客服与营销系统,它服务着真实用户,承载着实际业务场景。你可以访问我们的官网了解更多:https://kf.shengxunwei.com。 希望未来能与大家在架构设计、实时系统以及工程实践上进行更深入的探讨和交流,共同成长、共同进步。再次感谢关注与支持!为什么要写这个系列?
本系列将涵盖的内容
范围与界限
本系列适合谁阅读
如果你在设计 SaaS 基础设施,并发现架构决策很少能孤立存在——它们会波及部署模型、租户隔离、运维复杂性以及长期可维护性——你也会对本系列产生共鸣。长期的工程记录
致谢与后记


之前在 V2EX 分享过 3mins.news,一个 AI 驱动的全球新闻聚合站——每天从数百个信源中筛选最值得关注的新闻,3 分钟读完今天的世界。
上线以来收到了不少反馈,也一直在迭代。今天正式上线 Pro 计划,做个简单介绍,顺便回馈一下 V2EX 社区。
Free vs Pro
免费版已经覆盖了核心体验:每日精选新闻 + 11 种语言 + 邮件日报。
Pro 主要解锁这些:
定价 ¥19.9/月,年付 ¥199/年(省 17%)。新用户有 7 天免费试用。
V2EX 专属
感谢 V2EX 社区一直以来的支持,准备了 20 个永久免费 Pro 名额,先到先得:
优惠码:V2EX20
使用方式:注册后在 Pricing 页面点升级,Stripe 结账页输入优惠码即可。
技术栈(给感兴趣的朋友)
欢迎体验和反馈,有任何问题这里回复或者邮件 [email protected] 都可以。
规模不等于利润、员工不等于产出、融资不等于成功。 追求规模是别人的游戏,追求自由才是你的游戏。 大家好,我是数字游民Hugo。 今天看了些OPC相关文章,和大家聊聊我的认知共鸣。 你每天朝九晚六,做着不喜欢的工作,换取一份"稳定"的薪水。 你想过辞职创业,但一想到要租办公室、招员工、融资、管理团队——你就打了退堂鼓。 你觉得自己被困住了:打工没前途,创业太复杂。 你不是没有能力,你是没有找到适合你的模式。 真相是:传统创业的"做大"逻辑,正在被一种新模式颠覆。 看看那些融资几个亿的公司,最后倒闭时欠一屁股债。 看看那些管理几十人团队的创业者,每天处理的是人际关系而不是产品。 看看那些"成功"的老板,表面风光,背后被公司绑架,比打工还累。 规模不等于利润。 员工不等于产出。 融资不等于成功。 真正的自由,是用最小的投入,获得最大的回报,同时保留对时间的完全掌控。 这就是一人公司的核心逻辑。 一人公司不是"小公司",而是一种刻意保持小规模的商业哲学。 它的核心假设是: 第一,互联网让一个人可以触达百万用户。 你不需要销售团队,不需要渠道代理。一篇爆款文章、一条爆款视频,就能让你被千万人看见。 第二,自动化工具让一个人可以完成十人的工作。 AI 编程、AI 写作、AI 设计、自动化营销……2026 年的工具链,已经能让单人产出媲美小团队。 第三,数字产品的边际成本趋近于零。 你写一份电子书,卖 1 份和卖 1 万份,成本几乎一样。你录一套课程,1 个人学和 1 万人学,交付成本几乎为零。 当这三点成立,你就不需要团队来"放大"你的价值。 你需要的不是更多人手,而是更好的系统。 打工和传统服务业的问题在于:你的收入和时间挂钩。 一天只有 24 小时,你的天花板写死了。 一人公司的核心是产品化: 你创造一次,卖出无数次。睡觉时也在赚钱。 穷人卖时间,富人卖系统。 广告是花钱买注意力。内容是让注意力主动找你。 一人公司没有营销预算,但有一个秘密武器:持续输出有价值的内容。 当你持续输出 6 个月、1 年、3 年——你就建立了一个不需要付费就能持续获客的引擎。 一人公司的"一人"不是指所有事都亲力亲为。而是指决策层只有你一个人。 执行层,交给系统: 你的时间只用在两件事上:创造和决策。其他的,都应该被自动化或外包。 传统商业的陷阱是:有了 10 万收入就想做到 100 万,有了 100 万就想做到 1000 万。 于是你招人、扩张、承担更大的风险和压力。 一人公司的心法是:够了就是够了。 当你一个人年入 100 万,没有员工、没有办公室、没有债务—— 你的实际自由度,超过 99% 年入千万但被公司绑架的创业者。 追求规模是别人的游戏。追求自由,才是你的游戏。 别把它想得太复杂。简化到极致就是三步: 第一步:选择一个领域,持续输出内容 不需要完美,不需要专业,只需要真实和持续。 6 个月后,你会有第一批信任你的受众。 第二步:把你的知识打包成产品 可以是 99 元的电子书,可以是 999 元的课程,可以是 9999 元的咨询服务。 从小开始,快速验证。 第三步:建立自动化系统,解放你的时间 用工具替代重复劳动,把省下的时间投入到创造更好的内容和产品上。 循环往复,飞轮转动。 打工熬资历,或者创业背风险。 你也可以选择第三条路:一个人,一台电脑,一套系统,一种自由的生活方式。 这条路不适合所有人。 它需要耐心,需要自律,需要忍受早期没人关注的孤独。 但如果你想要的是真正的自由—— 对时间的掌控、对生活的选择权、对未来的安全感——一人公司是 2026 年最清晰的路径。 你不需要许可,不需要融资,不需要团队。 你只需要开始。 选择一个你擅长且热爱的领域,在任何一个平台发布你的第一篇内容。 不要等到准备好。你永远不会准备好。 即刻开始->现在就动起来,这是唯一的准备。 我是胡戈 Carey,一人公司 OPC 的实践者,专注 AI 编程应用开发领域。 📌 公众号:AI 编程开发创客实战 📌 视频号:胡氏真言 + 王炸实验 📌 私域:AI 赋能圈知识星球 大道至简,返璞归真。真诚利他,成人之美。 如果你也正在探索一人公司路径,欢迎在评论区聊聊 如果你也对AI编程应用开发感兴趣,欢迎关注一起同行 本文由mdnice多平台发布
01 你正在经历的困境
02 为什么"做大做强"是少数人的游戏
03 一人公司的底层原理
04 构建一人公司的四大支柱
支柱一:打造可复制的产品,而非出卖时间
支柱二:用内容获取信任,而非广告买流量
支柱三:自动化一切可自动化的
支柱四:保持小,是一种选择
05 一人公司的真实路径
06 最后,还有一个选择
07 今天就行动
一人公司 #数字游民 #个人IP #AI编程 #轻创业 #OPC
RAG系统返回了完美的文本块,提示词写得很漂亮,但LLM还是在产生幻觉;文档加得越多,回复质量反而越差。这些问题问题不出在提示词上,而是出在上下文上。 提示工程告诉模型怎么说话;context engineering 控制模型说话时看到什么。以下是把生产系统和Demo区分开的6种上下文工程技术。 Context engineering 是在运行时决定AI模型看到什么信息、何时看到、以何种结构看到的工程实践。 提示工程关注的是如何提问,context engineering 关注的是提供什么。 实际系统中,大语言模型出错往往不是因为理解不了指令,而是因为看到了太多不相关的信息、相互矛盾的数据,或者缺失了关键事实。Context engineering 把上下文当作一条动态管道来处理,而非一段静态提示词:选对文档而不是全量灌入;将长文档压缩为面向任务的摘要;在检索之前重新表述模糊的用户查询;跨会话注入记忆和用户状态;用实时工具和数据锚定答案;组织所有输入,让模型知道什么最重要。 一句话概括:context engineering 是在生产环境中控制模型注意力的手段。 上下文工程做得好,小模型也能有不错的表现;做得差,最好的模型照样幻觉。 如果我们把50个文档全部塞进上下文指望模型自己找到需要的内容。即便上下文窗口足够大,模型的注意力分布仍然不均匀,它会重点关注开头和结尾的 Token,中间部分被忽略。这就是所谓的"lost in the middle"效应。 正确的做法是评分、重排、裁剪,只让相关且不重复的片段进入上下文窗口。 以下三步逐层过滤。 相关性重排:初始搜索基于向量相似度或关键词匹配返回前50个结果,但相似不等于相关。交叉编码器会把查询和每个文档放在一起联合阅读,重新排序。速度慢一些准确度高得多,重排之后只保留前5个。 冗余消除:同一个概念在文档库里出现在多个地方是常态,比如营销材料、技术规格、FAQ都可能提到同一功能。用 Embedding 对相似文本块做聚类,余弦相似度超过0.9的基本就是重复内容删掉一个即可。模型不需要看同一个事实10遍。 任务感知过滤:利用元数据做筛选。每个文档都应打上标签:文档类型、最后更新日期、产品版本、地区、部门。查询进来时按相关维度过滤。 举个实际例子:查询是"总结最新的退款政策变更"。 过滤之前向量搜索返回50个关于退款的文本块,有些来自2018年旧政策,有些是其他公司的文档,有些是从未面向客户的内部备忘录。LLM看到了14天和30天窗口期的矛盾说法、不同的排除条款、相互冲突的流程,试图综合所有信息后幻觉出了一条根本不存在的政策。 过滤之后加上 和 两个条件,立刻排除40个文本块。剩余10个用交叉编码器重排,保留前5个再检查近似重复(余弦相似度 > 0.9)。最终送进上下文的只有3个高相关、无冗余的文本块。 LLM现在看到的是清晰的政策声明、具体的时间线和例外清单——全部最新,全部对齐。没有幻觉,没有混淆。 效果:提示更短,回答更清晰,没有矛盾。实验数据显示,移除噪声上下文后准确率提高15–30%,Token消耗降低20–40%。但真正的收益在于可追溯性——确切知道模型看到了什么上下文,才能调试失败;50个文本块全灌进去,只能靠运气。 实现上可以从简单处着手:给所有文档加 时间戳,按日期过滤,仅凭这一步就能消除大部分噪声。接着加重排,再加去重,根据实际效果逐步叠加复杂度。 长篇原始文档容易撑破上下文限制,同时稀释注意力。多个案例研究表明,经过压缩可以在保持甚至提升准确率的同时砍掉50–75%的 Token。 核心思路是在把长文档放进上下文之前,将其压缩成面向当前任务的密集摘要:不是通用摘要,而是针对当前查询定制的摘要。 三种压缩策略各有侧重。 带约束的LLM摘要:不要只说"总结这个文档",而是说"总结这个文档,只保留2025年1月之后关于定价变更的事实"。约束条件指明了保留什么、丢弃什么。每个检索到的文档根据查询生成各自的约束。产出从3000个 Token 缩减到5–10个要点。 句子级评分:用较小的模型(如BERT变体)为每个句子计算与查询的相关性分数,按分数排序后只保留前20%。这种方法叫Context-Preserving Compression,速度快,效果好,自动留下最相关的信息。 层次化摘要:适合非常长的文档。先按章节分块每个章节独立生成摘要,再把这些摘要归纳成一个元摘要。最终形成三级结构,完整文档 → 章节摘要 → 最终摘要。根据上下文预算选用合适的层级。 看一个实际例子。查询是"比较API文档中Plan A与Plan B的速率限制"。 API文档共30页,涵盖认证、速率限制、错误代码、Webhook、分页、SDK和变更日志,其中只有2页涉及速率限制。检索管道取回3个相关章节(共30页),每章10页。LLM摘要器收到的指令是:"仅提取Plan A和Plan B的速率限制和配额,包括具体数字,忽略认证、示例和其他功能。" 第一个章节的摘要(从10页压缩到100个 Token):"Plan A:1000次请求/小时,10,000次/天。Plan B:5000次请求/小时,50,000次/天。两个计划均允许1分钟内20%的突发流量。" 第二个章节的摘要:"速率限制错误返回HTTP 429。Retry-After头部指示等待时间。速率限制在UTC午夜重置。" 第三个章节的摘要:"企业版计划可定制速率限制。请联系销售团队。" 三份摘要合计500个 Token,加上查询一起送入最终生成。模型看到的恰好是它需要的内容,不必在认证流程或SDK示例里翻找。 模型拿到的是聚焦后的信息,而不是期望它从30页文档里正确提取相关部分。 代价是多了一步延迟,因为每个文档额外做一次LLM调用,3个文档就是3次。但最终生成调用中节省的 Token 往往更值钱。具体值不值得要看场景,文档超过2000个 Token 时,压缩的收益大于开销。 不要把所有内容混成一面文字墙。LLM对上下文前部和后部的注意力分配不同,结构化的分区能帮助它区分指令、数据和示例。 想想阅读研究论文的过程:摘要是总结,引言提供背景,方法部分有技术细节,讨论部分解读结果。这种结构让信息提取变得高效,LLM从同样的结构中受益。因此需要在上下文内部设计一套固定的、分区清晰的格式。 以下是一个经过验证的布局: 系统规则排在最前面,模型在任何其他内容之前先看到它们,用来划定行为边界。任务说明紧随其后,让模型明确目标。用户档案提供个性化信息——模型知道该用户偏好保守投资,之前多次问过HDFC,于是在组织答案时会相应调整侧重点。检索到的文档被标记为源材料,模型将其视为引用依据。工具输出标记为实时数据,意味着当前且权威,不是猜测。问题放在最后,模型在看到要回答什么之前已经掌握了所有上下文。 分区带来的好处很直接:每种信息的角色一目了然,矛盾指令减少,各部分可以独立替换而不破坏整体。在多智能体系统中这一点尤为关键,不同智能体需要不同的上下文布局。 为什么比非结构化上下文更好 可以自己做个测试,把5000 Token 的指令、数据、示例和问题全部混在一起扔给LLM,再用同样的信息以结构化分区呈现。对比准确率,结构化版本在多数领域胜出10–20%。 原因在于注意力模式:LLM在训练中学到了开头和结尾的文本更重要。把关键指令放在开头、问题放在结尾,是在顺应模型的注意力偏好而非与之对抗。 用户提出的问题往往是模糊的:缺少关键词、实体、时间范围。直接拿原始问题去检索效果不好,应该先让LLM重写或扩展查询。 已有研究证实,在检索前生成一条优化过的搜索查询能带来可观的准确率提升。 这看起来有点混乱,因为多加一步似乎应该让事情变复杂,但是其实逻辑很简单:模糊的查询返回模糊的结果,精确的查询返回精确的结果。 三种可行的模式。 澄清优先(适用于智能体场景),与其猜用户什么意思不如直接问。智能体回复:"要比较业绩表现,需要明确几个信息——哪个时间段?包含哪些竞争对手?最关注哪些指标(收入、利润还是市场份额)?"用户给出具体条件后,检索随之变得精确。这种策略只适用于多轮对话的智能体,单次问答系统用不上。但在智能体场景下效果很好——用户并不介意回答两三个澄清问题,如果换来的是更准确的答案。 HyDE(Hypothetical Document Embeddings)用户问"产品最新的改进有哪些",不直接用这个问题去搜索,而是让LLM先生成一段假答案:"最新的产品改进包括重新设计的仪表板、40%的加载速度提升、新增的协作功能和增强的移动端应用。"把这段假答案做 Embedding 后用于检索。为什么有效?因为假答案的措辞和实际文档的措辞一致。文档里不会写"最新的改进是什么",而会写"重新设计了仪表板""加载时间缩短了40%"。假答案的 Embedding 比原始问题的 Embedding 更贴近真实文档。 多查询扩展,对原始查询生成3–5个改写版本。"最新产品改进"可以展开为"最近的产品更新""本季度发布的新功能""产品增强变更日志""2.0版本有什么新内容"。每个查询分别检索,合并去重。这种方式能覆盖语义变体和不同的表述习惯。 举个实际例子。用户问"上季度的表现与竞争对手相比如何"。 这个问题里缺了太多信息:哪些竞争对手?哪一年的上季度?衡量什么指标——收入、利润、市场份额还是用户增长? LLM将其重写为"比较2024年第四季度(2024年10月至12月)公司X与竞争对手A、B、C在内部财务报告中的收入增长和利润率"。注意具体程度——精确的时间段、精确的竞争对手、精确的指标、明确的数据来源。检索时还会结合记忆中已知的竞争对手名单(层次化布局的用户档案部分记录了该用户之前多次查询过竞争对手A和B)。 最终上下文对齐的是用户的意图,而非用户键入的字面内容。LLM拿到的是精确数据,不是模糊相关的内容。 实现模式如下: 重写器需要能访问当前日期、用户档案和会话中的先前查询,从而推断出"上季度"对应的具体日期,以及"竞争对手"指的是哪几家公司。 初学者容易在这里混淆两个概念。检索回答的是当前问题;记忆保留的是用户关系。 检索是实时的,每次查询都在全部文档中搜索相关文本块,每次查询都被当作独立事件。今天问HDFC银行,明天再问,检索都是从零开始。 记忆则不同,它记住的是该用户三次问过HDFC银行,偏好保守型股票,住在印度,投资期限5–10年。这些信息跨会话持续存在。 正确的做法是给智能体配备持久化记忆,而不是依赖一条不断增长的历史字符串。把摘要、偏好和关键事实存下来,在每轮对话时重新注入。 三种记忆类型各有分工。 情景记忆,即过去对话的摘要。例如:"上次会话讨论了为法律文档构建RAG系统,用户关心的是如何处理100多页的合同,最终决定采用512 Token 块配合50 Token 重叠的语义分块策略。"注意,这不是完整的对话记录,而是一份200 Token 左右的摘要,只保留了关键内容。 语义记忆,存储在向量数据库中的过去交互记录。例如:"用户3周前问过关于HDFC的类似问题,当时问的是季度收益,当前查询是关于股息公告,两者都涉及HDFC的财务表现,可以复用之前查询中关于公司基本面的上下文。"语义记忆的价值在于发现模式:用户依次问了HDFC的收益、竞争对手、风险因素,可以判断他正在对HDFC做深度研究,从而主动推送相关信息。 偏好记忆,很少变化的稳定事实。"用户是初学投资者""偏好TypeScript""风险承受能力低""在医疗保健领域工作""位于孟买时区"。这些事实影响每一次交互——初学者得到更简洁的解释,低风险用户和高风险用户收到的建议完全不同。 为什么记忆比塞入完整聊天历史更好? 设想一个50轮的对话,轻松超过20,000个 Token。这些内容既塞不进上下文,也不应该塞进去——大部分与当前问题无关。换一种做法:50轮对话压缩为5个情景摘要(1000 Token),提取10个稳定偏好(200 Token),检索与当前问题最相关的3个历史情景(600 Token),合计1800 Token。信息量没有减少,聚焦程度高出一个量级。 只压缩和选取与当前轮次相关的部分,就能避开上下文限制,保持注意力清晰,让智能体在不依赖更大模型的情况下呈现出个性化效果。 落地时有两个执行点。每轮对话结束后做一次LLM摘要——"用户问了什么?提供了什么?用户表达了哪些偏好或需求?"——将摘要与 Embedding 一起存入向量数据库。每轮对话开始前,用当前查询在历史情景摘要库中做向量搜索,取回最相关的3条,再从另一张表加载稳定偏好(这些不需要向量搜索,每次都带上),全部插入层次化布局的 [User Profile / Memory] 区块。 用编程助手的场景来说明。 某用户在构建一个React仪表板,10次会话中先后问过状态管理、API集成、组件组合和测试方面的问题。存入记忆的内容如下: 当用户提了新问题"仪表板中如何处理实时更新",智能体在检索之前已经从记忆中看到了完整背景:React/TypeScript仪表板、Redux、Hooks偏好、医疗保健数据。于是可以直接给出上下文化的回答:"考虑到现有的Redux架构和对Hooks的偏好,建议使用Redux Toolkit的RTK Query配合WebSocket订阅,与当前模式完全兼容。" 对比一下没有记忆的智能体——它会先问"用什么框架?状态管理是什么?数据类型是什么?"用户已经回答过这些问题10遍了。记忆消除的正是这种重复带来的挫败感。 上下文保持聚焦,智能体行为保持一致,用户感到被理解。 通过Model Context Protocol (MCP)等协议配合函数调用,可以让模型以统一格式看到来自工具、API和数据库的实时数据。不要依赖静态的文本知识。这正是 context engineering 的一部分——改变的是运行时有什么信息进入上下文、以何种形式进入。工具输出作为结构化上下文注入后,幻觉率会大幅下降,答案的时效性也有保障。 纯LLM知识有一个根本问题:它是静态的。训练数据有截止日期,不知道今天的股价、当前天气、最新新闻或内部数据库的状态。工具通过运行时数据弥补了这个缺口,但集成不当的工具会引入新的问题。 MCP风格的工具注册。智能体没有硬编码的工具集成,而是在运行时发现可用工具。智能体发出请求:"什么工具可以解决当前问题?"MCP服务器返回工具描述、输入Schema和能力清单,模型据此决定调用什么。这意味着新增工具无需重新部署智能体——加到MCP服务器上即可,智能体自动发现。生产系统正是靠这种机制扩展到数十乃至上百个工具。 结构化的工具返回值。工具不应返回原始字符串,而应返回带有明确键的JSON: 、 、 、 。把这些结果作为层次化布局中的独立区块插入,标记为权威事实。例如,工具返回 ,模型看到的是结构化数据,知道1842.50是价格而不是文本中随意出现的一个数字。 带护栏的回答。对可靠性至关重要。在指令中写明:"只从 [Tool Outputs] 和 [Retrieved Context] 中回答。如果信息缺失,说'当前数据源中没有该信息。'绝不编造数字或事实。"一旦价格工具调用失败,模型会如实说明,而不是自行猜测。 用一个金融助手的场景贯穿整个流程。 查询是"HDFCBANK的最新股价和今天的新闻"。 智能体通过MCP发现可用工具: 、 、 、 、 。根据查询判断需要调用 和 ,拿到结构化响应: 这些内容插入层次化布局的 区块,末尾附上用户问题。模型生成的答案是:"HDFC Bank当前交易价格₹1,842.50,今日上涨2.3%。该银行宣布FY2024每股派息₹19。" 注意模型引用了来自工具输出的具体数字,没有产生幻觉,也没有把股息金额和股价搞混。 这里的关键信息是:提示词本身很简单,真正起作用的是工程化后的运行时上下文。模型表现好,是因为它看到了结构化的权威数据,而不是因为有一段完美的提示词。 实现路径上建议从3–5个关键工具开始,确保它们稳定可靠后再扩展。不要第一天就试图接入50个工具——每个工具都需要错误处理、重试逻辑、超时管理和结果校验,先把基础设施为少数工具搭建好。 选择性检索适用于文档集合庞大(1000+个文档)、检索返回结果过多(20+个文本块)、上下文接近容量上限(32K Token 附近)、或需要控制成本的场景。 压缩适用于文档篇幅长(单个超过5000 Token)、所需信息深埋在文本中、或按 Token 计费且需要成本优化的场景。如果文档本身已经很短(少于1000 Token),压缩带来的开销不划算。 层次化布局适用于多智能体系统(不同智能体需要不同的上下文结构)、多种上下文来源并存(文档、工具、记忆同时出现)、或需要分段调试(结构化分区让定位故障变得容易)的场景。单轮问答且只有一个来源时,布局多半是多余的。 查询重构适用于用户常提出模糊问题(消费类产品中的常见情况)、领域有专业术语但用户不使用(医疗、法律、金融领域)、或查询与文档之间存在词汇鸿沟(用户说"退款",文档写"退货授权")的场景。 记忆适用于对话式智能体(聊天产品、编程助手)、用户跨会话回访(有登录体系的B2B产品)、需要个性化(推荐、偏好起决定性作用)、或对话轮数超过20轮导致历史上下文溢出的场景。 工具感知上下文适用于答案依赖实时数据(股价、天气、库存)、构建的是智能体而非纯对话机器人(智能体会采取行动,聊天机器人只输出文本)、准确性取决于信息时效(不能凭空生成数字)、或需要降低幻觉率(工具提供事实依据)的场景。 每种技术都有代价。重排消耗算力,压缩需要额外的LLM调用,记忆需要存储空间,工具需要API调用。收益是否覆盖成本,需要衡量。一个更简单的管道准确率稍低一点,有时候比一个复杂10倍、成本也高10倍的管道更合适。 https://avoid.overfit.cn/post/7be5e3180f7641c48da7d2e73da76224 by Divy Yadav
什么是 Context Engineering
选择性检索:别再把什么都往里塞

region='CN'updated_at >= 2025-01-01last_updated上下文压缩:让每个 Token 都有价值

层次化布局:结构本身就在传达重要性

[System Rules]
You are a precise financial research assistant.
Answer only from provided context.
If information is missing, say "I don't have that information."
Never make assumptions about numerical data.
[Task]
Goal: Answer user question using context below.
Output format: Start with direct answer, then provide supporting details.
[User Profile / Memory]
- Risk tolerance: Low
- Investment horizon: 5-10 years
- Region: India
- Previous sessions: Asked about HDFC Bank 3 times, showed interest in banking sector
- Preferences: Conservative investments, dividend-paying stocks
[Retrieved Context]
DOC 1: HDFC Bank Q4 2024 earnings report
- Revenue: ₹45,000 crores (up 15% YoY)
- Net profit: ₹12,000 crores (up 18% YoY)
- NPA ratio: 1.2% (improved from 1.5%)
DOC 2: Competitor analysis Q4 2024
- ICICI Bank revenue growth: 12% YoY
- SBI profit growth: 10% YoY
- HDFC Bank leading in digital banking adoption
[Tool Outputs]
- live_price("HDFCBANK"): ₹1,842.50 (updated 2 minutes ago)
- news_summary("HDFCBANK"): "Announced dividend of ₹19 per share for FY2024. Ex-dividend date March 15, 2025."
- sector_analysis("Banking"): "Banking sector up 8% this month due to positive earnings"
[Question]
User: What's the latest on HDFC Bank?动态查询重构:修复模糊问题

User query
↓
LLM rewriter: "Expand this into a precise search query.
Add time ranges, entity names, and specific metrics."
↓
Rewritten query
↓
Retrieval记忆与状态:保留的是关系,不只是事实

工具感知上下文:把答案锚定在现实中

pricedatesourceconfidence{"price": 1842.50, "currency": "INR", "timestamp": "2025-02-19T14:30:00Z", "source": "NSE", "change": "+2.3%"}get_live_priceget_newsget_historical_dataget_competitorsget_analyst_ratingsget_live_priceget_news {
"get_live_price": {
"symbol": "HDFCBANK",
"price": 1842.50,
"currency": "INR",
"timestamp": "2025-02-19T14:30:00Z",
"change": "+2.3%",
"volume": 12500000
},
"get_news": {
"articles": [
{
"headline": "HDFC Bank Announces ₹19 Dividend",
"summary": "Board approves dividend of ₹19 per share for FY2024",
"date": "2025-02-19",
"source": "Economic Times"
}
]
}
}[Tool Outputs]决策框架
总结
开情趣用品店和开普通网店最大的不同,就是必须先办好资质。这一步是所有后续动作的基础,务必认真对待。 几乎所有主流电商平台都要求成人用品店以企业身份入驻,个人身份证无法直接开设。你需要去当地市场监督管理局,注册一个营业执照。如果你的经营范围包含“成人用品”、“医疗器械”、“卫生用品”等,会更顺利。初期可以注册成本较低的个体工商户(约500元),如果后期月销售额突破10万,再考虑升级为企业 这是至关重要的一步。如果你想销售避孕套、验孕棒、润滑液等产品(它们属于二类医疗器械),必须有这个备案凭证。没有它,你的店铺品类会被严重限制。办理是免费的,需要向公司注册地的区级市场监督管理局申请。 基础资质:约500元(个体工商户注册)。 你的目标是找能做“一件代发”的供应商,这样你就不用自己囤货和发货了,风险小很多。 在1688精准搜索:在1688网站搜索产品关键词时,务必加上“一件代发” 这四个字,这样能筛选出支持该服务的供应商。 筛选优质供应商:在搜索结果页,可以进一步勾选筛选条件,重点关注: “一件代发”(核心条件) “48小时发货”(保证发货速度) “金牌供应商”或“实力商家”(通常更有保障)。 深入沟通与考察:不要只看网页信息,一定要和供应商聊一聊。 咨询关键问题:比如价格体系、退换货政策(产品有质量问题怎么处理)、发货时效、是否支持使用ERP软件批量下单等。 索要授权:如果打算卖品牌产品,务必索要完整的品牌授权书,确保自己卖的是正品,避免侵权风险。 先买样品:在决定长期合作前,自己先下单买个样品,亲自检查产品质量、包装和发货速度,这是最靠谱的验货方式。 资质齐全,供应商也找好了,接下来就是把店开起来,把商品上架。 注册淘宝店铺: 登录淘宝卖家中心(千牛卖家工作台),用你的企业或个体工商户营业执照,完成店铺的注册。 缴纳1000元基础保证金。 特别提醒:完成注册后,务必去后台申请开通“成人用品”类目的经营权限,并上传你的《第二类医疗器械经营备案凭证》等待审核。 绑定1688账号: 在千牛卖家工作台,找到【淘货源】应用。 进入后,点击【授权管理】,用你的1688账号扫码或登录,完成两个平台的绑定。 申请供应商授权: 在【淘货源】里找到你看中的供应商和商品,点击“申请分销”或“我要代发”。对方在后台同意后,你们才算正式建立了合作关系。 将商品“铺货”到淘宝:这是把1688的商品信息一键导入到你淘宝店铺的过程,有几种方法: 方法一(官方工具,推荐):在1688商品页面点击“一键代发”,选择“官方铺淘工具”,系统会自动把商品信息同步到你的千牛卖家中心,你只需要在千牛里补充修改,就能发布了。 方法二(千牛工具):直接在千牛工作台的【商品】-【铺货入淘】里,粘贴1688的商品链接,也能实现一键导入。 当有顾客在你的淘宝店下单后,就进入了订单处理流程。 接收订单:顾客付款后,订单会出现在你的千牛卖家中心。 向供应商下单: 新手期(手动下单):你需要登录1688,进入【分销管理】-【采购单】,找到对应的订单,核对买家的收货信息,然后支付货款给供应商。支付成功后,供应商就会安排发货。 熟练期(自动下单):当订单量增多后,可以在淘管家后台设置“自动下单”和“自动分账”。系统会直接从你的账户扣除货款给供应商,并自动将发货信息同步回淘宝,实现全流程自动化。 回填物流信息:供应商发货后,你需要将快递单号复制下来,回到千牛后台,在对应的订单处点击“发货”,填入单号。如果系统能自动同步,这一步就不需要人工操作了。 店开起来了,怎么让更多人看到呢?这里有几个适合新手的起步方法: 持续上新:开店初期,保持稳定的上新频率,有助于提升店铺的活跃度和权重。 参加官方活动:淘宝有很多免费的官方活动可以报名。比如“超级立减”和“营销托管”。“营销托管”是按成交付费的推广工具,系统帮你推广,卖出去了才收费,对新手来说比较友好。 做好基础推广:如果预算允许,可以尝试开直通车进行关键词推广。从低出价开始,测试哪些词能带来转化,慢慢优化你的推广计划。 严守规则,避免踩坑: 图片:主图不得出现裸露、性暗示画面,要用产品实拍图。 标题和描述:绝对不能使用“催情”、“壮阳”、“治疗”等违规词汇,宣传要实事求是。 服务:一定要做好隐私发货,这是情趣用品行业的核心服务之一。 资质是硬门槛:再次强调,成人用品类目审核非常严格,没有资质寸步难行。这是你所有计划里最核心、最优先的一步。 警惕“零门槛”陷阱:对于声称“零门槛授权”的品牌要格外小心,很可能是质量没保障的贴牌产品。 知识产权是红线:绝不能销售假冒伪劣产品,尊重他人的商标和专利权,否则面临封店风险。 祝你开店顺利!如果在具体操作中遇到任何问题,比如在1688上不知道怎么筛选靠谱供应商,或者不确定某个标题是否合规,随时可以再来问我~准备
办理营业执照(企业或个体工商户)
办理《第二类医疗器械经营备案凭证》(当前版本不考虑)
准备启动资金
淘宝保证金:1000元基础保证金。如果你卖的是特殊商品(如助勃器),保证金会更高(约5000元)。
首批货款:约1.5万-2万元。初期建议选择一件代发,可以减少囤货压力,但即便不囤货,也建议先采购少量样品回来看看质量。
运营工具:如生意参谋(流量分析工具)1188元/年,初期也可以先不开,等店铺有起色后再考虑。在1688寻找可靠的供应商
在淘宝开店并上架商品
处理订单,完成发货
运营店铺,获取流量
注意事项

随着工业化进程加快和生活垃圾排放量增加,水体污染问题日益严峻,漂浮垃圾成为河道、湖泊、水库等水域环境监测的重要指标。水面垃圾不仅影响生态环境和水质安全,还会阻碍水流、破坏景观,甚至对水生生物产生危害。传统人工巡检和清理方式效率低、成本高,难以满足大规模水域环境监测的需求。 近年来,计算机视觉和深度学习技术的发展,为水面漂浮垃圾的自动检测与识别提供了新的解决方案。基于图像识别的智能监测系统可以实时检测水面垃圾类型和分布情况,辅助环保管理部门开展科学治理、数据分析和决策支持。因此,构建一份高质量、水面漂浮垃圾标注数据集,对于水域环境监测、智慧河道管理以及环保科研应用具有重要价值。 水面5种垃圾目标检测数据集 本数据集面向水体环境监测与水面漂浮垃圾智能识别场景构建,主要用于训练与评估基于深度学习的目标检测模型(如 YOLO等)。 数据集总规模约 8000 张高质量图像,全部完成精细化人工标注,适用于水面垃圾检测算法的训练、验证与测试。 数据集中共包含 5 个目标类别,类别定义清晰,覆盖水面高频垃圾类型: 类别编号 英文类别名 中文含义 上述类别在水体环境中具有较高出现频率,对水质评估与水域治理具有重要监测意义。 真实水面场景采集:包含反光、水波、遮挡、背景干扰等复杂环境因素 类别分布合理:覆盖常见水面垃圾形态与材质差异 标注质量高:人工逐帧校验,目标边界精准 即插即用:无需额外处理即可直接训练 YOLO 模型 工程落地性强:适合水环境监测、智慧河道、环保监管等实际项目 本数据集共包含 约8,000张高质量水面图像,覆盖河道、湖泊、水库等多种水域场景,拍摄环境真实,包含反光、水波、遮挡和背景干扰等复杂因素。每张图像均经过人工精细标注,提供目标边界框信息,可直接用于目标检测模型训练和评估。 数据集已完成训练、验证和测试集划分,可直接适配YOLO及其他主流目标检测模型。 随着环境保护和生态治理理念的不断深入,水体污染问题日益成为城市与乡村管理的重要课题。漂浮在水面上的垃圾不仅影响水质和景观,还会破坏水生生态系统,甚至造成河道堵塞和安全隐患。传统的人工巡查和清理方式效率低、成本高,难以覆盖大范围水域,无法满足现代水环境监测和治理的需求。随着计算机视觉和深度学习技术的发展,通过图像识别实现水面垃圾的自动检测和分类成为可能,为智慧河道、环保监管和水质评估提供了新的解决方案。针对这一需求,本数据集专注于水面漂浮垃圾目标检测,收集了约8,000张覆盖河道、湖泊、水库等多种水域环境的高质量图像,并针对五类高频漂浮垃圾——瓶子、易拉罐、纸盒、纸张和塑料制品——进行了精细化人工标注。数据集在采集过程中充分考虑了复杂水面环境因素,包括水波反光、遮挡、背景干扰等,使得训练出的模型在真实场景中具备更高的鲁棒性与泛化能力。该数据集不仅可直接用于YOLO系列及其他主流目标检测模型训练和评估,也适用于水环境监测、智慧河道管理、环保科研以及深度学习算法研究,为推动水域污染治理、提升环保监管智能化水平提供了坚实的数据基础和技术支撑。 数据集聚焦水面常见垃圾,包含5个类别,类别定义清晰,覆盖高频出现的垃圾类型: 本水面垃圾目标检测数据集以真实水面环境为基础,提供高质量图像和精确标注,可直接用于目标检测模型的训练、验证和测试。数据集覆盖五类高频漂浮垃圾,适应复杂环境条件,兼顾科研实验和工程应用需求。无论是智慧河道监控、水质评估、环保监管,还是深度学习算法研究和模型优化,该数据集都能为模型训练和智能化水面监测系统开发提供可靠的数据支撑,为推动水环境治理和环保技术智能化提供坚实基础。 总体来看,本水面5种垃圾目标检测数据集是一份兼具科研价值与工程应用价值的高质量数据资源,涵盖约8,000张真实水面场景图像,覆盖河道、湖泊、水库等多种水域环境。数据集中包含瓶子、易拉罐、纸盒、纸张和塑料制品五类高频漂浮垃圾,标注精准,类别定义清晰,可直接适配YOLO系列及其他目标检测模型。数据采集过程中充分考虑了复杂环境因素,如水面反光、水波、遮挡及背景干扰,使得模型训练后的泛化能力和鲁棒性更强。该数据集不仅适用于目标检测模型训练与评估,还可用于水环境监测、智慧河道管理、环保监管系统开发,以及深度学习算法研究和复杂场景识别实验。从科研角度,它可支持小目标检测、复杂背景识别、模型性能优化及鲁棒性分析;从工程应用角度,它能够为水面垃圾自动识别、智能巡检、数据驱动清理调度以及水质管理提供可靠的数据基础。整体而言,本数据集为水域环境智能监测提供了切实可行的技术支撑,是推动水环境治理、提升环保监管自动化和智能化水平的重要资源。水面5种垃圾目标检测数据集(8000+张图片已划分、已标注)| AI训练适用于目标检测任务
一、项目背景


数据集下载
链接:https://pan.baidu.com/s/1mWyiyUSh-YgixFvb5KxM9w?pwd=7a7m
提取码:7a7m
数据集聚焦于真实水面环境中常见的五类漂浮垃圾目标,覆盖河道、湖泊、水库等多种水域背景,具有较强的实际应用价值。
0 bottle 瓶子
1 can 易拉罐
2 carton 纸盒
3 paper 纸张
4 plastic 塑料制品二、数据集概述
📂 数据目录结构
dataset/
├── train/
│ ├── images/
│ └── labels/
├── valid/
│ ├── images/
│ └── labels/
├── test/
│ ├── images/
│ └── labels/train/images:训练集图像valid/images:验证集图像test/images:测试集图像labels:YOLO格式标注文件
三、数据集类别说明
类别编号 英文类别名 中文含义 0 bottle 瓶子 1 can 易拉罐 2 carton 纸盒 3 paper 纸张 4 plastic 塑料制品 特点说明

四、适用场景
🌊 水环境监测
🧹 智慧河道与环保监管
🤖 深度学习模型训练与研究
五、数据集优势

六、结语
公司花了 5W/年 开通了腾讯位置服务的商业授权,目前及未来大概率都由我一个人管理。由于公司目前业务有限,key 的调用额度是过剩的。想请教各位大佬,有没有什么路子或项目能把这些冗余的额度变现?
我看了很多 V 站很多人发的个人项目,大致分为三类:
1、急于盈利:开发出来现做各种邀请码、激活码功能,在论坛送一波推广一下,为后面做准备,有些急功近利,很多东西不需要搞什么激活码,搞了就是为了盈利,而早期产品处于初级阶段更重要的是吸纳用户、获取返回、改进产品,逐步推进商业化。
2、一时兴起与跟风:突然想到什么,先搓一个,没有长久打算,说不定什么时候就停了,别人做了什么,自己也搞一个。消耗自己精力的同时对用户不负责,我是用还是不用呢?
3、开源、免费:单机、WEB 单页都没问题,如果是需要中心服务器的,也会存在 2 的问题,是否会持续下去,对于开发者来说如何收回成本?如果只是想无偿,那么需要尽可能的降低成本,最小成本去维持运转。开源的话会有被窃取的可能,提前要有心理准备。
目前本站也有这些内容,不过 1 还没遇到,2、3 的话希望开发者能计算成本,考虑是否长期维护,开发不难,日后运营才是最难的,我维护的站点处于维持阶段,在考虑降本问题,将成本维持到 200 元-500/年,是我目前认为可以接受的,现在单服务器成本已经超过了预期。
原本想着 618 换 iPhone 17pro 512g 的,毕竟内存疯涨,感觉明年的 18 会更贵。但是今天新闻说国产厂商已经扛不住要开始涨价了,感觉这下 apple 更加有恃无恐了,是现在入手还是再等等好呢各位
本人 8 年后端开发经验,熟悉 Golang 、.NET 和 PHP ,最近逛了一圈 Boss 直聘发现至少 85%的岗位要求垂直经验。
由于之前在公司做的项目多为单体应用和“分布式单体”,可观测性和规范几乎为零,所以自己造一个微服务架构的个人项目来深度实践补足短板,包含工程化管理、CI/CD 、决策记录、更新日志等,可观测性、链路追踪、重试、限流、API 网关、集群资源规划、分布式事务等等应有尽有,5 台服务器塞了一大堆组件,资源极端受限,还有压测报告和负载测试报告,迭代到 6.3.2 ,用 Github Project 管理迭代,经过多个版本的优化,P95 延迟从 1150ms 减少到 34ms ,最大延迟从 22700ms 降低到 213ms ,全部按生产级的要求来做,目前是事件驱动架构,有一些自创的组件。
我知道个人项目很难被认可所以加了压测和负载测试等来证明不是玩具项目。
过去在公司工作的时候接触的项目架构非常乱,我是知道怎么改更好但阻力很大做不了,甚至 Gitflow 都很难推动,可观测性差,日志要到服务器捞,相对好一点的是放到 ES ,链路追踪和集中化日志管理等完全没有机会实践,CI/CD 更不用说了,大部分是 Shell 。学习大量技能和架构设计却一直没有实战机会,比如领域驱动、事件驱动、微服务等内容早已掌握,然而架构集中在领导手里,所以架构层面的工作顶多是微调和优化,实际上更高阶的技能已经掌握。
第二是多次陷入“高聘低录”的困局,无论经验技能多么丰富,入职后一律被压到最低职级没什么话语权,想要中高级只能熬资历慢慢爬,招聘广告说可以给对应的职级但入职后没有兑现承诺。最近一份工作也是如此,和我一同入职的人有一个也是 8 年经验被压到初级。自己还有产品思维,能考虑到整个产品的生命周期,架构设计错误、需求设计好坏,能否解决用户痛点,存在什么风险我都能判断出来,什么架构好该怎么做都知道,但因僵化的流程无法发挥,能力被低估。
目前最头疼的问题还是垂直经验,即同类项目的开发经验,中高级 Golang 开发需要架构经验和主导开发项目的经验,这些都没有。请问一下如何突破垂直经验限制转型 Golang 开发?
想做密码校验、文件指纹、接口签名时,很多人会接触 SHA 系列算法。它是不可逆的哈希算法,输出固定长度的摘要,适合用于校验一致性,而不是用来“解密”。 这款工具是我用 Vue 开发的网页小工具,界面简单,打开即用。核心计算在浏览器本地完成,不需要上传原文,适合对隐私比较敏感的场景。 使用方式也很直观:把要处理的文本粘贴到输入框,工具会实时生成 SHA 结果;需要时还可以复制结果用于系统配置、日志比对或接口签名。 适用场景: 注意事项: 如果你只是想快速得到可靠的 SHA 摘要,打开工具即可完成,无需安装任何软件。SHA在线加密工具分享
在线工具网址:https://see-tool.com/sha-encryptor
工具截图:
装起来很简单,下面用大白话一步步说,跟着做就能装上。 下载安装包 确认系统版本 用管理员身份运行(推荐) 选安装位置: 附加任务: 填任务信息: 分类管理: 保存文件: ToDoList是 ToDoList 任务管理工具 的主程序,这玩意儿能帮你列待办、设提醒、分优先级,做计划、管项目、安排生活都好用,比手机备忘录功能强,还能存成本地文件不怕丢。一、准备工作
ToDoList.exe→ 选“以管理员身份运行”,防止权限不足装不上。二、安装步骤
ToDoList.exe运行(如果右键过了就直接双击)。C:\Program Files\AbstractSpoon\ToDoList,可点 Browse 改到其他盘(比如 D 盘)。三、首次使用与基本操作
.tdl文件,下次打开接着用。
这篇文章聚焦本项目中 SHA 在线加密工具的核心 JS 实现思路,强调数据在浏览器端完成计算的流程组织与结果生成方式。 工具的本质是把输入文本稳定地映射为固定长度的摘要。实现上以浏览器原生加密能力为核心,通过统一的数据编码、哈希计算与结果格式化,保证输出一致且可复现。 输入内容变化时触发计算流程。文本先被规范为字符串,再通过编码器转换为字节序列,避免不同环境的字符编码差异造成结果不一致。这个字节序列是哈希算法的直接输入。 核心计算使用 Web Crypto API 的摘要能力,算法类型作为参数传入,返回二进制缓冲区。该过程是异步的,计算完成后再进入结果处理阶段。整个流程可被封装为一个纯函数式的异步方法,便于在响应式场景中复用。 摘要结果需要从二进制转换为十六进制字符串,便于展示与复制。常见做法是遍历字节数组,将每个字节转换为两位十六进制并拼接成最终字符串,确保长度稳定且前导零不丢失。 实现可以拆为四层:输入规范化、字节编码、摘要计算、结果格式化。每一层都保持纯函数,便于组合和测试,也让响应式框架更容易驱动结果更新。 下面是 SHA 计算的核心 JS 代码,包含算法校验、文本编码、摘要计算与十六进制输出。默认使用 SHA-256,也可以通过参数切换其他 SHA 算法。 用户输入频繁变化时,异步计算可能出现结果乱序。可以用递增序号的方式只保留最新一次结果,保证界面始终显示最新输入的哈希值。 把输入、算法选择、结果状态拆成独立状态即可形成清晰的数据闭环。输入或算法变化时触发计算,输出只由最新一次计算决定。SHA在线加密 核心JS实现
在线工具网址:https://see-tool.com/sha-encryptor
工具截图:
核心思路
数据流
哈希计算
结果格式化
代码结构
核心计算
const supportedAlgorithms = new Set(['SHA-1', 'SHA-256', 'SHA-384', 'SHA-512'])
const normalizeInput = (value) => {
if (typeof value === 'string') return value
if (value === null || value === undefined) return ''
return String(value)
}
const encodeText = (text) => {
return new TextEncoder().encode(text)
}
const toHex = (buffer) => {
const bytes = new Uint8Array(buffer)
let result = ''
for (const byte of bytes) {
result += byte.toString(16).padStart(2, '0')
}
return result
}
const shaHex = async (text, algorithm = 'SHA-256') => {
const normalized = normalizeInput(text)
if (!normalized) return ''
if (!supportedAlgorithms.has(algorithm)) {
throw new Error('不支持的算法类型')
}
const data = encodeText(normalized)
const hashBuffer = await crypto.subtle.digest(algorithm, data)
return toHex(hashBuffer)
}并发处理
const createShaRunner = () => {
let taskId = 0
return async (text, algorithm, onResult) => {
const currentId = ++taskId
try {
const hash = await shaHex(text, algorithm)
if (currentId !== taskId) return
onResult({ hash, error: '' })
} catch (error) {
if (currentId !== taskId) return
onResult({ hash: '', error: error?.message || '计算失败' })
}
}
}状态驱动
import { ref, watch } from 'vue'
const inputText = ref('')
const algorithm = ref('SHA-256')
const outputHash = ref('')
const errorText = ref('')
const runSha = createShaRunner()
const compute = async () => {
await runSha(inputText.value, algorithm.value, ({ hash, error }) => {
outputHash.value = hash
errorText.value = error
})
}
watch([inputText, algorithm], compute, { immediate: true })
如下图,身处四川,总是忍不住点进去看。
