[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-thousandbrainsproject--tbp.monty":3,"tool-thousandbrainsproject--tbp.monty":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":84,"languages":85,"stars":105,"forks":106,"last_commit_at":107,"license":108,"difficulty_score":109,"env_os":110,"env_gpu":110,"env_ram":110,"env_deps":111,"category_tags":115,"github_topics":116,"view_count":23,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":120,"updated_at":121,"faqs":122,"releases":155},2536,"thousandbrainsproject\u002Ftbp.monty","tbp.monty","Monty is a sensorimotor learning framework based on the thousand brains theory of the neocortex.","Monty 是一个开源的感觉运动学习框架，由“千脑计划”（Thousand Brains Project）开发。它旨在模拟大脑新皮层的工作原理，特别是基于神经科学家 Vernon Mountcastle 提出的皮质柱理论，因此得名 Monty。作为一个早期测试版本的项目，Monty 致力于构建能够像生物智能体一样，通过感知与动作的交互来学习和理解世界的 AI 系统。\n\n传统的人工智能模型往往依赖海量静态数据进行训练，而 Monty 试图解决的是如何让机器在动态环境中，通过类似人类的“感觉运动”体验（即结合感官输入与身体动作）进行高效学习。这种机制让 AI 不仅能识别物体，还能理解其空间结构和物理属性，从而更接近真正的通用智能。\n\nMonty 的核心技术亮点在于其独特的“千脑理论”架构，强调分布式表征和层级化的预测处理。它不依赖传统的反向传播算法，而是通过模拟大脑皮层列的功能单元来处理信息，这为探索下一代类脑智能提供了全新的技术路径。\n\n这款工具主要面向人工智能研究人员、神经科学爱好者以及底层算法开发者。如果你对类脑计算、认知架构或新型机器学习范式感兴趣，Monty 提供了一个宝贵的实验","Monty 是一个开源的感觉运动学习框架，由“千脑计划”（Thousand Brains Project）开发。它旨在模拟大脑新皮层的工作原理，特别是基于神经科学家 Vernon Mountcastle 提出的皮质柱理论，因此得名 Monty。作为一个早期测试版本的项目，Monty 致力于构建能够像生物智能体一样，通过感知与动作的交互来学习和理解世界的 AI 系统。\n\n传统的人工智能模型往往依赖海量静态数据进行训练，而 Monty 试图解决的是如何让机器在动态环境中，通过类似人类的“感觉运动”体验（即结合感官输入与身体动作）进行高效学习。这种机制让 AI 不仅能识别物体，还能理解其空间结构和物理属性，从而更接近真正的通用智能。\n\nMonty 的核心技术亮点在于其独特的“千脑理论”架构，强调分布式表征和层级化的预测处理。它不依赖传统的反向传播算法，而是通过模拟大脑皮层列的功能单元来处理信息，这为探索下一代类脑智能提供了全新的技术路径。\n\n这款工具主要面向人工智能研究人员、神经科学爱好者以及底层算法开发者。如果你对类脑计算、认知架构或新型机器学习范式感兴趣，Monty 提供了一个宝贵的实验平台。需要注意的是，目前 Monty 仍处于活跃开发的早期阶段，代码尚未达到生产环境就绪的标准，功能仍在不断演进中。建议用户通过官方文档、基准测试实验及社区论坛深入了解其当前能力与应用边界，并积极参与贡献与讨论，共同推动这一前沿领域的发展。","![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_readme_72d8da5e8485.png)\n\n# Welcome to the Monty Repository!\n\n*An open-source, sensorimotor learning system following the principles of the neocortex.*\n\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002Fmit)\n![PyPI - Python Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.8-blue)\n[![](https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Factions\u002Fworkflows\u002Fmonty.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Factions\u002Fworkflows\u002Fmonty.yml)\n\nThis repository contains the first implementation of a **sensorimotor learning system** from the **Thousand Brains Project**. We lovingly call it **Monty** after Vernon Mountcastle, who proposed cortical columns as a repeating functional unit across the neocortex.\n\nThis is an open-source project that was initially started at Numenta. The Thousand Brains Project is now an independent non-profit, partially funded by the Gates Foundation.\n\nPlease find our [**full documentation** here](https:\u002F\u002Fthousandbrainsproject.readme.io\u002F)\n\nOur [**API documentation** here](https:\u002F\u002Fapi-monty.thousandbrains.org).\n\n# Getting Started\n\nYou can find detailed instructions on how to install the project requirements and how to get started [here](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fgetting-started)\n\n# Current Performance\nWe regularly evaluate this system against a set of sensorimotor tasks, and report results in **[benchmark experiments](.\u002Fbenchmarks\u002F)**. Any time a functional change is made to the code, these experiments are rerun, and results are updated. Configs for these experiments can be found in the [src\u002Ftbp\u002Fmonty\u002Fconf\u002Fexperiment\u002F](.\u002Fsrc\u002Ftbp\u002Fmonty\u002Fconf\u002Fexperiment\u002F) folder.\n\nYou can find our current performance on these benchmarks as well as an explanation of them [here](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fbenchmark-experiments).\n\n\n# Contributing\n\nAre you interested in contributing? Check out our tips and guidelines [here](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fcontributing).\n\nBefore contributing, please sign our Contributor License Agreement (CLA). You can find the CLA and guidelines [here]( https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fcontributor-license-agreement).\n\n# Disclaimer\nThis is not production-ready code. It is an **early beta version** that is under active development. This early beta version is functional but evolving. Expect frequent changes as we develop core features.\n\nYou can find a list of the systems **current capabilities and application criteria** [here](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fapplication-criteria).\n\nYou can find our **project road map** and details on the next features we are working on [here](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fproject-roadmap).\n\n# More Information and Updates\nAs mentioned above, we have extensive **documentation** of this project [here](https:\u002F\u002Fthousandbrainsproject.readme.io\u002F).\n\n[![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_readme_7bcdb1e0b945.png)](https:\u002F\u002Fthousandbrainsproject.readme.io\u002F)\n\nWe also publish our meeting recordings on **YouTube** on the [Thousand Brains Project channel](https:\u002F\u002Fwww.youtube.com\u002F@thousandbrainsproject).\n\n[![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_readme_77102822f3c1.png)](https:\u002F\u002Fwww.youtube.com\u002F@thousandbrainsproject)\n\nIf you want to use this code, contribute to it, ask questions or propose ideas, please consider joining [our discourse channel](https:\u002F\u002Fthousandbrains.discourse.group\u002F).\n\n[![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_readme_bbedf74a4bc2.png)](https:\u002F\u002Fthousandbrains.discourse.group\u002F)\n\nIf you would like to receive updates, follow us on [Bluesky](https:\u002F\u002Fbsky.app\u002Fprofile\u002Fthousandbrains.org) or [Twitter](https:\u002F\u002Fx.com\u002F1000brainsproj) or [LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fthousand-brains-project\u002F).\n\nIf you have further questions or suggestions for collaborations, don't hesitate to contact us directly at **info@thousandbrains.org**.\n\n# Citing the Project\nIf you're writing a publication that references the Thousand Brains Project, please cite \n\n[TBP white paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.18354):\n```\n@misc{thousandbrainsproject2024,\n      title={The Thousand Brains Project: A New Paradigm for Sensorimotor Intelligence},\n      author={Viviane Clay and Niels Leadholm and Jeff Hawkins},\n      year={2024},\n      eprint={2412.18354},\n}\n```\n\n\nIf you would like to refer to Monty's capabilities and advantages over deep learning, please cite\n\n[Thousand-Brains Systems: Sensorimotor Intelligence for Rapid, Robust Learning and Inference](https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.04494):\n```\n@misc{leadholm2025thousandbrainssystemssensorimotorintelligence,\n      title={Thousand-Brains Systems: Sensorimotor Intelligence for Rapid, Robust Learning and Inference}, \n      author={Niels Leadholm and Viviane Clay and Scott Knudstrup and Hojae Lee and Jeff Hawkins},\n      year={2025},\n      eprint={2507.04494},\n      archivePrefix={arXiv},\n      primaryClass={cs.AI},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.04494}, \n}\n```\n\nIf you would like to reference the theory behind this novel AI approach, here you can find a list of [neuroscience theory papers](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Ffurther-reading#our-papers).\n\n\n# License\n\nThe MIT License. See the [LICENSE](LICENSE) for details.\n","![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_readme_72d8da5e8485.png)\n\n# 欢迎来到 Monty 仓库！\n\n*一个遵循新皮层原理的开源感觉运动学习系统。*\n\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002Fmit)\n![PyPI - Python 版本](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.8-blue)\n[![](https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Factions\u002Fworkflows\u002Fmonty.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Factions\u002Fworkflows\u002Fmonty.yml)\n\n本仓库包含了“千脑计划”首个 **感觉运动学习系统** 的实现。我们亲切地称其为 **Monty**，以纪念提出皮层柱作为新皮层中重复功能单元的弗农·芒特卡斯尔。\n\n这是一个开源项目，最初由 Numenta 公司启动。如今，“千脑计划”已成为一家独立的非营利组织，部分资金来自盖茨基金会。\n\n请在此处查阅我们的 [**完整文档**](https:\u002F\u002Fthousandbrainsproject.readme.io\u002F)\n\n以及我们的 [**API 文档**](https:\u002F\u002Fapi-monty.thousandbrains.org)。\n\n# 开始使用\n\n您可以在 [这里](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fgetting-started) 找到关于如何安装项目依赖及入门的详细说明。\n\n# 当前性能\n我们定期针对一组感觉运动任务对该系统进行评估，并在 **[基准实验](.\u002Fbenchmarks\u002F)** 中报告结果。每当代码发生功能性改动时，这些实验都会重新运行，结果也会随之更新。相关实验的配置文件位于 [src\u002Ftbp\u002Fmonty\u002Fconf\u002Fexperiment\u002F](.\u002Fsrc\u002Ftbp\u002Fmonty\u002Fconf\u002Fexperiment\u002F) 文件夹中。\n\n您可以在此处查看当前的基准测试表现及其说明：[https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fbenchmark-experiments](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fbenchmark-experiments)。\n\n# 贡献\n您有兴趣参与贡献吗？请查看我们的提示与指南：[https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fcontributing](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fcontributing)。\n\n在贡献之前，请签署我们的贡献者许可协议（CLA）。您可以在 [这里](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fcontributor-license-agreement) 找到 CLA 及相关指南。\n\n# 免责声明\n此代码尚未达到生产就绪状态。它是一个处于积极开发中的 **早期测试版**。该版本功能完备，但仍在不断演进。随着核心功能的开发，预计会频繁出现变更。\n\n您可以在此处找到系统的 **当前能力及应用条件** 列表：[https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fapplication-criteria](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fapplication-criteria)。\n\n此外，您还可以在此处查看我们的 **项目路线图** 以及正在开发的新功能详情：[https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fproject-roadmap](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fproject-roadmap)。\n\n# 更多信息与更新\n如前所述，我们为此项目准备了详尽的 **文档**，请访问：[https:\u002F\u002Fthousandbrainsproject.readme.io\u002F](https:\u002F\u002Fthousandbrainsproject.readme.io\u002F)。\n\n[![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_readme_7bcdb1e0b945.png)](https:\u002F\u002Fthousandbrainsproject.readme.io\u002F)\n\n我们还通过 YouTube 上的“千脑计划”频道发布会议录像：[https:\u002F\u002Fwww.youtube.com\u002F@thousandbrainsproject](https:\u002F\u002Fwww.youtube.com\u002F@thousandbrainsproject)。\n\n[![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_readme_77102822f3c1.png)](https:\u002F\u002Fwww.youtube.com\u002F@thousandbrainsproject)\n\n如果您希望使用此代码、为其做出贡献、提出问题或建议想法，请考虑加入我们的 [Discourse 论坛](https:\u002F\u002Fthousandbrains.discourse.group\u002F)。\n\n[![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_readme_bbedf74a4bc2.png)](https:\u002F\u002Fthousandbrains.discourse.group\u002F)\n\n若想获取最新动态，欢迎关注我们在 [Bluesky](https:\u002F\u002Fbsky.app\u002Fprofile\u002Fthousandbrains.org)、[Twitter](https:\u002F\u002Fx.com\u002F1000brainsproj) 或 [LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fthousand-brains-project\u002F) 上的账号。\n\n如有进一步的问题或合作意向，请随时通过 **info@thousandbrains.org** 直接联系我们。\n\n# 引用本项目\n如果您撰写引用“千脑计划”的论文，请参考以下文献：\n\n[TBP 白皮书](https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.18354)：\n```\n@misc{thousandbrainsproject2024,\n      title={The Thousand Brains Project: A New Paradigm for Sensorimotor Intelligence},\n      author={Viviane Clay and Niels Leadholm and Jeff Hawkins},\n      year={2024},\n      eprint={2412.18354},\n}\n```\n\n若您希望提及 Monty 相较于深度学习的能力与优势，请引用：\n\n[千脑系统：用于快速、稳健学习与推理的感觉运动智能](https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.04494)：\n```\n@misc{leadholm2025thousandbrainssystemssensorimotorintelligence,\n      title={Thousand-Brains Systems: Sensorimotor Intelligence for Rapid, Robust Learning and Inference}, \n      author={Niels Leadholm and Viviane Clay and Scott Knudstrup and Hojae Lee and Jeff Hawkins},\n      year={2025},\n      eprint={2507.04494},\n      archivePrefix={arXiv},\n      primaryClass={cs.AI},\n      url={https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.04494}, \n}\n```\n\n若需参考这一新型 AI 方法背后的理论，您可以在此处找到相关的 **神经科学理论文献列表**：[https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Ffurther-reading#our-papers](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Ffurther-reading#our-papers)。\n\n# 许可证\n\nMIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。","# tbp.monty 快速上手指南\n\n**Monty** 是 Thousand Brains Project 开源的感觉运动学习系统，遵循新皮层原理。本项目目前处于早期 Beta 阶段，主要用于研究和实验。\n\n## 环境准备\n\n*   **Python 版本**：需要 Python 3.8 或更高版本。\n*   **操作系统**：支持 Linux、macOS 和 Windows（建议在 Linux 环境下以获得最佳兼容性）。\n*   **前置依赖**：建议在使用前安装 `pip` 和 `venv` 虚拟环境工具。\n\n## 安装步骤\n\n为了隔离依赖，建议使用虚拟环境进行安装。请在终端中执行以下命令：\n\n1.  **克隆仓库**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty.git\n    cd tbp.monty\n    ```\n\n2.  **创建并激活虚拟环境**\n    ```bash\n    python -m venv venv\n    source venv\u002Fbin\u002Factivate  # Linux\u002FmacOS\n    # venv\\Scripts\\activate   # Windows\n    ```\n\n3.  **安装项目依赖**\n    ```bash\n    pip install -e .\n    ```\n    *注：如果下载速度较慢，可临时添加国内镜像源参数，例如：`pip install -e . -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`*\n\n## 基本使用\n\n由于 Monty 是一个复杂的感觉运动学习框架，最简单的验证方式是运行内置的基准测试或查看配置示例。\n\n1.  **查看实验配置**\n    项目的核心逻辑通过配置文件驱动。你可以浏览以下目录了解现有的实验设置：\n    ```bash\n    ls src\u002Ftbp\u002Fmonty\u002Fconf\u002Fexperiment\u002F\n    ```\n\n2.  **运行基准测试（示例）**\n    根据官方文档，你可以通过运行特定的基准实验来验证安装是否成功。具体的运行命令取决于你想测试的任务（如物体识别等）。以下是一个通用的运行入口示例（具体参数需参考完整文档）：\n\n    ```bash\n    # 示例：运行某个预定义的实验配置\n    # 请根据 src\u002Ftbp\u002Fmonty\u002Fconf\u002Fexperiment\u002F 中的实际 yaml 文件替换 \u003Cconfig_name>\n    python -m tbp.monty.run_experiment --config-name=\u003Cconfig_name>\n    ```\n\n3.  **进一步探索**\n    *   **完整文档**：[https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fgetting-started](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fgetting-started)\n    *   **API 文档**：[https:\u002F\u002Fapi-monty.thousandbrains.org](https:\u002F\u002Fapi-monty.thousandbrains.org)\n\n> **注意**：此代码为早期 Beta 版本，功能仍在积极开发中，API 可能会频繁变动。生产环境请谨慎使用。","某机器人研发团队正在开发一款用于复杂仓储环境的自主导航机械臂，其核心挑战在于让机器人在光线变化大、物体遮挡严重的情况下，仅通过有限的触觉和视觉传感器就能准确识别并抓取未知形状的工业零件。\n\n### 没有 tbp.monty 时\n- **依赖海量静态数据**：传统深度学习模型需要成千上万张标注好的零件图片进行训练，一旦遇到训练集中未包含的新奇形状或罕见角度，识别率急剧下降。\n- **缺乏空间推理能力**：系统仅能处理二维图像特征，无法真正理解物体的三维几何结构，导致机械臂在抓取不规则物体时经常因位姿估计错误而失败。\n- **被动感知效率低**：机器人只能被动接收传感器数据，无法像人类一样通过主动移动摄像头或机械手去“探索”物体被遮挡的部分，导致在严重遮挡下完全无法工作。\n- **泛化能力极差**：每增加一种新零件，都需要重新采集数据并微调模型，部署周期长，维护成本高昂，难以适应多品种小批量的生产需求。\n\n### 使用 tbp.monty 后\n- **小样本快速学习**：基于千脑理论的感觉运动学习机制，使机器人只需通过几次主动触摸和观察，就能构建出新零件的3D参考框架，无需海量预训练数据。\n- **真正的3D理解**：tbp.monty 将感官输入映射到皮层柱状结构中，让机器人建立起物体的空间位置模型，即使只看到局部，也能推断出整体形状和最佳抓取点。\n- **主动探索策略**：系统具备主动感知能力，当信息不足时，机器人会自动调整视角或接触位置以获取关键特征，显著提升了在遮挡环境下的识别成功率。\n- **极强的泛化性**：由于学习的是通用的空间结构和感觉运动规律，而非死记硬背图像像素，面对从未见过的新物体也能快速适应，大幅降低了新产线的部署门槛。\n\ntbp.monty 的核心价值在于赋予机器类似生物的智能，使其从被动的数据识别者转变为能主动理解物理世界的智能体，彻底解决了传统AI在非结构化环境中泛化能力弱的难题。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fthousandbrainsproject_tbp.monty_72d8da5e.png","thousandbrainsproject","Thousand Brains Project","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fthousandbrainsproject_bfc653db.png","Reverse engineering the neocortex 🧠 to revolutionize AI 🤖. An open-source initiative. ",null,"info@thousandbrains.org","1000brainsproj","https:\u002F\u002Fthousandbrains.org","https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject",[86,90,94,98,102],{"name":87,"color":88,"percentage":89},"Python","#3572A5",99.1,{"name":91,"color":92,"percentage":93},"JavaScript","#f1e05a",0.5,{"name":95,"color":96,"percentage":97},"CSS","#663399",0.3,{"name":99,"color":100,"percentage":101},"HTML","#e34c26",0.1,{"name":103,"color":104,"percentage":101},"Makefile","#427819",511,298,"2026-04-02T21:18:26","MIT",4,"未说明",{"notes":112,"python":113,"dependencies":114},"README 中未列出具体的依赖库列表、GPU 或内存需求，仅提供了 Python 版本要求。详细安装指南和依赖项需参考外部文档链接 (https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fgetting-started)。该项目处于早期 Beta 阶段，非生产就绪代码。","3.8+",[],[13],[117,118,119,76],"machine-learning","sensorimotor-learning","sensorimotor-inference","2026-03-27T02:49:30.150509","2026-04-06T10:23:44.354454",[123,128,132,137,141,146,150],{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},11706,"在 Apple Silicon (ARM64) Mac 上创建 Conda 环境失败，提示找不到 habitat-sim 或 mkl 依赖怎么办？","这是由于依赖冲突导致的。错误信息表明 `habitat-sim` 0.2.2 版本不存在，且 PyTorch 需要的 `mkl \u003C 2022` 和 `blas * mkl` 无法在 ARM64 平台上满足。建议检查 `environment_arm64.yml` 文件中的版本指定是否正确，或者尝试使用更新的、支持 ARM64 的包版本。如果问题持续，可以考虑在项目讨论区（如 Discourse）寻求针对 MacOS ARM64 的具体配置建议，因为官方可能正在推进脱离 Conda 或使用其他模拟器后端（如 MuJoCo）的方案。","https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fissues\u002F81",{"id":129,"question_zh":130,"answer_zh":131,"source_url":127},11707,"在 MacOS 上运行项目时遇到 ModuleNotFoundError: No module named 'tbp' 错误如何解决？","这通常是因为 Python 环境未正确识别项目根目录或包未安装。确保你在项目的根目录下运行命令，并且已经正确安装了 `tbp.monty` 包（例如通过 `pip install -e .` 或类似的开发模式安装）。如果在 VS Code 中运行正常但在终端报错，请检查终端激活的虚拟环境是否与 VS Code 中使用的环境一致。",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},11708,"为什么项目要尝试脱离 Conda 依赖？目前的进展如何？","Conda 依赖被视为阻碍项目发展的因素，特别是在依赖解析和环境隔离方面。目前的解决方案包括：1. 构建自定义的 `habitat-sim` 分发版并发布到私有制品库；2. 减少模拟器协议的复杂性，以便更容易集成其他模拟器（如 MuJoCo）；3. 探索使用 `uv` 等现代 Python 包管理工具。这些工作旨在提高用户体验并简化安装过程。","https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fissues\u002F684",{"id":138,"question_zh":139,"answer_zh":140,"source_url":136},11709,"在 ARM Mac 上集成 MuJoCo 模拟器面临哪些主要障碍？","主要障碍包括：1. MuJoCo（即使是 Python 3.8 版本）无法通过 Rosetta 在 x86 版本的 Python 上运行，必须使用原生的 ARM64 Python；2. 需要减少模拟器协议的表面面积，使其最小化，以便更容易适配不同的模拟器后端。目前团队正在通过重构代码，将模拟器协议简化为最低限度，以解决这些兼容性问题。",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},11710,"如何简化模拟器协议以便于集成新的模拟器（如 MuJoCo）？","建议将模拟器协议减少到最低限度。具体做法是合并 `simulators\u002Fsimulator.py`、`habitat\u002Fsimulator.py` 等文件，提取出所有模拟器都必须实现的最小接口集。这不仅减少了新模拟器（如 MuJoCo）的实现工作量，也使得尝试不同的序列化或通信方式变得更加容易。可以参考 `prototype.simulator` 仓库中的实验性代码，但不要直接合并，而是提取其核心思想。","https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fissues\u002F506",{"id":147,"question_zh":148,"answer_zh":149,"source_url":145},11711,"在重构 Monty 核心代码时，随机数生成器上下文 (ctx\u002FRNG) 应该如何传递？","目标是让 `ctx` 成为 Monty 中唯一的随机数生成源。这意味着 `ctx` 必须通过 `Monty.step(...)` 传入，并进一步传递给 `_matching_step(...)` 和 `_exploratory_step(...)` 等内部方法。虽然这会改变许多方法的签名，但能确保随机性的可控性和可复现性。不要在各个模块中独立初始化 RNG，而是始终从传入的 `ctx` 中获取。",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},11712,"如何区分和组织单元测试与集成测试？","应将混合了单元和集成行为的测试拆分。例如，使用真实 `HabitatSim` 行为的测试应移至 `tests\u002Fintegration\u002F` 目录；涉及 Hydra 配置组合和主程序运行的测试也属于集成测试。同时，测试文件的路径应与被测试的模块路径相匹配，例如 `tests\u002Funit\u002Fobject_model_test.py` 应移动到 `tests\u002Funit\u002Fframeworks\u002Fmodels\u002Fobject_model_test.py`，以保持项目结构清晰。","https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fissues\u002F769",[156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251],{"id":157,"version":158,"summary_zh":159,"released_at":160},62197,"v0.29.0","## 重大变更\n\n### 功能性更新：可配置的定位程序 (#863)\n\n现在，要运行 `GetGoodView` 定位程序，实验必须先对其进行配置。\n\n### 重构：仅由 MotorSystem 控制 `motor_only_step` 的初始值 (#864)\n\n环境接口不再在 `MotorSystem` 上设置 `motor_only_step`。目前（在我们重构为更优设计之前），这项工作由电机策略的 `pre_episode(...)` 方法负责。\n\n### 重构：不在 env_interface 上保存观测和本体感觉信息 (#866)\n\n环境接口的 `.step(actions)` 方法不再接受 `first` 参数。\n\n### 重构：环境接口不再设置电机系统状态 (#870)\n\n- 环境接口、Monty 和电机系统 API 发生变化，以将本体感觉状态从环境传递到 Monty 再传递到电机系统。\n- 策略中的 `get_agent_state()` 方法已不再使用，并被移除。\n\n### 重构：电机系统与环境接口解耦 (#871)\n\n环境接口的构造函数不再接收电机系统作为参数。\n\n### 重构：删除 InformedEnvironmentInterface 并移除 EnvironmentInterface._step (#872)\n\n- `InformedEnvironmentInterface` 已被删除。在使用它的地方，已被 `EnvironmentInterfacePerObject` 替代。\n- `EnvironmentInterface.step` 现在始终需要一个（可能为空的）动作列表。\n\n### 重构：移除 ID Hydra 解析器 (#878)\n\n`agent_id_resolver` 和 `sensor_id_resolver` 已被移除。\n\n### 重构：策略通过 __call__ 方法接收知觉信息 (#883)\n\n此 Pull Request 通过在电机系统和策略调用中提供所需的知觉信息，移除了 `processed_observations` 及其相关副作用。\n\n## 变更内容\n* 功能性更新：可配置的定位程序，作者 @tristanls-tbp，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F863 中\n* 重构：仅由 `MotorSystem` 控制 `motor_only_step` 的初始值，作者 @tristanls-tbp，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F864 中\n* 杂项：在基准测试中添加 num_episodes，作者 @hlee9212，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F868 中\n* 重构：不在 env_interface 上保存观测和本体感觉信息，作者 @tristanls-tbp，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F866 中\n* 重构：环境接口不再设置电机系统状态，作者 @tristanls-tbp，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F870 中\n* 重构：电机系统与环境接口解耦，作者 @tristanls-tbp，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F871 中\n* 重构：删除 InformedEnvironmentInterface 并移除 EnvironmentInterface._step，作者 @scottcanoe，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F872 中\n* 文档：从文档中移除 InformedEnvironmentInterface，作者 @tristanls-tbp，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F873 中\n* 杂项：组合式对象数据集 v2，作者 @scottcanoe，在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F874 中\n* 重构：移除 ID Hy","2026-04-02T19:12:43",{"id":162,"version":163,"summary_zh":164,"released_at":165},62198,"v0.28.0","## 破坏性变更\n\n### refactor!: 重命名 HabitatSalienceSM (#859)\n\n将 `HabitatSalienceSM` 重命名为 `SalienceSM`，以消除与其是否与 Habitat 相关的混淆。\n\n### feat!: 通过组合性使 Hydra 配置更易用 (#857)\n\n对 Hydra 配置进行了大规模重构，使其更易于使用和维护。\n\n## 变更内容\n* refactor: 修复 environments\u002Ftwo_d_data.py 中的 ANN001 违规问题，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F834 中完成。\n* refactor: Monty 调用 MotorSystem.pre_episode 方法，由 @scottcanoe 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F858 中完成。\n* refactor!: 重命名 HabitatSalienceSM，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F859 中完成。\n* ci: 在 CI 中通过 xdist 稳定覆盖率上下文收集，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F837 中完成。\n* feat!: 通过组合性使 Hydra 配置更易用，由 @hlee9212 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F857 中完成。\n* chore: 版本 0.28.0，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F865 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.27.0...v0.28.0","2026-03-26T20:51:07",{"id":167,"version":168,"summary_zh":169,"released_at":170},62199,"v0.27.0","## 破坏性变更\n\n### 重构！：统一向量和四元数类型别名 (#847)\n\n此更改将 `VectorXYZ` 和 `QuaternionWXYZ` 的定义统一到一处。同时，更新了 `AgentState` 和 `SensorState`，使其使用 `VectorXYZ` 来表示位置，以避免在 Habitat 模拟器外部传递 `magnum.Vector3` 值。\n\n### 重构！：将电机系统步骤作为 Monty 步骤的一部分 (#845)\n\n- 环境接口的 `.step(...)` 方法不再调用 `motor_system()` 来生成动作。注意：在获取 `get_good_view()` 时仍会调用电机系统。\n- 环境接口的 `.step(...)` 方法不再接受 `RuntimeContext`。\n- Monty 模型的 `.step(...)` 现在会调用 `motor_system()` 来生成并返回动作。\n- 将 Monty 模型的 `pass_infos_to_motor_system(...)` 方法改为 `motor_only_step(...)` 方法，该方法不仅执行原有功能，还会生成并返回动作。`motor_only_step(...)` 方法本质上是一个绕过学习模块的 `step(...)`。\n\n## 变更内容\n* 重构！：由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F847 中实现的向量和四元数类型别名统一\n* 重构：修复简单的 ANN001 违规 - 第一部分，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F835 中完成\n* 杂项：支持基准测试表格中的隐藏 CSV 列，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F850 中实现\n* 重构！：将电机系统步骤作为 Monty 步骤的一部分，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F845 中完成\n* 杂项：版本 0.27.0，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F855 中发布\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.26.0...v0.27.0","2026-03-12T17:28:18",{"id":172,"version":173,"summary_zh":174,"released_at":175},62200,"v0.26.0","## 破坏性变更\n\n### 重构！：`motor_only_step` 成为 `MotorSystem` 的属性 (#825)\n\n`motor_only_step` 不再是运动系统状态的一部分，而是作为一个独立的 `MotorSystem` 属性。\n\n### 重构！：`touch_object` 子程序仅封装在 `SurfacePolicy` 中 (#827)\n\n`touch_object` 子程序现在完全由 `SurfacePolicy` 封装。\n\n### 重构！：策略处理跳跃尝试 (#826)\n\n执行跳跃尝试现在在 `InformedPolicy` 内部进行，而不是由环境接口驱动。\n\n### 重构！：环境接口返回状态 (#840)\n\n环境接口现在除了返回 `Observations` 外，还会返回 `ProprioceptiveState`。\n\n### 重构！：`EnvironmentInterface.step` 方法接受动作 (#841)\n\n环境接口的 `step` 方法现在可以接受 `actions`。\n\n### 重构！：`get_edge_index` 工具函数现为对象方法 (#843)\n\n原先独立的工具函数已被移至 `GraphObjectModel` 类中，作为其方法之一。\n\n### 重构！：删除数据收集实验模块 (#848)\n\n`DataCollectionExperiment` 模块已被移除。\n\n## 变更内容\n* 重构！：`motor_only_step` 成为 `MotorSystem` 的属性，作者 @tristanls-tbp，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F825\n* 重构！：`touch_object` 仅封装在 `SurfacePolicy` 中，作者 @tristanls-tbp，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F827\n* 重构：对于跳跃操作，不再将 `motor_only_step` 设置为 `true`，作者 @scottcanoe，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F824\n* 文档：建议将 Conda 安装在项目根目录之外，作者 @TimothyAlexisVass，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F828\n* 重构！：策略处理跳跃尝试，作者 @scottcanoe，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F826\n* 杂项：修复 LOG015 违规问题：使用模块日志记录器代替根日志记录器调用，作者 @TimothyAlexisVass，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F831\n* 重构：修复 `environment_utils\u002Fgraph_utils.py` 中的 ANN001 违规问题，作者 @TimothyAlexisVass，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F832\n* 重构！：环境接口返回状态，作者 @scottcanoe，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F840\n* 重构！：`EnvironmentInterface.step` 方法接受动作，作者 @tristanls-tbp，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F841\n* 重构！：`get_edge_index` 工具函数现为对象方法，作者 @tristanls-tbp，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F843\n* 重构：`two_d_data` 方法的返回值现与返回类型一致，作者 @tristanls-tbp，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F842\n* 重构！：删除数据收集实验模块，作者 @scottcanoe，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F848\n* 杂项：版本 0.26.0，作者 @tristanls-tbp，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F849\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.25.0...v0.26.0","2026-03-05T19:19:15",{"id":177,"version":178,"summary_zh":179,"released_at":180},62201,"v0.25.0","## 破坏性变更\n\n### 重构！：从 MotorSystem 和 MotorPolicies 中移除未使用的实验模式 (#795)\nMotorSystem 和 MotorPolicies 类中未使用实验模式，因此已将其移除。\n\n### 重构！：移除 HabitatObservation (#799)\nHabitatObservation 是 SensorObservation 的子集，因此前者已被后者取代。\n\n### 重构！：将 HabitatSM重命名为 CameraSM (#802)\nHabitatSM 并不特定于 Habitat，因此被重命名为 CameraSM。\n\n### 重构！：策略返回策略结果对象 (#793)\n作为使电机策略可互换的持续项目的一部分，进行了多项重构。\n\n### 重构！：MotorSystem 和 MotorPolicy 接收观测值 (#811)\n`MotorSystem.__call__`、`MotorPolicy.__call__` 和 `MotorPolicy.dynamic_call` 现在都需要观测值——即上一步的“原始观测值”。\n\n### 重构！：episode_step 仅适用于 PredefinedPolicy；episode_count 已废弃 (#817)\n`episode_step` 不再在 `BasePolicy` 中定义，而是下移到了使用它的 `PredefinedPolicy` 中。`episode_count` 未被使用，已被移除。\n\n### 重构！：移除 post_actions() 和 InformedPolicy.actions (#820)\n从所有策略中移除 `post_actions` 方法。\n\n### 重构！：将 policy.dynamic_call 重写为 policy.__call__ (#821)\n直接将 `dynamic_call` 重构为 `__call__`。\n\n## 变更内容\n* ci：为 Linux Monty 发布使用更大规格的机器，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F797 中提出。\n* 重构！：从 `MotorSystem` 和 `MotorPolicies` 中移除未使用的实验模式，由 @AgentRev 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F795 中完成。\n* ci：当不相关的 CI 工作流发生变化时，无需运行 Monty，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F798 中提出。\n* 杂项：基准测试现在使用突发采样作为假设更新器，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F783 中完成。\n* 文档：在学习模块文档中添加突发采样说明，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F789 中完成。\n* 重构！：移除 HabitatObservation，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F799 中完成。\n* 重构！：将 HabitatSM 重命名为 CameraSM，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F802 中完成。\n* ci：Linux64 Conda 构建配方——调试版，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F803 中完成。\n* ci：尝试在 Linux 构建中使用 Conda 25.5.1；关闭调试模式，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F805 中完成。\n* ci：两个 Conda 构建目标使用相同的 Conda 版本，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F806 中完成。\n* 测试：使对称姿态断言能够鲁棒地处理等效的欧拉角编码，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F810 中完成。\n* 重构！：策略返回策略结果对象，由 @scottcanoe 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpul","2026-02-26T17:42:34",{"id":182,"version":183,"summary_zh":184,"released_at":185},62202,"v0.24.0","## 破坏性变更\n\n### 修复！：正确清除 eval_env_interface_args 的 Hydra 覆盖 (#781)\n\n部分世界基准测试无法正常运行。此修复修正了相关配置。\n\n### 重构！：更改定位程序参数的管理方式 (#777)\n\n- 将与 `GetGoodView` 相关的属性的所有权从 `InformedPolicy` 转移至 `InformedEnvironmentInterface`。\n- 在适用于 `GetGoodView` 的地方，将 `desired_object_distance` 重命名为 `good_view_distance`。\n- `SurfacePolicy` 现在新增了一个用于物体接触目的的 `desired_object_distance` 属性。\n- 最后，`min_perc_on_obj` 是一个孤立的 `Policy` 属性，因此已从代码库中移除。\n\n### 重构！：将 Monty.pre_episode 的随机数生成器通过 RuntimeContext 移至 Monty.step (#756)\n\n从 `Monty.pre_episode(...)` 中移除随机数生成器，并改为通过 `RuntimeContext` 在以 `Monty.step(...)` 开始的方法调用中传递它。\n\n### 修复！：修复无监督学习配置 (#792)\n\n无监督学习实验的配置存在功能问题。此修复修正了相关配置。\n\n### 重构！：将 Habitat 传感器状态重新合并为一个 (#791)\n\nHabitat 模拟器通过将两个或三个传感器作为一个整体来实现 RGBD 传感器。此次重构避免了在报告 RGBD 传感器本体感受状态时暴露这一实现细节。\n\n### 重构！：PredefinedPolicy 与其他策略一样 (#744)\n\n策略中不再需要区分 `dynamic_call` 和 `predefined_call`。原本使用 `predefined_call` 的场景现在由一个新的策略 `PredefinedPolicy` 承担。\n\n## 变更内容\n* 杂项：按照源模块层级重新组织基线单元测试路径 —— @TimothyAlexisVass，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F778\n* 测试：根据项目结构移动测试文件——第一部分 —— @TimothyAlexisVass，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F782\n* 测试：将单元测试和集成测试行为拆分到不同文件——第一步 —— @TimothyAlexisVass，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F779\n* 修复！：正确清除 eval_env_interface_args 的 Hydra 覆盖 —— @ramyamounir，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F781\n* 重构！：更改定位程序参数的管理方式 —— @scottcanoe，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F777\n* 修复：处理 `fixme_undo_last_action` 中的 `last_action=None` 情况 —— @ramyamounir，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F784\n* 测试：将单元测试和集成测试行为拆分到不同文件——第二步 —— @TimothyAlexisVass，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F780\n* 文档：更新 monty 与世界基准测试的相关内容 —— @ramyamounir，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F788\n* 文档：在常见问题页面中添加指向《公约》页面的链接 —— @scottcanoe，见 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F790\n* 重构！：将 `Monty.pre_episode` 的随机数生成器通过 `RuntimeContext` 移至 `Monty.step`","2026-02-19T15:49:44",{"id":187,"version":188,"summary_zh":189,"released_at":190},62203,"v0.23.0","## 破坏性变更\n### 重构！：使用 Hydra 实例化 MotorPolicy (#766)\n\n将电机策略的实例化方式改为通过 Hydra 进行依赖注入，而非使用 `*_class` 和 `*_args` 的模式。\n\n### 重构！：EnvironmentInterfaces 不再是迭代器 (#763)\n\n移除 `EnvironmentInterface` 中的迭代器实现。\n\n### 重构！：将重采样重命名为突发采样 (#773)\n\n将所有出现“重采样”的地方（如类名、变量名、文档字符串等）统一更名为“突发采样”。同时，将模块名称从 `resampling_hypotheses_updater` 缩短为 `burst_sampling`（而不是 `burst_sampling_hypotheses_updater`）。\n\n## 变更内容\n* 重构！：由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F766 中提出，使用 Hydra 实例化 MotorPolicy\n* 文档：坐标系约定，由 @scottcanoe 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F682 中提出\n* 重构：用 Pydantic 的 `to_snake` 替代自定义的 `to_snake` 函数，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F770 中提出\n* 文档：更新 MAINTAINERS 文件，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F771 中提出\n* 功能：为监督预训练实验启用基础和详细日志记录，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F711 中提出\n* 文档：修复 models\u002Fmixins 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F727 中提出\n* 重构！：EnvironmentInterfaces 不再是迭代器，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F763 中提出\n* 故意忽略 COM812，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F772 中提出\n* 重构！：将重采样重命名为突发采样，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F773 中提出\n* CI：添加 PR 标题检查，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F775 中提出\n* 杂项：版本 0.23.0，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F776 中提出\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.22.0...v0.23.0","2026-02-12T20:25:32",{"id":192,"version":193,"summary_zh":194,"released_at":195},62204,"v0.22.0","## 破坏性变更\n\n### feat!: 使用 Monty 打包配置；使其对用户可见 (#710)\n\n所有配置现位于 `src\u002Ftbp\u002Fmonty\u002Fconf` 目录下，并随 Monty 发行版一起打包。\n\n### refactor!: 在成功跳跃后不再调用 `get_good_view_with_patch_refinement` (#747)\n\n这会对远距离智能体的基准测试结果引入可接受的小幅变化，并更新了 `base_10multi_distinctobj_dist_agent` 的预期结果。\n\n### refactor!: 将 `PositioningProcedure` 从 `Policy` 中分离 (#749)\n\n`PositioningProcedure` 不再属于 `Policy` 的继承链。\n\n### refactor!: `HabitatSalienceSM` 接受协作者实例而非类型 (#755)\n\n更新 `HabitatSalienceSM` 构造函数的参数，使其接受实例而非类型。此举与我们向依赖注入转型的方向一致。\n\n### refactor!: 使 `MotorPolicy` 接受 `ActionSampler` 实例 (#758)\n\n更新电机策略构造函数的参数，使其接受 `ActionSampler` 的实例。此举与我们向依赖注入转型的方向一致。\n\n### refactor!: 使用 `ExperimentMode` 枚举替代“eval”和“train”字符串 (#760)\n\n将字符串替换为 `ExperimentMode` 枚举。\n\n### refactor!: 使 `EvidenceGraphLM` 接受 GSG 实例 (#761)\n\n更新 `EvidenceGraphLM` 构造函数的参数，使其接受目标状态生成器的实例。此举与我们向依赖注入转型的方向一致。\n\n### refactor!: `BasePolicy.action` 已废弃。移至 `InformedPolicy`。(#764)\n\n移除 `BasePolicy` 中未使用的参数。同时移除了在构造函数中直接调用随机数生成器的操作，从而更便于向 `RuntimeContext` 中的随机数生成器转移使用。此举与我们向依赖注入转型的方向一致。\n\n### refactor!: `MotorSystem` 和 `MotorPolicy` 通过 `RuntimeContext` 访问随机数生成器 (#762)\n\n`MotorSystem` 和电机策略不再直接访问 `self.rng`，而是通过 `RuntimeContext` 获取并调用随机数生成器。\n\n## 变更内容\n* feat!: 使用 Monty 打包配置；使其对用户可见，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F710 中实现。\n* docs: 修复 frameworks\u002Futils 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F729 中完成。\n* docs: 清理尾部空白，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F748 中完成。\n* docs: 修复 simulators\u002Fhabitat 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F722 中完成。\n* refactor!: 在成功跳跃后不再调用 `get_good_view_with_patch_refinement`，由 @scottcanoe 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F747 中实现。\n* refactor!: 将 `PositioningProcedure` 从 `Policy` 中分离，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F749 中实现。\n* docs: 修复 models\u002Fevidence_matching 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F728 中完成。\n* docs: 修复 frameworks\u002Fexperiments 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F732 中完成。\n* docs: 修复拼写","2026-02-05T22:40:25",{"id":197,"version":198,"summary_zh":199,"released_at":200},62205,"v0.21.0","## 破坏性变更\n\n### refactor!: 从 BasePolicy 中移除 switch_frequency (#719)\n\n`switch_frequency` 参数已被移除。\n\n### feat!: 在 ResamplingHypothesesUpdater 中实现突发采样 (#700)\n\n与假设更新器相关的 API 变更。\n\n## 变更内容\n* ci: 当新版本发布时部署文档，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F709 中完成\n* fix: 在无重置实验中将个体 ts 设置为 \"no_match\"，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F712 中完成\n* revert: “fix: 在无重置实验中将个体 ts 设置为 'no_match' (#712)” 的回滚，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F716 中完成\n* test: 在教程测试期间不显示传感器输出，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F717 中完成\n* fix: 在无重置实验中将个体 ts 设置为 \"None\"，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F718 中完成\n* refactor!: 从 BasePolicy 中移除 switch_frequency，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F719 中完成\n* style: 修改 simulators\u002Fmujoco 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F721 中完成\n* feat!: 在 ResamplingHypothesesUpdater 中实现突发采样，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F700 中完成\n* ci: 为版权日期检查添加帮助信息，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F741 中完成\n* docs: 更新分类文档中的 PR 标题指南，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F740 中完成\n* docs: 修改 simulators\u002Ftacto 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F720 中完成\n* refactor: 移除多余的采样器动作以及被 get_random_action 过滤掉的动作，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F708 中完成\n* chore: 在更新快照之前先将其删除，由 @ramyamounir 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F738 中完成\n* docs: 修复 evidence_matching\u002Ffeature_evidence 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F736 中完成\n* docs: 修复 frameworks\u002Factions 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F735 中完成\n* ci: 仅检查来自 PR 分支的更改，由 @jeremyshoemaker 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F743 中完成\n* docs: 修复 frameworks\u002Fenvironments 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F733 中完成\n* docs: 修复 frameworks\u002Floggers 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F731 中完成\n* docs: 修复 models\u002Fsalience 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F726 中完成\n* docs: 修复 monty\u002Fframeworks 中的拼写错误，由 @TimothyAlexisVass 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F724 中完成\n* docs: 修复 monty\u002Fsimulators b 中的拼写错误","2026-02-05T21:34:28",{"id":202,"version":203,"summary_zh":204,"released_at":205},62206,"v0.20.0","## 重大变更\n\n### 修复！：移除探索步数倍增器 (#702)\n\n`num_exploratory_steps` 现在不再由框架进行修改。\n\n### 重构！：将 EmbodiedEnvironment 拆分为多个协议 (#672)\n\n我们不再使用 `EmbodiedEnvironment` 抽象类，而是引入了具体的环境协议：\n```python\nclass Environment(Protocol):\n  def step(...) -> ... : ...\n  def close(...) -> ... : ...\n\nclass ObjectEnvironment(Protocol):\n  def remove_all_objects(...) -> ... : ...\n  def add_object(...) -> ... : ...\n\nclass ResettableEnvironment(Protocol):\n  def reset(...) -> ... : ...\n\n# 交集类型\nclass SimulatedObjectEnvironment(Environment, ObjectEnvironment, ResettableEnvironment, Protocol):\n  pass\n\n# 交集类型\nclass SimulatedEnvironment(Environment, ResettableEnvironment, Protocol):\n  pass\n```\n\n### 重构！：在每一轮实验开始前确定性地重置随机数生成器 (#666)\n\n此 Pull Request 实现了在 `run.py`、`un_parallel.py` 和 `run_parallel.py 'episodes=\"...\"'` 这三种启动实验方式中，每轮实验的可重复性。这使得后续的配置文件变得多余，因此已被移除。\n\n### 功能！：在探索步骤中传递目标 (#705)\n\n框架现在会在训练过程中传递目标。此前，这一功能仅在推理阶段生效。\n\n### 修复！：确保 tangent_locs 和 tangent_norms 包含任何添加的噪声 (#706)\n\n`SurfacePolicyCurvatureInformed` 曾在本应添加噪声的情况下仍使用无噪声的切线数据。现已修复此问题。\n\n## 变更内容\n* 修复！：由 @vkakerbeck 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F702 中移除探索步数倍增器\n* 测试：使层级测试更加稳定，由 @vkakerbeck 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F701 中完成\n* 测试：修复脆弱的半监督异构层级测试，由 @vkakerbeck 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F703 中完成\n* 重构！：将 `EmbodiedEnvironment` 拆分为多个协议，由 @AgentRev 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F672 中完成\n* 文档：通过许可证和 Python 版本徽章增强 README，由 @bschoening 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F704 中完成\n* 重构！：在每一轮实验开始前确定性地重置随机数生成器，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F666 中完成\n* 功能！：在探索步骤中传递目标，由 @scottcanoe 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F705 中完成\n* 修复！：确保 `tangent_locs` 和 `tangent_norms` 包含任何添加的噪声，由 @scottcanoe 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F706 中完成\n* 杂项：版本 0.20.0，由 @tristanls-tbp 在 https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F707 中发布\n\n**完整更新日志**：https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.19.0...v0.20.0","2026-02-05T21:35:13",{"id":207,"version":208,"summary_zh":209,"released_at":210},62207,"v0.19.0","## Breaking Changes\r\n\r\n### refactor! remove `last_action` (#686)\r\n\r\n`MotorSystem.last_action` is removed.\r\nPolicies implementing `last_action` no longer implement `last_action`.\r\n\r\n### refactor!: remove `last_action` more (#689)\r\n\r\n`MotorPolicy.last_action` is removed.\r\n\r\n### refactor!: use possible_hyps bool array to track possible poses ids (#670)\r\n\r\n`Hypotheses` dataclass now requires `possible` property.\r\n\r\n### fix!: locations are now padded and filtered during memory update (#693)\r\n\r\nPadding behavior within `FeatureAtLocationBuffer` is updated.\r\n\r\n## What's Changed\r\n* ci: tidy ci and prepare for turning on merge queue by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F685\r\n* ci: passthrough cla check when in merge group by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F688\r\n* refactor!: remove `last_action` by @scottcanoe in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F686\r\n* refactor!: remove `last_action` more by @scottcanoe in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F689\r\n* fix: run_parallel no longer hangs on mac by @scottcanoe in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F692\r\n* refactor: Address mypy issues by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F691\r\n* chore: fix uv tests again (third time) by @jeremyshoemaker in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F694\r\n* refactor!: use possible_hyps bool array to track possible poses ids by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F670\r\n* test: run all tutorial experiments by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F675\r\n* chore: fix the seed for EXPECTED_STATES in EmbodiedDataTest by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F695\r\n* fix!: locations are now padded and filtered during memory update by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F693\r\n* ci: rename to test-tutorials-monty per naming convention by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F697\r\n* docs: update WSL tutorial by @AgentRev in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F696\r\n* chore: version 0.19.0 by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F698\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.18.0...v0.19.0","2026-02-05T21:35:52",{"id":212,"version":213,"summary_zh":214,"released_at":215},62208,"v0.18.0","## Breaking Changes\r\n\r\n### refactor!: Use TypedDict for SensorObservations (#676)\r\n\r\n`SensorObservations` is now a `TypedDict` instead of `Dict`.\r\n`Modality` type is removed.\r\n\r\n## What's Changed\r\n* docs: HypothesisDrivenPolicyMixin should be JumpToGoalStateMixin by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F674\r\n* docs: remove obsolete MotorSystemConfig references by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F673\r\n* rfc: RFC 18 Guidance on Workflow for Research Code by @nielsleadholm in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F430\r\n* refactor!: Use TypedDict for `SensorObservations` by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F676\r\n* fix: OmniglotEnvironment includes view_finder PrioprioceptiveState by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F680\r\n* chore: version 0.18.0 by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F681\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.17.0...v0.18.0","2026-02-05T21:36:28",{"id":217,"version":218,"summary_zh":219,"released_at":220},62209,"v0.17.0","## Breaking Changes\r\n\r\n### refactor!: use ProprioceptiveState throughout (#624)\r\n\r\nMultiple API changes due to passing `ProprioceptiveState` throughout the framework.\r\n\r\n### refactor!: finalize Simulator protocol cleanup (#664)\r\n\r\nMultiple API changes due to minimizing the `Simulator` protocol.\r\n\r\n## What's Changed\r\n* refactor: Address typing issues stemming from `np.quaternion` and `numbers.Number` by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F647\r\n* refactor!: use `ProprioceptiveState` throughout by @AgentRev in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F624\r\n* docs: link to tbp.plot repo by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F663\r\n* Add documentation page on LLM use in contributions by @nielsleadholm in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F665\r\n* refactor: Reduce mypy errors by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F662\r\n* refactor!: finalize Simulator protocol cleanup by @AgentRev in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F664\r\n* ci: copyright 2026 check by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F668\r\n* chore: version 0.17.0 by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F669\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.16.0...v0.17.0","2026-02-05T21:41:46",{"id":222,"version":223,"summary_zh":224,"released_at":225},62210,"v0.16.0","## Breaking Changes\r\n\r\n### refactor!: formalize Transform protocol and expect TransformContext (#645)\r\n\r\nAll transforms now must conform to the `Transform` protocol:\r\n```python\r\ndef __call__(\r\n    self, observations: Observations, ctx: TransformContext\r\n) -> Observations:\r\n```\r\n\r\n### refactor!: remove redundant Path coercion in run_parallel.py (#637)\r\n\r\n`post_parallel_eval` and `post_parallel_train` function signature changed where `base_dir` is now a `Path`:\r\n```python\r\ndef post_parallel_eval(experiments: list[Mapping], base_dir: Path) -> None:\r\n```\r\n```python\r\ndef post_parallel_train(experiments: list[Mapping], base_dir: Path) -> None:\r\n```\r\n\r\n### refactor!: pass RNG to DefaultMessageNoise during call, not init (#652)\r\n\r\n`MessageNoise` protocol now requires `np.random.RandomState`:\r\n```python\r\nclass MessageNoise(Protocol):\r\n    def __call__(self, state: State, rng: np.random.RandomState) -> State: ...\r\n```\r\n\r\n`no_message_noise` function became `NoMessageNoise` class.\r\n\r\n### refactor!: pass RNG to ActionSampler during call, not init. (#653)\r\n\r\n`Action`s and `ActionSampler`s are refactored to accept or pass `np.random.RandomState` as part of method calls instead of receiving RNG on initialization.\r\n\r\n### feat!: MontyExperiment.run() (#654)\r\n\r\nCalls to `experiment.train()` and `experiment.evaluate()` have been replaced with calls to the new `experiment.run()` instead. \r\n\r\n\r\n## What's Changed\r\n* refactor!: formalize Transform protocol and expect TransformContext by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F645\r\n* refactor!: remove redundant Path coercion in run_parallel.py by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F637\r\n* chore: delete commented lines in logging configs by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F655\r\n* refactor!: pass RNG to DefaultMessageNoise during call, not init by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F652\r\n* refactor!: pass RNG to ActionSampler during call, not init. by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F653\r\n* feat!: MontyExperiment.run() by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F654\r\n* docs: Update FAQ re predictive coding by @nielsleadholm in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F659\r\n* chore: add detailed logging configs by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F658\r\n* docs: clarify ProprioceptiveState docstrings regarding reference frames by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F660\r\n* chore: version 0.16.0 by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F661\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.15.0...v0.16.0","2026-02-05T21:43:09",{"id":227,"version":228,"summary_zh":229,"released_at":230},62211,"v0.15.0","## Breaking Changes\r\n\r\n### refactor!: enable ruff PLR1704, don't reuse argument name (#627)\r\n\r\n`FeatureAtLocationBuffer.get_current_displacement(input_channel=\"all\")` is replaced by `FeatureAtLocationBuffer.get_all_current_displacements()` and the `\"all\"` sentinel is removed.\r\n\r\n### refactor!: gather object initializers in environments.object_init_samplers (#635)\r\n\r\nAll object init samplers are renamed and moved to `tbp.monty.frameworks.environments.object_init_samplers.py`. All configurations are updated.\r\n\r\n### refactor!: object params are deterministic per seed, epoch, and episode (#636)\r\n\r\nThe way the random number generator is used in object init samplers has changed, and it now also expects epoch and episode to be provided.\r\n\r\nThe call signature of object init samplers changed from `def __call__(self): ...` to:\r\n```python\r\ndef __call__(self, seed: int, epoch: int, episode: int): ...\r\n```\r\n\r\n## What's Changed\r\n* refactor!: enable ruff PLR1704, don't reuse argument name by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F627\r\n* docs: custom application tutorial update for Hydra by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F604\r\n* refactor: enable ruff FBT003, no boolean args in call by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F628\r\n* refactor: remove obsolete log_parallel_wandb configuration setting by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F630\r\n* chore: enable ruff PD002, avoid pandas inplace=True by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F634\r\n* refactor: enable ruff rule S605, avoid os.system() by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F631\r\n* docs: update vale install docs as brew can't install the right version by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F633\r\n* docs: Future work updates by @vkakerbeck in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F620\r\n* refactor!: gather object initializers in environments.object_init_samplers by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F635\r\n* refactor: enable ruff perf402, list comprehension to copy by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F638\r\n* docs: Update Future Work description of off-object movements and out-of-model movements by @nielsleadholm in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F632\r\n* chore: enable ruff TD005, add TODO description by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F641\r\n* refactor!: object params are deterministic per seed, epoch, and episode by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F636\r\n* docs: update structure and add extra infos and cross links by @vkakerbeck in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F642\r\n* chore: fixes broken link on docs homepage to theory page by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F646\r\n* docs: Update contributors by @nielsleadholm in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F650\r\n* chore: version 0.15.0 by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F648\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.14.1...v0.15.0","2026-02-05T21:44:02",{"id":232,"version":233,"summary_zh":234,"released_at":235},62212,"v0.14.1","## What's Changed\r\n* refactor: enable ruff rule PTH123, for Path.open() by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F618\r\n* chore: enable ruff s311, slot001; already passing by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F621\r\n* chore!: drop redundant return in generate_index() by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F619\r\n* test: configuration snapshot tests by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F614\r\n* chore: youtube embedding now only happens to videos on their own line by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F623\r\n* refactor: enable ruff rule S301, avoid pickle by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F625\r\n* refactor: add small utility to make a data path by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F626\r\n* chore: version 0.14.1 by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F629\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.14.0...v0.14.1","2026-02-05T21:44:50",{"id":237,"version":238,"summary_zh":239,"released_at":240},62213,"v0.14.0","## Breaking Changes\r\n\r\n### refactor!: dictionary telemetry returned from updaters (#552)\r\n\r\nAlways return a `dict` from updaters.\r\n\r\n### refactor!: remove `Simulator.get_agent()` (#566 \r\n\r\nRemoved `Simulator.get_agent()`.\r\n\r\n### refactor!: remove unused _compute_goal_confidence() (#550)\r\n\r\nRemoved `_compute_goal_confidence()`.\r\n\r\n### refactor!: follow ruff rule ARG002 (#541)\r\n\r\nRemoved unused parameters from methods and constructors.\r\n\r\n### chore!: remove the plotting tool (#561)\r\n\r\nThe plotting tool is now in its own repository: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.plot\r\n\r\n### docs!: update benchmark results for compositional models (#569)\r\n\r\nMarked as breaking due to benchmark changes.\r\n\r\n### refactor!: remove obsolete `real_robots` and `RealRobotsEnvironment` (#573)\r\n\r\nRemoved obsolete code.\r\n\r\n### refactor!: use Hydra for configuring Monty (#540)\r\n\r\nMonty now uses Meta's [Hydra](https:\u002F\u002Fhydra.cc\u002F) for configuration. \r\n\r\nAside from the changes documented in #540, [a video is also available that highlights how to assemble a configuration using the initial version of Hydra configuration](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=B-Kd7Z3pXWk).\r\n\r\n### refactor!: remove unneeded config_args.py (#577)\r\n\r\nRemoval of obsolete configuration code.\r\n\r\n### chore!: update pretrained models to v11 (AWS models) (#565)\r\n\r\nMarked as breaking due to benchmark changes.\r\n\r\n### refactor!: remove policy_setup_utils.py (#578)\r\n\r\nRemoval of obsolete configuration code.\r\n\r\n### refactor!: stop logging everything twice (#595)\r\n\r\nLogs from `tbp.monty` logger no longer propagate to the default logger.\r\n\r\n### refactor!: follow ruff rule PTH118 (take 2) (#567)\r\n\r\nType changes that expect `Path` instead of a `str` in multiple places.\r\n\r\n### refactor!: add `Observations` classes, SensorID & Modality newtypes (#563)\r\n\r\nChanges to the `Simulator` API as well as implementation and integration of `Observations` type.\r\n\r\n### refactor!: do not alter random seeds in parallel episodes (#612)\r\n\r\nRandom seeds are no longer incremented between episodes during `run_parallel.py`.\r\n\r\n\r\n\r\n## What's Changed\r\n* feat: log rotation error in degrees instead of radians by @vkakerbeck in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F551\r\n* refactor!: dictionary telemetry returned from updaters by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F552\r\n* fix: change AttributeError to KeyError in prediction error logging by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F554\r\n* chore: follow ruff rules RUF022 and TC006 by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F543\r\n* refactor!: remove `Simulator.get_agent()` by @AgentRev in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F555\r\n* refactor!: remove unused _compute_goal_confidence() by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F550\r\n* chore: stable wandb import sorts after local run by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F557\r\n* feat: update how features are selected for evidence calculation by @hlee9212 in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F553\r\n* feat: add sensor_module_id accessor for HabitatSalienceSM by @scottcanoe in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F562\r\n* refactor!: follow ruff rule ARG002 by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F541\r\n* chore: follow ruff rule PTH208 by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F544\r\n* chore!: remove the plotting tool by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F561\r\n* fix: move rmtree code outside of context manager in run_parallel cleanup by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F564\r\n* refactor!: follow ruff rule PTH118 by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F545\r\n* revert!: follow ruff rule PTH118 (#545) by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F566\r\n* docs!: update benchmark results for compositional models by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F569\r\n* refactor: don't iterate over unused omniglot char versions by @carver in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F568\r\n* build: recipe\u002Fmeta.yaml reflecting latest; added note to remember by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F571\r\n* refactor!: remove obsolete `real_robots` and `RealRobotsEnvironment` by @AgentRev in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F573\r\n* refactor!: use Hydra for configuring Monty by @jeremyshoemaker in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F540\r\n* docs: add back accidentally deleted TODO comment by @jeremyshoemaker in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F576\r\n* refactor!: remove unneeded config_args.py by @jeremyshoemaker in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F577\r\n* chore!: up","2026-02-05T21:46:06",{"id":242,"version":243,"summary_zh":244,"released_at":245},62214,"v0.13.0","## Breaking Changes\r\n\r\n### style!: Use PEP 604 union syntax (#517)\r\n\r\nAs a side effect of the required `from __future__ import annotations` import `create_dataclass_args()` now stores type annotations as strings (e.g., `\"int\"` instead of `int`).\r\n\r\n### refactor!: AgentID newtype (#521)\r\n\r\nAll agent IDs are now expected to be of type `AgentID`.\r\n\r\n### ci!: ruff update (#524)\r\n\r\nPlot utilities have been split into three separate files.\r\n\r\n### refactor!: remove unused union_of_possible_matches (#518)\r\n\r\nThe unused `union_of_possible_matches` function is removed.\r\n\r\n### refactor!: integrate ObjectID, SemanticID, and ObjectInfo (#525)\r\n\r\nUpdates to the `Simulator` protocol, specifically, the `add_object(...)` method.\r\n\r\n### refactor!: remove enable_physics and object_to_avoid params (#532)\r\n\r\n`enable_physics` and `object_to_avoid` params are removed from the `Simulator` protocol.\r\n\r\n### refactor!: SemanticID in GetGoodView positioning procedure (#531)\r\n\r\nUse `SemanticID` type in `GetGoodView` positioning procedure.\r\n\r\nAdditionally, function signature of `get_perc_on_obj_semantic(...)` changed to use `\"any\"` sentinel instead of `0`.\r\n\r\n### refactor!: Rename EnvironmentDataLoader to EnvironmentInterface (#501)\r\n\r\nA very large spanning rename of everything \"DataLoader\" into \"EnvironmentInterface\". For details of how everything was renamed and how to rename any of your classes, please see the description of #501.\r\n\r\n### refactor!: deprecate ActionSpace (#533)\r\n\r\n`ActionSpace` is deprecated.\r\n\r\n### chore!: Target ruff rules FLY002, PLE0302, PLR1714, RUF012, RUF013, and SIM103 (#539)\r\n\r\n`BufferBase` class is removed as extraneous.\r\n\r\n## What's Changed\r\n* style!: Use PEP 604 union syntax by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F517\r\n* chore: Target ruff rules F541, PLW0127, RET506, and RET508 by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F522\r\n* refactor!: AgentID newtype by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F521\r\n* ci!: ruff update by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F524\r\n* docs: new blog post by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F520\r\n* refactor!: remove unused union_of_possible_matches by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F518\r\n* feat: allow episodes selection in `run_parallel` by @ramyamounir in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F523\r\n* chore: Target ruff rules RET501, RET504, and RET505 by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F526\r\n* refactor!: integrate ObjectID, SemanticID, and ObjectInfo by @AgentRev in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F525\r\n* chore: Target ruff rules ISC001, ISC003, PLR0402, RSE102, and RUF010 by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F528\r\n* chore: future work tool & widget by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F434\r\n* chore: Target ruff rules UP006 and FA100 by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F534\r\n* refactor!: remove enable_physics and object_to_avoid params by @AgentRev in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F532\r\n* refactor!: SemanticID in GetGoodView positioning procedure by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F531\r\n* chore: update torch versions for uv environment by @jeremyshoemaker in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F529\r\n* fix: set physics motion type correctly by @jeremyshoemaker in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F538\r\n* refactor!: Rename EnvironmentDataLoader to EnvironmentInterface by @annark in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F501\r\n* refactor!: deprecate ActionSpace by @AgentRev in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F533\r\n* chore!: Target ruff rules FLY002, PLE0302, PLR1714, RUF012, RUF013, and SIM103 by @mf-maymay in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F539\r\n* chore: version 0.13.0 by @tristanls-tbp in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F546\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.12.0...v0.13.0","2026-02-05T21:48:06",{"id":247,"version":248,"summary_zh":249,"released_at":250},62215,"v0.12.0","## Breaking Changes\r\n\r\n### feat!: add locations to resampling telemetry (#479)\r\n\r\nThe PR introduces a breaking fix in 33e2c2f31856 that moves telemetry collection until after the tracker updates. Now the evidence slopes make more sense as they make use of the latest evidence scores at every step.\r\n\r\n### refactor!: rename pn to surface_normal (#472)\r\n\r\nBreaking change due to some argument renaming.\r\n\r\n### refactor!: Move Dataset functionality into EnvironmentDataloader (#448)\r\n\r\n`Dataset` class is removed and the functionality is absorbed by the `EnvironmentDataloader`.\r\n\r\n### refactor!: ensure update of \"all\" hypotheses with ResamplingHypothesesUpdater (#486)\r\n\r\nNow raises `InvalidEvidenceThresholdConfig` when `ResamplingHypothesesUpdater` `evidence_threshold_config` parameter is not `\"all\"`.\r\n\r\n### fix! : hypothesis space initialization bugs for compositional tasks (#468)\r\n\r\nThis PR fixes a bug in the channel mapper when a new input channel is introduced during an episode (not at the start). This is a special case that happens during compositional learning.\r\n\r\n### fix!: symmetry detection line swaps (#484)\r\n\r\nThis PR fixes a minor issue with symmetry detection.\r\n\r\n### feat!: framework handles sequence of actions instead of single action (#490)\r\n\r\nThis pull request changes all `step(self, action: Action)` methods into `step(self, actions: Sequence[Action])`.\r\n\r\nThe Simulator protocol has been updated to include `apply_actions(self, actions: Sequence[Action])`.\r\n\r\nAfter the refactor, it became clear that `self._action` in the data loaders is only used in tests. Therefore, this pull request removes `self._action` from data loaders. The test using `self._action` was extracted from the data loader test and moved into a unit test of the environment to which it belonged.\r\n\r\n### refactor!: extract snapshot telemetry tracking from DetailedLoggingSM (#496)\r\n\r\nThis pull request extracts tracking snapshots of raw observations and their poses from `DetailedLoggingSM` into a separate `SnapshotTelemetry` component.\r\n\r\nSensor modules no longer invoke `DetailedLoggingSM.step()` to snapshot the observations.\r\n\r\n### refactor!: extract HabitatObservationProcessor from sensor module hierarchy (#499)\r\n\r\nThis pull request extracts the `HabitatObservationProcessor` component from the sensor module hierarchy. [According to our code style guide, we prefer to use composition over inheritance for reusing functionality](https:\u002F\u002Fthousandbrainsproject.readme.io\u002Fdocs\u002Fcode-style-guide#composition-should-be-used-to-share-a-functionality-implementation-that-needs-its-own-state).\r\n\r\n### feat!: DetailedJSONHandler can save subset of episodes (#491)\r\n\r\nThis PR adds capabilities to `DetailedJSONHandler` so that users can specify a list of ints (episode_ids) to save in `detailed_run_stats.json`. It also has an option to save as individual files per episode. \r\n\r\n### refactor!: remove Sensor Module inheritance hierarchy (#503)\r\n\r\nThis pull request eliminates the Sensor Module hierarchy.\r\n\r\nWe are now only left with `Probe` and `HabitatSM`.\r\n\r\n#### DetailedLoggingSM\r\n`DetailedLoggingSM` is renamed to `Probe`.  A probe can be inserted into Monty in place of a sensor module. It will track raw observations for logging, and can be used by experiments for positioning procedures, visualization, etc. What distinguishes a probe from a sensor module is that it does not process observations and does not emit a Cortical Message.\r\n\r\n#### HabitatDistantPatchSM\r\n`HabitatDistantPatchSM` is renamed to `HabitatSM`.\r\n\r\n#### HabitatSurfacePatchSM\r\n`HabitatSurfacePatchSM` is removed and replaced with `is_surface_sm` constructor argument to `HabitatSM`. So, previously, if you had `HabitatSurfacePatchSM`, you'll now instantiate `HabitatSM(is_surface_sm=True,...)`.\r\n\r\n#### FeatureChangeSM\r\n`FeatureChangeSM` is removed and replaced with a `FeatureChangeFilter` that is contained within `HabitatSM`. So, previously, if you had `FeatureChangeSM(delta_thresholds={...},...)`, you'll now instantiate `HabitatSM(delta_thresholds={...},...)`. If `delta_thresholds` is `None` or omitted, then no filter is configured. Without a filter, `HabitatSM` behaves like `HabitatDistantPatchSM` or `HabitatSurfacePatchSM`, depending on `is_surface_sm`.\r\n\r\n#### NoiseMixin\r\n`NoiseMixin` is removed and replaced with a `DefaultMessageNoise` that is contained within `HabitatSM`. To configure, pass in `noise_params` to `HabitatSM` as usual.\r\n\r\n### refactor!: return list of GoalStates instead of one or None (#505)\r\n\r\nThe Goal State Generator and Learning Module API to return a list of GoalStates instead of expecting one or None.\r\n\r\n### feat!: Sensor Modules can propose goal states; HabitatSalienceSM implementation (#511)\r\n\r\nMonty is updated to allow Sensor Modules to generate goals, and the motor system now receives Sensor Module goals.\r\n\r\n## What's Changed\r\n* docs: Add documentation around reference frame transforms in Monty by @vkakerbeck in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F438\r","2026-02-05T21:49:26",{"id":252,"version":253,"summary_zh":254,"released_at":255},62216,"v0.11.0","## Breaking Changes\r\n\r\n### refactor!: Change getters to properties using `@property`in simulator.py. (https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F424)\r\n\r\nAccessing simulator properties changed for the following properties as follows:\r\n```diff\r\n- sim.get_num_objects()\r\n+ sim.num_objects\r\n\r\n- sim.get_action_space()\r\n+ sim.action_space\r\n\r\n- sim.get_observations()\r\n+ sim.observations\r\n\r\n- sim.get_states()\r\n+ sim.states\r\n```\r\n\r\n###  refactor!: Dataclass class to dataclass_utils (#447)\r\n\r\n`Dataclass` type definition was moved from `src\u002Ftbp\u002Fmonty\u002Fframework\u002Fconfig_utils\u002Fconfig_args.py` to `src\u002Ftbp\u002Fmonty\u002Fframework\u002Futils\u002Fdataclass_utils.py` and replaces previous `DataclassInstance` use.\r\n\r\n\r\n## What's Changed\r\n* chore: deploy docs on version change by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F429\r\n* docs: added ultrasound project and hackathon video to the showcase page by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F415\r\n* docs: link to plain language explainers by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F431\r\n* chore: rephrasing of robot project involvement by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F433\r\n* docs: restructure \"how monty works\" section by @vkakerbeck in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F436\r\n* docs: Adding some links, headers, and minor text updates by @vkakerbeck in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F437\r\n* rfc: RFC 15 centralized process to update the future work artifacts and make them more accessible by @codeallthethingz in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F428\r\n* rfc: RFC 16 Project Typing Guidelines by @jeremyshoemaker in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F409\r\n* ci: install monty if failed to find monty cache by @tristanls in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F442\r\n* refactor!: Change getters to properties using @property in simulator.py.  by @annark in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F424\r\n* feat: `config_to_dict` harder by @scottcanoe in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F440\r\n* refactor!: Dataclass class to dataclass_utils by @tristanls in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F447\r\n* refactor: update get_edge_index to use vector operations by @Lvidal2santos in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F444\r\n* chore: update column key in make_detailed_follow_up_configs.py by @hlee9212 in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F449\r\n* docs: emphasize Maintainers cannot assing PRs to themselves by @tristanls in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F456\r\n* rfc: RFC 17 Guidance on the use of LLMS by @nielsleadholm in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F435\r\n* chore: version 0.11.0 by @tristanls in https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fpull\u002F458\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fthousandbrainsproject\u002Ftbp.monty\u002Fcompare\u002Fv0.10.0...v0.11.0","2026-02-05T21:50:15"]