当前位置: 首页 > article >正文

Dify 代码执行安装自定义 Python 依赖及权限问题解决

一直都在比较深度的使用 Dify AI开发平台今天做某个 agent 需求需要用到执行 python 脚本并且要导入一些默认沙盒没有安装的依赖比如 jaydebeapi、pandas等等。因为 dify 默认为了安全运行沙盒都是白名单模式没有配置在内的权限和依赖都是不允许调用的。复现问题如果你非要强行引入再使用会报错如下Traceback (most recent call last): File /var/sandbox/sandbox-python/tmp/2b0a2ee2_33f1_4976_a301_4e5d0d092801.py, line 48, in module File string, line 3, in module ModuleNotFoundError: No module named jaydebeapi error: exit status 255Dify 代码执行安装自定义 Python 依赖及权限问题解决提示非常的明显因为引入了jaydebeapi依赖库不存在而报错。要解决这个问题有临时和永久解决方案临时方案就是直接进入 sandbox容器镜像里pip install 直接临时安装但是重启容器就失效了。本文这里就直接说永久修改办法1、找到 docker 部署目录下的dify 安装目录/docker/volumes/sandbox/dependencies下然后会有一个python-requirements.txt文件默认里面没有任何内容你直接把需要安装的依赖和版本定义在里面即可。代码语言javascriptAI代码解释pandas2.2.3 jaydebeapi1.2.32、然后重启 sandbox 容器执行docker compose restart sandbox虽然安装了依赖再次运行还会报错。Run failed: error: operation not permitted。Dify 代码执行安装自定义 Python 依赖及权限问题解决然后又继续找网上帖子解决最后发现运行时还有一堆参数要修改需要继续修改配置文件。编辑dify安装目录/docker/volumes/sandbox/conf/config.yaml文件这个配置文件可以修改很多东西包括 python 镜像源等等感兴趣的可以看下同级目录下的config.yaml.example文件我们针对这个权限不足报错只用修改allowed_syscalls配置默认是没有任何配置的。然后改成如下的内容建议只根据需要开放指定权限我这里直接简单粗暴生产慎用代码语言javascriptAI代码解释allowed_syscalls: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335]allowed_syscalls 参数具体含义见文末allowed_syscalls 参数同样还是需要重启容器才生效问题解决。总结通过本文主要通过修改dify sandbox沙箱环境解决依赖和权限的问题可以导入更多自定义的依赖进行代码执行但是博主建议如果需要执行耗时的操作代码最后不要通过代码执行因为会存在超时拉长用户体验耗时等建议只做一些简单的计算操作即可复杂逻辑可以单独写代码进行处理更加合适有深度使用 dify 的可以和博主交流。小广告博主可接 AI 相关应用开发用AI提高复杂重复劳动的场景让AI真正赋能而不是仅仅调用大模型API停留到概念上欢迎各位老板咨询。参考链接问题修复记录Dify Docker Sandbox 指定Pip源 与 代码运行无权限 问题dify官方常见问题FAQ代码执行 节点导入第三方包受限如何在Dify沙盒中安装运行pandas、numpyDify应用实战番外 - 网友提问(2)dify issues#18113Dify沙盒的高级使用allow_syscalls 参数含义代码语言javascriptAI代码解释# 基础文件操作 - 0 # read - 从文件描述符读取数据 - 1 # write - 向文件描述符写入数据 - 2 # open - 打开文件 - 3 # close - 关闭文件描述符 - 4 # stat - 获取文件状态 - 5 # fstat - 获取文件描述符状态 - 6 # lstat - 获取符号链接状态 - 7 # poll - 等待文件描述符上的事件 - 8 # lseek - 重新定位读/写文件偏移量 - 9 # mmap - 将文件或设备映射到内存 - 10 # mprotect - 设置内存区域的保护 - 11 # munmap - 取消内存映射 - 12 # brk - 改变数据段大小 # 系统操作 - 13 # rt_sigaction - 检查或修改信号处理 - 14 # rt_sigprocmask - 检查或修改阻塞信号 - 15 # rt_sigreturn - 从信号处理程序返回 - 16 # ioctl - 控制设备 - 17 # pread64 - 从指定偏移量读取 - 18 # pwrite64 - 向指定偏移量写入 - 19 # readv - 从文件描述符读取数据到多个缓冲区 - 20 # writev - 从多个缓冲区写入数据到文件描述符 - 21 # access - 检查文件访问权限 - 22 # pipe - 创建管道 - 23 # select - 同步 I/O 多路复用 - 24 # sched_yield - 让出处理器 - 25 # mremap - 重新映射虚拟内存地址 # 高级内存管理 - 26 # msync - 同步内存与物理存储 - 27 # mincore - 确定内存页是否驻留在内存中 - 28 # madvise - 给出内存使用建议 - 29 # shmget - 获取共享内存段 - 30 # shmat - 附加共享内存段 - 31 # shmctl - 共享内存控制 - 32 # dup - 复制文件描述符 - 33 # dup2 - 复制文件描述符到指定编号 - 34 # pause - 挂起进程直到收到信号 # 进程管理 - 35 # nanosleep - 高精度睡眠 - 36 # getitimer - 获取定时器值 - 37 # alarm - 设置定时器 - 38 # setitimer - 设置定时器 - 39 # getpid - 获取进程ID - 40 # sendfile - 在文件描述符之间传输数据 # 网络操作 - 41 # socket - 创建套接字 - 42 # connect - 初始化套接字连接 - 43 # accept - 接受套接字连接 - 44 # sendto - 通过套接字发送消息 - 45 # recvfrom - 从套接字接收消息 - 46 # sendmsg - 通过套接字发送消息 - 47 # recvmsg - 通过套接字接收消息 - 48 # shutdown - 关闭套接字连接 - 49 # bind - 绑定套接字到地址 - 50 # listen - 监听套接字连接 # 进程间通信 - 51 # getsockname - 获取套接字本地地址 - 52 # getpeername - 获取套接字对端地址 - 53 # socketpair - 创建一对已连接的套接字 - 54 # setsockopt - 设置套接字选项 - 55 # getsockopt - 获取套接字选项 # 进程控制 - 56 # clone - 创建子进程 - 57 # fork - 创建进程 - 58 # vfork - 创建进程并阻塞父进程 - 59 # execve - 执行程序 - 60 # exit - 终止进程 - 61 # wait4 - 等待进程改变状态 - 62 # kill - 发送信号 # 信号处理 - 63 # uname - 获取系统信息 - 64 # semget - 获取信号量集 - 65 # semop - 信号量操作 - 66 # semctl - 信号量控制 - 67 # shmdt - 分离共享内存段 - 68 # msgget - 获取消息队列 - 69 # msgsnd - 发送消息到队列 - 70 # msgrcv - 从队列接收消息 - 71 # msgctl - 消息队列控制 # 文件系统操作 - 72 # fcntl - 文件描述符控制 - 73 # flock - 应用或删除文件锁 - 74 # fsync - 同步文件到存储设备 - 75 # fdatasync - 同步文件数据 - 76 # truncate - 截断文件 - 77 # ftruncate - 截断文件描述符指向的文件 - 78 # getdents - 获取目录项 - 79 # getcwd - 获取当前工作目录 - 80 # chdir - 改变当前工作目录 # 文件系统管理 - 81 # fchdir - 通过文件描述符改变当前工作目录 - 82 # rename - 重命名文件 - 83 # mkdir - 创建目录 - 84 # rmdir - 删除目录 - 85 # creat - 创建新文件 - 86 # link - 创建硬链接 - 87 # unlink - 删除文件名 - 88 # symlink - 创建符号链接 - 89 # readlink - 读取符号链接的值 - 90 # chmod - 改变文件权限 # 权限和所有权 - 91 # fchmod - 改变文件描述符的权限 - 92 # chown - 改变文件所有者和组 - 93 # fchown - 改变文件描述符指向文件的所有者和组 - 94 # lchown - 改变符号链接的所有者和组 - 95 # umask - 设置文件模式创建掩码 # 系统信息和统计 - 96 # gettimeofday - 获取时间和日期 - 97 # getrlimit - 获取资源限制 - 98 # getrusage - 获取资源使用情况 - 99 # sysinfo - 获取系统统计信息 - 100 # times - 获取进程时间 # 系统控制 - 101 # ptrace - 进程跟踪 - 102 # getuid - 获取用户ID - 103 # syslog - 读取或清除内核消息 - 104 # getgid - 获取组ID - 105 # setuid - 设置用户ID - 106 # setgid - 设置组ID # 用户和组管理 - 107 # geteuid - 获取有效用户ID - 108 # getegid - 获取有效组ID - 109 # setpgid - 设置进程组 - 110 # getppid - 获取父进程ID - 111 # getpgrp - 获取进程组ID # 会话管理 - 112 # setsid - 创建会话并设置进程组ID - 113 # setreuid - 设置实际和有效用户ID - 114 # setregid - 设置实际和有效组ID - 115 # getgroups - 获取附加组ID - 116 # setgroups - 设置附加组ID # 系统资源管理 - 117 # setresuid - 设置实际、有效和保存的用户ID - 118 # getresuid - 获取实际、有效和保存的用户ID - 119 # setresgid - 设置实际、有效和保存的组ID - 120 # getresgid - 获取实际、有效和保存的组ID # 系统时间管理 - 121 # getpgid - 获取进程组ID - 122 # setfsuid - 设置文件系统用户ID - 123 # setfsgid - 设置文件系统组ID - 124 # getsid - 获取会话ID - 125 # capget - 获取进程权能 - 126 # capset - 设置进程权能 # 实时调度 - 127 # rt_sigpending - 检查待处理信号 - 128 # rt_sigtimedwait - 同步等待信号 - 129 # rt_sigqueueinfo - 排队一个信号和数据 - 130 # rt_sigsuspend - 等待信号 # 高级进程管理 - 131 # sigaltstack - 设置和获取信号栈上下文 - 132 # utime - 改变文件的访问和修改时间 - 133 # mknod - 创建特殊文件 - 134 # uselib - 加载共享库 - 135 # personality - 设置进程执行域 # 系统调用 - 136 # ustat - 获取文件系统统计信息 - 137 # statfs - 获取文件系统信息 - 138 # fstatfs - 获取文件系统信息 - 139 # sysfs - 获取文件系统类型信息 - 140 # getpriority - 获取程序调度优先级 # 进程优先级 - 141 # setpriority - 设置程序调度优先级 - 142 # sched_setparam - 设置调度参数 - 143 # sched_getparam - 获取调度参数 - 144 # sched_setscheduler - 设置调度策略和参数 - 145 # sched_getscheduler - 获取调度策略 # 调度策略 - 146 # sched_get_priority_max - 获取静态优先级上限 - 147 # sched_get_priority_min - 获取静态优先级下限 - 148 # sched_rr_get_interval - 获取时间片 - 149 # mlock - 锁定内存页 - 150 # munlock - 解锁内存页 # 内存锁定 - 151 # mlockall - 锁定进程的地址空间 - 152 # munlockall - 解锁进程的地址空间 - 153 # vhangup - 虚拟挂起终端 - 154 # modify_ldt - 读取或写入本地描述符表 - 155 # pivot_root - 改变根文件系统 # 系统引导 - 156 # _sysctl - 读取/写入系统参数 - 157 # prctl - 操作进程或线程 - 158 # arch_prctl - 设置架构特定的线程状态 - 159 # adjtimex - 调整系统时钟 # 文件系统控制 - 161 # chroot - 改变根目录 - 162 # sync - 同步文件系统缓冲区 - 163 # acct - 切换进程记账 - 164 # settimeofday - 设置时间和日期 - 165 # mount - 挂载文件系统 # 系统维护 - 166 # umount2 - 卸载文件系统 - 167 # swapon - 开启交换设备和文件 - 168 # swapoff - 关闭交换设备和文件 - 169 # reboot - 重新启动系统 - 170 # sethostname - 设置系统主机名 # 网络配置 - 171 # setdomainname - 设置系统域名 - 172 # iopl - 改变I/O权限级别 - 173 # ioperm - 设置端口I/O权限 - 174 # create_module - 创建可加载的模块项 - 175 # init_module - 初始化内核模块 # 内核模块 - 176 # delete_module - 删除内核模块 - 177 # get_kernel_syms - 检索导出的内核符号 - 178 # query_module - 查询内核模块信息 - 179 # quotactl - 操作文件系统配额 - 180 # nfsservctl - NFS服务器控制 # 系统信息查询 - 181 # getpmsg - 接收控制消息 - 182 # putpmsg - 发送控制消息 - 183 # afs_syscall - 未实现的系统调用 - 184 # tuxcall - 未实现的系统调用 - 185 # security - 未实现的系统调用 # 新增系统调用 - 186 # gettid - 获取线程标识符 - 187 # readahead - 预读文件到页面缓存 - 188 # setxattr - 设置扩展属性 - 189 # lsetxattr - 设置符号链接的扩展属性 - 190 # fsetxattr - 设置文件描述符的扩展属性 # 扩展属性操作 - 191 # getxattr - 获取扩展属性 - 192 # lgetxattr - 获取符号链接的扩展属性 - 193 # fgetxattr - 获取文件描述符的扩展属性 - 194 # listxattr - 列出扩展属性 - 195 # llistxattr - 列出符号链接的扩展属性 # 高级文件系统特性 - 196 # flistxattr - 列出文件描述符的扩展属性 - 197 # removexattr - 删除扩展属性 - 198 # lremovexattr - 删除符号链接的扩展属性 - 199 # fremovexattr - 删除文件描述符的扩展属性 - 200 # tkill - 发送信号到线程 # 时间管理 - 201 # time - 获取时间 - 202 # futex - 快速用户空间锁定 - 203 # sched_setaffinity - 设置进程的CPU亲和性掩码 - 204 # sched_getaffinity - 获取进程的CPU亲和性掩码 - 205 # set_thread_area - 设置线程本地存储 # 进程/线程控制 - 206 # io_setup - 创建异步I/O上下文 - 207 # io_destroy - 销毁异步I/O上下文 - 208 # io_getevents - 从完成队列读取异步I/O事件 - 209 # io_submit - 提交异步I/O块 - 210 # io_cancel - 取消异步I/O操作 # 异步I/O - 211 # get_thread_area - 获取线程本地存储 - 212 # lookup_dcookie - 获取目录cookie的路径 - 213 # epoll_create - 创建epoll实例 - 214 # epoll_ctl_old - 旧的epoll控制接口 - 215 # epoll_wait_old - 旧的epoll等待接口 # 事件通知 - 216 # remap_file_pages - 创建非线性文件映射 - 217 # getdents64 - 获取目录项64位版本 - 218 # set_tid_address - 设置清除子线程ID的地址 - 219 # restart_syscall - 重启被中断的系统调用 - 220 # semtimedop - 带超时的信号量操作 # 定时器和时钟 - 221 # fadvise64 - 预声明访问模式 - 222 # timer_create - 创建POSIX定时器 - 223 # timer_settime - 设置定时器的时间 - 224 # timer_gettime - 获取定时器的时间 - 225 # timer_getoverrun - 获取定时器超限次数 # POSIX定时器 - 226 # timer_delete - 删除POSIX定时器 - 227 # clock_settime - 设置指定时钟的时间 - 228 # clock_gettime - 获取指定时钟的时间 - 229 # clock_getres - 获取时钟精度 - 230 # clock_nanosleep - 高精度睡眠 # 进程终止 - 231 # exit_group - 终止所有线程 - 232 # epoll_wait - 等待epoll事件 - 233 # epoll_ctl - 控制epoll实例 - 234 # tgkill - 发送信号到线程 - 235 # utimes - 更改文件访问和修改时间 # 虚拟内存操作 - 236 # vserver - Linux-VServer操作 - 237 # mbind - 设置内存策略 - 238 # set_mempolicy - 设置NUMA内存策略 - 239 # get_mempolicy - 检索NUMA内存策略 - 240 # mq_open - 打开消息队列 # POSIX消息队列 - 241 # mq_unlink - 删除消息队列 - 242 # mq_timedsend - 发送消息到队列 - 243 # mq_timedreceive - 从队列接收消息 - 244 # mq_notify - 注册消息队列通知 - 245 # mq_getsetattr - 获取/设置消息队列属性 # 密钥管理 - 246 # kexec_load - 加载新内核 - 247 # waitid - 等待进程状态改变 - 248 # add_key - 添加密钥到内核密钥管理系统 - 249 # request_key - 请求操作密钥 - 250 # keyctl - 密钥管理控制 # 输入输出多路复用 - 251 # ioprio_set - 设置I/O调度优先级 - 252 # ioprio_get - 获取I/O调度优先级 - 253 # inotify_init - 初始化inotify实例 - 254 # inotify_add_watch - 添加inotify监视 - 255 # inotify_rm_watch - 删除inotify监视 # 文件系统监控 - 256 # migrate_pages - 在NUMA系统中迁移进程页 - 257 # openat - 相对路径打开文件 - 258 # mkdirat - 相对路径创建目录 - 259 # mknodat - 相对路径创建特殊文件 - 260 # fchownat - 相对路径改变所有权 # 相对路径操作 - 261 # futimesat - 相对路径更改时间戳 - 262 # newfstatat - 相对路径获取文件状态 - 263 # unlinkat - 相对路径删除文件 - 264 # renameat - 相对路径重命名 - 265 # linkat - 相对路径创建硬链接 # 符号链接操作 - 266 # symlinkat - 相对路径创建符号链接 - 267 # readlinkat - 相对路径读取符号链接 - 268 # fchmodat - 相对路径改变权限 - 269 # faccessat - 相对路径检查访问权限 - 270 # pselect6 - 改进的select系统调用 # 高级I/O操作 - 271 # ppoll - 改进的poll系统调用 - 272 # unshare - 解除共享命名空间 - 273 # set_robust_list - 设置健壮的futex列表 - 274 # get_robust_list - 获取健壮的futex列表 - 275 # splice - 在文件描述符之间移动数据 # 零拷贝操作 - 276 # tee - 复制管道数据 - 277 # sync_file_range - 同步文件段 - 278 # vmsplice - 在进程和内核之间传输数据 - 279 # move_pages - 在NUMA系统中移动页面 - 280 # utimensat - 相对路径更改文件时间戳 # 事件通知 - 281 # epoll_pwait - 等待epoll事件可中断 - 282 # signalfd - 创建信号接收文件描述符 - 283 # timerfd_create - 创建定时器文件描述符 - 284 # eventfd - 创建事件通知文件描述符 - 285 # fallocate - 预分配文件空间 # 定时器操作 - 286 # timerfd_settime - 设置定时器文件描述符 - 287 # timerfd_gettime - 读取定时器文件描述符 - 288 # accept4 - 接受带标志的连接 - 289 # signalfd4 - 改进的signalfd - 290 # eventfd2 - 改进的eventfd # 文件系统操作 - 291 # epoll_create1 - 改进的epoll_create - 292 # dup3 - 改进的dup2 - 293 # pipe2 - 改进的pipe - 294 # inotify_init1 - 改进的inotify_init - 295 # preadv - 向量化的pread # 向量I/O操作 - 296 # pwritev - 向量化的pwrite - 297 # rt_tgsigqueueinfo - 排队实时信号到线程组 - 298 # perf_event_open - 性能监控 - 299 # recvmmsg - 接收多个消息 - 300 # fanotify_init - 初始化fanotify # 文件系统通知 - 301 # fanotify_mark - 管理fanotify标记 - 302 # prlimit64 - 获取/设置资源限制 - 303 # name_to_handle_at - 文件句柄操作 - 304 # open_by_handle_at - 通过文件句柄打开 - 305 # clock_adjtime - 调整系统时钟 # 同步操作 - 306 # syncfs - 同步文件系统 - 307 # sendmmsg - 发送多个消息 - 308 # setns - 设置命名空间 - 309 # getcpu - 获取CPU和NUMA节点 - 310 # process_vm_readv - 进程间读取数据 # 进程间通信 - 311 # process_vm_writev - 进程间写入数据 - 312 # kcmp - 内核比较两个进程 - 313 # finit_module - 从文件描述符加载内核模块 - 314 # sched_setattr - 设置调度属性 - 315 # sched_getattr - 获取调度属性 # 安全计算 - 316 # renameat2 - 扩展的重命名操作 - 317 # seccomp - 设置安全计算模式 - 318 # getrandom - 获取随机数 - 319 # memfd_create - 创建匿名文件 - 320 # kexec_file_load - 从文件加载新内核 # 命名空间操作 - 321 # bpf - 扩展的BPF系统调用 - 322 # execveat - 相对路径执行程序 - 323 # userfaultfd - 用户页错误处理 - 324 # membarrier - 发出内存屏障 - 325 # mlock2 - 改进的内存锁定 # 套接字操作 - 326 # copy_file_range - 复制文件范围 - 327 # preadv2 - 带标志的向量化pread - 328 # pwritev2 - 带标志的向量化pwrite - 329 # pkey_mprotect - 设置内存保护键 - 330 # pkey_alloc - 分配内存保护键 # 内存保护 - 331 # pkey_free - 释放内存保护键 - 332 # statx - 扩展的文件状态 - 333 # io_pgetevents - 获取异步I/O事件 - 334 # rseq - 重启序列 - 335 # pidfd_send_signal - 通过文件描述符发送信号function Catalogswith(){document.getElementById(catalog-col).classList.toggle(catalog);document.getElementById(catalog).classList.toggle(catalog)}

