JiuwenSymbiosis 开发原则:用证据驱动每一次改动与验证的工程闭环
具身智能人工智能AI Agent机器人计算机视觉Agent 编排【免费下载链接】jiuwensymbiosisJiuwen Symbiosis就是一个能懂人话、看得见物理世界、长了四肢的智能助手。用户不需要示教不需要教它怎么抓东西怎么走路就像指挥一个经验丰富的工人一样用自然语言下任务它就能自己完成感知、理解、规划、执行。项目地址https://gitcode.com/openJiuwen/jiuwensymbiosis点击查看免费下载development-principles.md是 JiuwenSymbiosis 仓库为 AI 编码助手以及任何协作者写的全局开发原则它规定了从从需求出发到报告验证证据的完整工作闭环。读懂并遵循这套原则你就能在这样一个多硬件、分层、能力门控的机器人框架里做出聚焦的改动并且能给出可核查、可复现的验证依据而不是看起来改完了。原则体系在仓库中的位置JiuwenSymbiosis 的协作指引分三层分工明确见 CLAUDE.md 与 AGENTS.md 末尾的 More Detail 一节AGENTS.md跨工具Cursor / Copilot / Claude 共读的共享项目约束——项目概览、构建/测试命令、架构不变量pyproject.toml是 Python 工具链配置的权威来源.claude/rules/短小、硬性、按路径门控的主题规则共 4 个文件规则文件覆盖范围加载时机development-principles.md范围、设计投入、证据、聚焦改动全会话生效无paths限制code-style.md公共类型、状态、async、异常、日志、抑制包内 Python、scripts、templates、examples、testssecurity.md运动/恢复、执行信任边界、子进程、凭据与持久化包/运行时相关路径testing.md隔离、测试替身、异步回调、断言、测试选择tests/**/*.py.claude/skills/更长、按需加载的任务工作流module-design、python-testing、review-architecture-change、security-review.claude/references/change-validation.md把改动类型映射到已有验证入口的选型表。development-principles.md是唯一全会话生效的规则相当于整个协作流程的宪法其余文件是它的实施细则。下面逐条展开六项原则并给出每条原则在仓库源码与测试中的落点。原则一从需求与仓库证据出发显式声明假设原文要求从期望达到的结果以及相关代码、公共导出、测试、AGENTS.md中的项目约束出发显式陈述实质性假设当缺失的信息会改变预期行为或安全边界时先提问常规实现选择则直接从仓库证据中解决。这条原则在仓库里有明确的落点AGENTS.md的 Instruction Priority规定了查阅顺序系统/工具/用户指令优先然后是AGENTS.md再是模块级文档改行为之前先检查被触及模块、其__init__.py导出面和附近测试/示例——prefer nearby code and tests over assumptions优先相信附近的代码与测试而不是假设。单一事实源约定工具配置只认 pyproject.toml共享约束只认AGENTS.md行为只认实现与测试。当文档与代码不一致时上报差异而不是默默地把其中一方当另一方的证明。常规选择自己解决意味着什么在本仓库比如新动作该在哪声明这类问题仓库证据已经给出唯一答案——动作契约统一声明在 jiuwensymbiosis/api/actions.py 的ActionSpec中各机身用implements(SPEC)只提供实现there is no second way inbring-up、标定、调试视图不是动作而是scripts/驱动的普通方法。这类问题不需要再问人读AGENTS.md的 Key Architectural Patterns 一节即可定案。一句话概括提问留给会改变行为/安全范围的信息缺口不改变答案的实现选择用仓库证据自行闭环。原则二投入与改动量匹配公共契约变更需要设计论证原文要求局部修复只需要聚焦的 diff 和相关验证而公共契约、职责归属、依赖方向的变更需要显式设计论证当这个论证有实质内容时使用 module-design 技能。仓库把什么算实质改动界定得非常具体需要升级设计的典型场景对应 module-design SKILL 的触发条件公共契约变化、跨模块职责迁移、新模块引入、复杂状态机与资源生命周期。该技能规定了设计文档的完整骨架建立设计起点问题、服务对象、成功条件、基线 revision→ 还原现有模型所有者、接口、依赖方向、失败处理→ 分配职责并比较会真正改变结果的实质方案 → 表达数据结构/接口/流程 → 用改动验证映射记录约束与验证 → 完成检查。设计文档的存放惯例已有的设计在原文档上修订新的完整设计写入 design/ 目录下语义明确的 Markdown 文件该目录目前已有 logging、pluggable-gui、remote-vision-and-speech、trace-feedback-loop、tracing 等设计记录。反过度设计的明确边界局部修复不默认生成设计文档比较方案时不为凑数量制造替代方案不为假想的未来硬件预建多套框架。原则三先复用已有所有者让契约承载硬件差异原文要求在增加新抽象之前先复用现有所有者owner要解释新模块封装了什么复杂性、哪些调用方受益并且把硬件差异留在项目既有的 capability 与 adapter 契约之后。这条原则直接对应 JiuwenSymbiosis 最核心的架构设计——共享动作词汇 能力门控可以从源码结构看到它的完整闭环能力的唯一声明点Env声明硬件能做什么capabilitiesfrozenset取自 jiuwensymbiosis/env/base.py 中定义的KNOWN_CAPABILITIES如motion.cartesian、motion.joint、motion.base、grasp.parallel、vision.detection、planning.reachability等Api从它实现的动作派生能力。工具暴露的强制交集build_robot_tools(api, envenv)只暴露api.capabilities ∩ env.capabilities——某能力不在 env 声明里对应动作根本不会成为 LLM 工具。这就是硬件差异留在契约之后的机械化保证新硬件不需要新工具代码只需要新的能力声明与implements绑定。适配器的标准形态新机型按 templates/xxx_adapter/ 的 7 文件骨架config.py/lowlevel.py/env.py/api.py/calibration.py/session.py/config_template.yaml落地其中lowlevel.py按env/protocol.py的能力切片 Protocol 实现——移动双臂机身对单臂笛卡尔契约零义务。先找所有者的具体化默认实现层已取消 mixin——凡是一行委托给 Env 动词的动作都是 jiuwensymbiosis/api/defaults.py 里的普通函数适配器显式调用共享 3D 感知与底盘接近循环是api-first 函数放在 jiuwensymbiosis/perception/scene3d.py 与 jiuwensymbiosis/motion/approach.py。所以这个逻辑该放哪在大多数情况下已有现成答案新抽象只有在说清楚封装了什么复杂性、谁受益之后才被允许存在。原则四守住范围不顺手重构原文要求改动保持在范围内——删除被本次改动淘汰的代码保留无关工作发现无关问题时报告而不扩大任务AGENTS.md同样强调 Prefer small, targeted diffs. Do not refactor unrelated areas opportunistically.这条原则的实操含义可以拆成三个动作删本次改动使其失效的旧代码必须同批删除避免两条路都能走的僵尸路径比如AGENTS.md明确记载 mixin 层已移除、api/components.py与 held-component 类已不存在就是历次范围内清理的结果留与改动无关的代码即使看着不顺眼也不动报发现的无关问题写进交付说明由调用方决定后续任务。在 AI 协作场景里这条原则尤其关键它防止修一个 bug 顺手重构半个模块保证 diff 可审阅、可回滚、可被改动验证映射精确定位。原则五先定义可观察的成功再动手实现原文要求实现之前先定义可观察的成功标准行为 bug 尽量用聚焦的回归测试复现重构要对照既有契约验证不要写只镜像实现细节的测试。仓库的测试基建为这条原则提供了完整支撑测试替身与隔离tests/mocks/ 导出MockApi、MockArmEnvWrapper、MockPiperDriver、MockDualArm*、MockScene、MockSession等核心测试不需要硬件/GPUtests/unit_tests/calibration/conftest.py、tests/unit_tests/adapters/piper/conftest.py 等提供套件级夹具。测试目录与硬件边界核心/领域测试放tests/unit_tests/镜像源码子系统结构GUI 测试放tests/gui/真实串口/CAN/相机/GPU/外部服务只进显式标记的集成测试pyproject.toml 中markers [unit, integration]asyncio_mode auto。断言可观察结果的细则testing.md在代码查找依赖的位置打补丁断言可观察结果、失败行为与副作用日志行为用caplog而不是打补丁假装有一个日志工厂文件用tmp_path隔离覆盖被改动的公共契约、能力门控、失败传播与资源清理prefer boundary assertions over tests coupled to private implementation details优先边界断言避免耦合私有实现细节的测试——这正是不写镜像测试的落地。LLM 测试用build_mock_model()经RobotAgentConfig(model...)注入不要求真实凭据或硬件。原则六按改动验证映射选检查如实报告证据这是六条原则中最硬的一条原文要求按 改动验证映射 选择检查项报告实际执行的命令、结果、跳过的用例与剩余不确定性静态阅读不是测试运行空的测试选择也不是通过。改动验证映射从改动类型到检查入口.claude/references/change-validation.md的核心是一张改动/不变量 → 现有验证入口 → 检查要点的映射表。它明确声明自己不是要求跑全部套件而是选择实际被行为或依赖变化触及的行。完整映射如下改动或不变量现有验证入口检查要点共享动作契约与载体tests/unit_tests/api/test_actions.py、tests/unit_tests/api/test_decorators.py契约归属、接受参数、结果 schema、能力/状态 token元数据必须绑定在其 spec 上工具暴露与能力交集tests/unit_tests/tools/test_builder.py、tests/unit_tests/tools/test_planner_vocabulary.py能力集之外的动作对规划器保持不可用跨机身动作词汇tests/unit_tests/test_vocabulary_forks.py机身差异不悄悄制造竞争性名称检查已注册机身与文档化的 forks/xfails动作的独立采纳tests/unit_tests/api/test_no_bundling.py共享实现不隐式宣告邻近动作核心算法分层tests/unit_tests/test_layering.pyperception/motion 不 import api 层检查新共享类型的归属与依赖方向规划、观察状态、感知新鲜度tests/unit_tests/fast/test_sequence_contract.py、tests/unit_tests/api/test_world_state.py、tests/unit_tests/tools/test_sensing_cache_invalidation.py前置条件、未知状态、绑定、过期位置在规划与执行间保持一致技能选择与规划层级tests/unit_tests/fast/test_two_tier_planning.py、tests/unit_tests/fast/test_planner_capabilities.py、tests/unit_tests/skills/test_skills_capability_gated.py能力门控与回退到动作组合的条件Rail 策略与挂载tests/unit_tests/rails/test_safety.py、tests/unit_tests/rails/test_recovery.py见下文、tests/unit_tests/agent/test_builder_rails.py适用边界、非法输入、被包装动作、能力/配置相关挂载快速执行与伺服派发tests/unit_tests/fast/test_ability_exec.py、tests/unit_tests/fast/test_run_fast_task.py、tests/unit_tests/fast/test_tracking.py失败传播、执行器接线、逐目标策略与取消同时检查真实派发路径恢复与持载tests/unit_tests/rails/test_recovery.py、tests/unit_tests/adapters/cruzr/test_recovery_home.py载荷保持、安全撤退、回位失败、重复恢复驱动协议或适配器绑定tests/unit_tests/env/test_protocol.py、受影响的tests/unit_tests/adapters/测试能力切片、单位、几何、适配器本地失败行为并配合下述适配器脚本会话与子进程生命周期tests/unit_tests/agent/test_session.py、tests/unit_tests/perception/test_detector_sidecar.py幂等 connect/disconnect、部分启动失败、清理归属代码执行信任边界tests/unit_tests/tools/test_inproc_code.py仅执行器行为这些测试不构成沙箱或内部运动策略证明标定边界与发布tests/unit_tests/calibration/test_dependency_direction.py、test_workflows.py、test_artifacts.py、test_integration.py层/导入边界、验收门槛、candidate 拒绝、适配器重载验证标定适配器端口与手引导tests/unit_tests/adapters/piper/test_calibration_device.py、tests/unit_tests/adapters/so101/test_calibration_device.py、tests/unit_tests/adapters/so101/test_lowlevel.py机身测试调用test_adapter_conformance.py的 helper检查力矩恢复与末端执行器行为持久化诊断与 tracetests/unit_tests/rails/test_trace.py、tests/unit_tests/utils/test_logging.py采集配置、持久化字段、帧、失败可见性新 payload 检查敏感数据GUI 插件发现与启动tests/gui/launcher/test_plugins.py、tests/gui/launcher/test_gui_entry.py列表/帮助保持轻量选中插件收到规范化选项旧模块入口只是临时转发 shim安装 wheel 与 GUI 资源tests/gui/packaging/test_wheel.py离线 wheel 构建安装、检出目录外的入口点、内置 YAML/图标/默认配置需要 dev 构建工具Workbench 行为与导入边界tests/gui/workbench/unit/、tests/gui/workbench/components/Workbench 状态/引擎/视图留在 GUI 套件内页面导入不得急加载标定运行时持久化 storetests/unit_tests/runtime/test_store.py快照/事件事务、请求幂等/冲突、排序、关闭行为不构成执行或资源生命周期保证运行时任务执行与资源准入tests/unit_tests/runtime/、tests/unit_tests/agent/test_cancel_tracking.py、tests/unit_tests/agent/test_session_cleanup.py来源/配置隔离、跨进程竞争、请求重试、有界工件读取、失败清理官方 CLI 路径共享准入逻辑映射表同时声明了两条元规则架构要求来自AGENTS.md与相关设计文档实现与测试确立的是当前实际强制什么当二者不一致时记录差异而不是悄悄改写需求或把通过的测试当成完全覆盖的证据。命令与证据怎么跑、怎么报映射文档给出了具体的执行与报告规范# 1. 先跑被映射命中的聚焦文件示例 python -m pytest tests/unit_tests/api/test_actions.py tests/unit_tests/tools/test_builder.py # 2. 适配器公共绑定/驱动集成有行为变化时对该适配器跑双检查以 Piper 为例 python scripts/validate_adapter.py --module jiuwensymbiosis.adapters.piper python scripts/smoke_test_adapter.py --module jiuwensymbiosis.adapters.piper # 3. 更大范围的核心验证 python -m pytest tests/unit_tests/ # 或 make test-core python -m pytest tests/gui/ # GUI 套件需 .[dev,gui]或 make test-gui几个必须内化的细节静态检查工具在 Makefile 里是容忍失败的。查看 Makefilemake check的三个步骤ruff format --check/ruff check/mypy前面都带-前缀——子命令失败不会让 Make 退出非零。因此检查其输出因为当前配方容忍工具失败Make 成功退出本身不构成检查通过的证明。smoke 脚本的能力边界scripts/smoke_test_adapter.py 用 stub 驱动驱动每个动作验证派发与结果形状含 JSON 可序列化但它不能证明物理可达性、碰撞安全或真机时序改动适配器逻辑时应补充聚焦行为测试。集成与实时命令有前置条件pytest -m integration、jiuwensymbiosis-state等需要真实硬件/服务条件不应作为文档评审的自动跟进。报告义务记录跑了什么、通过/失败/跳过了什么、只做了静态检查的有哪些核对测试收集数量并解释相关 skip/xfail对每个新的架构不变量指出现有可扩展的检查或说明仍需要人工评审的部分——一份测试列表不是执行证据。不变量被固化成架构守卫测试值得注意的是这套原则并非只靠自觉执行——关键不变量已经被写成了会失败测试的架构守卫这正是定义可观察成功的最佳范例tests/unit_tests/test_layering.py用 AST 扫描perception/、motion/全量文件任何一处import jiuwensymbiosis.api.*都会让测试失败失败信息直接引用了归属规则两侧共享的形状放 jiuwensymbiosis/contracts.py它不归属任何层tests/unit_tests/calibration/test_dependency_direction.py强制calibration 可以 import corecore 不得 import calibration的单向依赖tests/unit_tests/test_vocabulary_forks.py保证各机身不会悄悄制造竞争性动作名称tests/unit_tests/api/test_no_bundling.py保证共享实现不隐式宣告邻近动作。这类测试就是 python-testing 技能 与 testing 规则所要求的新不变量可测时扩展相关检查不另建平行断言框架的直接产物。一次改动的完整工作流把六条原则串起来综合上述内容在本仓库完成一次符合开发原则的改动推荐按以下闭环执行定案读需求与AGENTS.md相关约束检查被触及模块的__init__.py导出面与附近测试把实质性假设写进交付说明定级局部修复 → 聚焦 diff 即可触及公共契约/归属/依赖方向 → 按 module-design 给出设计论证实质设计落到design/新逻辑先找现有所有者硬件差异一律留在能力/适配器契约之后定义成功实现前写出可观察的成功标准行为 bug 先写能复现它的聚焦回归测试重构对照既有契约验证不写镜像测试执行与清理小步提交范围内的改动删除被本次改动淘汰的代码无关发现只报告验证与报告按 改动验证映射 选中受影响的行先跑聚焦测试文件再按需扩大到make test-core/make test-gui适配器改动补跑validate_adapter.pysmoke_test_adapter.py双检查Python 改动跑 Ruff 与相关类型检查并阅读make check的输出而非只看退出码交付报告实际命令、结果、skip/xfail 解释、纯静态检查的部分、以及剩余的不确定性与需人工评审的不变量。这套原则的价值在于它把改代码从凭感觉的操作变成了可核查的流程每一步要么有仓库证据要么显式标注为假设或待人工评审从而在多硬件、多智能体协作的框架演进中保持架构边界不被悄悄侵蚀。赞分享具身智能人工智能AI Agent机器人计算机视觉Agent 编排【免费下载链接】jiuwensymbiosisJiuwen Symbiosis就是一个能懂人话、看得见物理世界、长了四肢的智能助手。用户不需要示教不需要教它怎么抓东西怎么走路就像指挥一个经验丰富的工人一样用自然语言下任务它就能自己完成感知、理解、规划、执行。项目地址https://gitcode.com/openJiuwen/jiuwensymbiosis点击查看免费下载相关推荐使用 VS Code 浏览器工具驱动 AI Agent 的 Web 开发验证闭环使用 VS Code 浏览器工具驱动 AI Agent 的 Web 开发验证闭环 浏览器工具Browser tools内置于 VS Code 之中为 AI文档教程SuperClaude Framework 软件工程原则解读Evidence Assumptions 的证据驱动开发方法论SuperClaude Framework 软件工程原则解读Evidence Assumptions 的证据驱动开发方法论 导读 src/supercla开发工具CLIAI 技能/插件测试人工智能AI 评测e2e 验证闭环实战用 testbed 与 Benchmark 应用对构建产物证明你的框架改动e2e 验证闭环实战用 testbed 与 Benchmark 应用对构建产物证明你的框架改动 本文基于 e2e 仓库的内部开发者技能文档 verify ht测试测试智能体人工智能浏览器控制CLI上一篇终极指南如何使用OpenArk这款免费Windows系统安全工具保护你的电脑下一篇徽章大挑战解锁你的GitHub个人成就新篇章创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考