相关文章:

Dify 代码执行安装自定义 Python 依赖及权限问题解决

一直都在比较深度的使用 Dify AI开发平台,今天做某个 agent 需求需要用到执行 python 脚本,并且要导入一些默认沙盒没有安装的依赖,比如 jaydebeapi、pandas等等。因为 dify 默认为了安全运行沙盒都是白名单模式,没有配置在内的权…...

Nanbeige 4.1-3B惊艳案例分享:30亿参数在复古UI中生成神谕级回答

Nanbeige 4.1-3B惊艳案例分享:30亿参数在复古UI中生成神谕级回答 1. 像素冒险中的AI对话革命 在当今AI交互界面普遍追求极简风格的大环境下,Nanbeige 4.1-3B带来了一场视觉与功能的双重革新。这套专为30亿参数大模型设计的"像素游戏风"对话前…...

【稀缺首发】中国某星座在轨卫星真实OBC源码片段(脱敏版):仅限本文公开的3段高可靠C代码——看懂如何用volatile+memory barrier应对单粒子翻转

第一章:低轨卫星C语言代码示例低轨卫星(LEO)嵌入式系统对实时性、内存占用和抗辐射鲁棒性有严苛要求,C语言因其零开销抽象、确定性执行与硬件级控制能力,成为星载软件开发的主流选择。以下示例模拟星务计算机中常见的遥…...

Nanbeige 4.1-3B惊艳效果:夜间模式切换与像素风格暗色适配

Nanbeige 4.1-3B惊艳效果:夜间模式切换与像素风格暗色适配 1. 复古像素风AI对话体验革新 在AI交互界面设计趋同化的今天,Nanbeige 4.1-3B的像素冒险聊天终端带来了一股清新之风。这套专为4.1-3B模型设计的前端界面,彻底颠覆了传统聊天机器人…...

ChromePass:3分钟找回Chrome浏览器所有密码的完整指南

ChromePass:3分钟找回Chrome浏览器所有密码的完整指南 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾经在登录重要网站时,明明记得Chrome保存过…...

OpenCV手势识别实战:用convexityDefects函数实现数字手势检测(附完整代码)

OpenCV手势识别实战:用convexityDefects函数实现数字手势检测 手势识别作为人机交互的重要方式,在智能家居、虚拟现实、医疗康复等领域有着广泛应用。本文将带你从零开始,使用OpenCV的convexityDefects函数实现一个完整的数字手势识别系统。不…...

Qwen3-TTS-1.7B-Base实操手册:批量文本转语音+多音色并行生成

Qwen3-TTS-1.7B-Base实操手册:批量文本转语音多音色并行生成 想不想让电脑帮你把大段文字自动念出来,还能用不同人的声音、不同的语言来读?今天要聊的Qwen3-TTS-1.7B-Base,就是这样一个“声音魔法师”。它不仅能听懂你的文字&…...

从零到一:用Gen6D和COLMAP为自己的小物件做6D位姿估计(鼠标/充电器实测)

从零到一:用Gen6D和COLMAP实现自定义物体的6D位姿估计实战指南 当你拿起桌上的无线鼠标时,大脑能瞬间判断它的位置和朝向——这种空间感知能力对机器人而言却是巨大的挑战。6D位姿估计技术正试图赋予机器这种三维空间理解能力,而Gen6D作为202…...

# 智能交通系统中的多源数据融合:基于Python的实时车辆轨迹预测实战在智能交

智能交通系统中的多源数据融合:基于Python的实时车辆轨迹预测实战 在智能交通系统(ITS)中,精准的车辆轨迹预测能力是实现动态路径规划、拥堵预警和自动驾驶协同的核心支撑技术之一。本文将围绕如何利用Python构建一个轻量级但高效…...

智慧工地设备选型与落地实践:从技术参数到项目实效的全维度解析

作为建筑行业数字化转型的核心载体,智慧工地设备的选型与落地直接决定了项目管理的智能化水平。不少施工企业在设备采购时容易陷入 “参数堆砌” 的误区,忽略了场景适配性与系统协同性。本文结合建安物联在数百个项目中的实践经验,从设备技术…...

图层导出效率提升指南:Photoshop自动化工具的工作流优化方案

图层导出效率提升指南:Photoshop自动化工具的工作流优化方案 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script from Adobe. 项目地址…...

如何快速配置轻量级图像查看器:JPEGView的完整使用指南

如何快速配置轻量级图像查看器:JPEGView的完整使用指南 【免费下载链接】jpegview Fork of JPEGView by David Kleiner - fast and highly configurable viewer/editor for JPEG, BMP, PNG, WEBP, TGA, GIF and TIFF images with a minimal GUI. Basic on-the-fly i…...

西门子PLC与组态王联手打造水泥混凝土自动配料系统:动态视频组态界面+脚本应用

西门子PLC和组态王组态自动配料系统的设计水泥混凝土,以实际视频组态界面为准,带脚本车间里的搅拌机轰隆隆转着,水泥灰在传送带上扬起细密的粉尘。老王叼着烟头蹲在控制柜旁边,突然扭头冲我喊:"这破系统又卡在骨料…...

用丹青幻境做汉服设计:轻松生成唐代齐胸襦裙、宋代褙子等各朝代服饰

用丹青幻境做汉服设计:轻松生成唐代齐胸襦裙、宋代褙子等各朝代服饰 1. 丹青幻境与汉服设计的完美结合 丹青幻境Z-Image Atelier是一款专为数字艺术创作设计的AI工具,它将现代AI技术与传统东方美学完美融合。这款工具基于先进的Z-Image架构&#xff0c…...

4步打造企业级高效协作平台:DzzOffice私有化部署完整指南

4步打造企业级高效协作平台:DzzOffice私有化部署完整指南 【免费下载链接】dzzoffice dzzoffice 项目地址: https://gitcode.com/gh_mirrors/dz/dzzoffice 在数字化转型浪潮中,企业面临着信息孤岛、协作效率低下、数据安全风险等多重挑战。DzzOff…...

Phi-3-mini-128k-instruct效果对比:vs Qwen2.5-7B/Qwen3-4B在长文本理解任务中胜出

Phi-3-mini-128k-instruct效果对比:vs Qwen2.5-7B/Qwen3-4B在长文本理解任务中胜出 1. 模型简介 Phi-3-Mini-128K-Instruct是一个38亿参数的轻量级开放模型,采用Phi-3数据集训练而成。这个数据集包含合成数据和经过筛选的公开网站数据,特别…...

LumiPixel Canvas Quest赋能社交媒体运营:自动化生成品牌代言人形象

LumiPixel Canvas Quest赋能社交媒体运营:自动化生成品牌代言人形象 1. 社交媒体内容创作的痛点与机遇 在当今快节奏的社交媒体环境中,品牌运营团队面临着一个共同挑战:如何持续产出高质量、风格一致的视觉内容。传统的内容创作流程往往需要…...

叉车防撞系统如何实现预警

在工厂车间或隧道施工现场,你是否见过工人因设备盲区遭遇碰撞的惊险瞬间?UWB AOA防撞技术正用厘米级精度重构安全防护标准,让危险预警从“被动响应”升级为“主动防御”。 工人佩戴的胸卡标签不再是简单ID卡——当进入危险区域时,…...

Qwen3-32B模型成本对比:OpenClaw本地调用vs第三方API实战测评

Qwen3-32B模型成本对比:OpenClaw本地调用vs第三方API实战测评 1. 为什么需要关注模型调用成本 去年夏天,当我第一次用OpenClaw搭建个人自动化工作流时,被月底的API账单吓了一跳。一个简单的"每日行业资讯收集摘要生成"任务&#…...

PHP函数、面向对象、内置函数库与Web交互(第二篇)

前言 在掌握了PHP基础语法、流程控制与数组之后,我们进入实战篇。本篇将系统讲解PHP开发的四大核心技能:函数、面向对象编程、常用内置函数库和Web交互。这些是构建动态网站的关键,学完你就能独立开发功能完整的Web应用。 目录 前言 一、 函…...

嵌入式系统主流接口技术原理与工程实践

1. 嵌入式系统接口技术深度解析嵌入式系统作为连接物理世界与数字世界的桥梁,其核心能力不仅体现在计算性能上,更关键地依赖于丰富多样的外设接口技术。这些接口构成了系统与传感器、执行器、人机交互设备及网络环境之间信息交换的物理通道和协议基础。在…...

游戏世界的中央收银台:腾讯米大师

想象你开了一家餐厅。 餐厅正式营业之前,你需要做很多准备工作。 厨师要练习新菜品,可能会做失败,可能会浪# 米大师:游戏世界里的收银台 你走进一家大型商场。 商场里有几百家店铺,卖各种各样的东西。 但你注意到一件奇怪的事情: 每一家店铺,都没有自己的收银台。 …...

Nomic-Embed-Text-V2-MoE模型Windows部署全流程:从系统重装到服务上线

Nomic-Embed-Text-V2-MoE模型Windows部署全流程:从系统重装到服务上线 如果你是一名Windows开发者,想在自己的电脑上跑起最新的Nomic-Embed-Text-V2-MoE模型,但被各种环境问题搞得头大,那这篇文章就是为你准备的。 我见过太多朋…...

游戏货币系统:三套环境避坑指南

想象你开了一家餐厅。 餐厅正式营业之前,你需要做很多准备工作。 厨师要练习新菜品,可能会做失败,可能会浪费食材,可能会把厨房搞得一团糟。 服务员要演练点餐流程,可能会搞错桌号,可能会上错菜&#xff0c…...

自动驾驶开发者必看:BDD100K vs Nuscenes数据集对比与选型指南

自动驾驶开发者必看:BDD100K vs Nuscenes数据集深度对比与实战选型指南 在自动驾驶技术快速迭代的今天,高质量数据集已成为算法突破的关键燃料。作为行业两大标杆,BDD100K和Nuscenes各自以独特的视角记录了真实世界的驾驶场景。但面对具体项目…...

车载嵌入式显示驱动框架DOS技术解析

1. 项目概述DOS(Display Operating System)是一个面向汽车级人机交互(HMI)场景的轻量级嵌入式显示驱动框架,专为大众集团CARIAD平台定制开发。其核心定位并非通用操作系统,而是聚焦于TFT-LCD/GLCD类并行/串…...

OpenClaw旅行规划:Qwen3-32B自动生成行程安排

OpenClaw旅行规划:Qwen3-32B自动生成行程安排 1. 为什么需要AI旅行规划助手 上个月我计划一次跨省旅行时,面对十几个备选城市、上百个景点和复杂的交通衔接,整整花了三个晚上做行程表。直到同事提醒我:"你天天折腾AI自动化…...

单片机系统抗干扰设计的10个关键工程细节

1. 单片机系统抗干扰设计的工程实践:10个关键细节解析 在工业现场、智能仪表、家用电器及各类嵌入式测控系统中,单片机已不再是实验室环境下的理想器件,而是长期运行于复杂电磁环境中的核心控制器。其可靠性不再仅取决于功能实现,…...

开源工具OCAuxiliaryTools:让OpenCore配置化繁为简的跨平台解决方案

开源工具OCAuxiliaryTools:让OpenCore配置化繁为简的跨平台解决方案 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools Ope…...

高效解决Sublime Text编码难题:ConvertToUTF8插件全场景应用指南

高效解决Sublime Text编码难题:ConvertToUTF8插件全场景应用指南 【免费下载链接】ConvertToUTF8 A Sublime Text 2 & 3 plugin for editing and saving files encoded in GBK, BIG5, EUC-KR, EUC-JP, Shift_JIS, etc. 项目地址: https://gitcode.com/gh_mirr…...