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

Casdoor开源统一身份认证平台:基于OAuth 2.0与OIDC的SSO实战指南

1. 项目概述一个开源的统一身份认证与单点登录平台如果你正在为多个内部系统各自独立的登录入口而头疼或者厌倦了为每个新应用重复开发用户注册、登录、权限管理这些“轮子”那么 Casdoor 这个项目绝对值得你花时间深入了解。简单来说Casdoor 是一个用 Go 语言编写的、开箱即用的统一身份认证与单点登录平台。你可以把它理解为你所有应用背后的“中央认证服务器”用户只需要在 Casdoor 注册一次就可以凭借一套账号密码安全地访问所有接入它的应用无论是 Web 应用、移动 App 还是 API 服务。我第一次接触 Casdoor 是在一个需要快速整合五六个遗留系统的项目里每个系统都有自己的用户表数据不互通体验割裂。当时评估了多个方案最终 Casdoor 以其简洁的架构、丰富的协议支持和活跃的社区脱颖而出。它不仅仅是一个 SSO 服务器更是一个功能完整的用户管理后台提供了组织、用户、角色、权限、应用管理等一系列功能并且自带了一个现代化的管理面板。对于中小型团队或快速发展的创业公司而言这意味着你无需从零开始构建复杂的身份体系可以直接将精力聚焦在核心业务逻辑上。Casdoor 的核心价值在于“标准化”和“中心化”。它基于 OAuth 2.0、OIDC、SAML、CAS 等业界标准协议这意味着几乎任何现代应用都可以轻松接入。无论是你自研的 React/Vue 前端还是像 Jenkins、GitLab、WordPress 这样的第三方软件都能找到对应的集成方式。通过将身份认证逻辑从业务应用中剥离出来交由 Casdoor 统一处理你的系统架构会变得更加清晰安全性也更容易得到保障——所有的密码哈希、Token 签发、权限校验都在一个经过专门设计和加固的服务中进行。2. 核心架构与设计理念拆解2.1 基于标准协议的可插拔架构Casdoor 的设计哲学深深植根于对现有身份认证标准的尊重与整合。它不是一个另起炉灶的封闭系统而是一个以 OAuth 2.0 和 OpenID Connect 为核心同时兼容 SAML 2.0、CAS 等传统协议的门户。这种设计带来的最大好处是“生态友好”。你的前端应用可以使用任何支持 OAuth 2.0 的客户端库如auth0-js、next-auth来对接你的后端服务可以通过验证标准的 JWT 令牌来识别用户身份甚至那些只支持 LDAP 或 SAML 的老旧企业系统Casdoor 也能充当一个协议转换的桥梁。在架构上Casdoor 采用了典型的分层设计。最底层是数据存储层默认使用 SQLite 以便快速启动但生产环境强烈推荐切换到 MySQL、PostgreSQL 或 SQL Server。存储的数据模型围绕几个核心实体构建Organization组织、User用户、Application应用、Role角色、Permission权限以及记录各种令牌和日志的表。中间是业务逻辑层处理用户认证、令牌管理、策略执行等。最上层是 API 层和 Web 管理界面提供 RESTful API 供外部集成同时为管理员提供图形化的配置管理能力。一个关键的设计亮点是它的“多租户”支持。通过Organization这个概念你可以在一套 Casdoor 实例中为不同的团队、客户或业务线创建完全隔离的身份命名空间。例如公司内部的员工使用一个组织而面向外部开发者的 API 门户使用另一个组织两者的用户、应用、权限完全独立互不可见。这对于提供 SaaS 服务或管理复杂企业结构来说非常有用。2.2 身份、应用与权限的模型关系理解 Casdoor必须厘清其核心模型之间的关系这是进行一切配置和开发的基础。整个体系可以看作一个以“组织”为根的三元关系网组织下面有用户和应用用户通过角色关联到权限而权限最终授权给某个应用下的资源。用户模型除了基础的账号、密码加盐哈希存储、邮箱、手机号外还支持丰富的元数据头像、地址、毕业院校等并且可以关联多个第三方身份提供商如 GitHub、Google、微信的账户实现社交登录。用户的归属组织决定了其可见性和管理范围。应用模型代表一个需要接入 Casdoor 进行认证的软件实体。创建应用时你需要配置的关键信息包括回调地址、授权模式、Token 有效期等。Casdoor 会为每个应用生成唯一的Client ID和Client Secret这是 OAuth 2.0 流程中的凭证。应用也可以配置是否强制进行 MFA、指定密码强度策略等安全规则。权限模型是 Casdoor 进行访问控制的核心。权限不是直接赋予用户的而是通过“角色”这个中间层。一个权限定义了“谁”用户或角色可以对“哪个资源”通过 URL 或资源标识符定义执行“什么操作”读、写、管理等。这种基于角色的访问控制模型非常灵活你可以创建如“管理员”、“普通用户”、“访客”等角色并将一组权限批量赋予角色再将角色赋予用户。当用户访问应用时Casdoor 会校验其令牌中所含的角色和权限信息。注意在初始规划时建议先设计好角色和权限矩阵再创建用户和配置应用。权限设计应遵循最小权限原则避免创建拥有过多宽泛权限的“超级角色”。3. 从零开始部署与基础配置实战3.1 多种部署方式详解与选型Casdoor 提供了极其灵活的部署选项你可以根据团队的技术栈和运维习惯来选择。对于想快速体验的开发者和测试环境Docker 部署是最佳选择。官方提供了casbin/casdoor的 Docker 镜像一条命令即可启动docker run -p 8000:8000 -p 7001:7001 casbin/casdoor这条命令会将 Casdoor 的 Web 前端默认端口 8000和后端 API默认端口 7001同时运行起来。首次访问http://localhost:8000使用默认管理员账号admin和密码123即可登录管理后台。但生产环境绝不能使用这种简单方式需要挂载配置文件和数据卷。对于生产环境我强烈推荐使用Docker Compose或Kubernetes进行编排。Docker Compose 的docker-compose.yml文件可以清晰地定义服务、数据库依赖和持久化存储。一个典型的配置会包含 Casdoor 服务和一个 MySQL 数据库服务并将 Casdoor 的conf/app.conf配置文件和数据库数据目录挂载到宿主机确保容器重建时配置和数据不丢失。同时务必通过环境变量或配置文件修改默认的强密码和 JWT 签名密钥。如果你所在的环境对 Docker 有严格限制或者希望进行深度定制二进制部署也是一个可靠的选择。从 GitHub Releases 页面下载对应操作系统架构的预编译二进制文件然后自行准备配置文件、前端静态资源和数据库。这种方式需要手动处理进程守护、日志轮转等运维工作可以使用 systemd 或 supervisor 来管理。实操心得无论选择哪种部署方式第一步永远是修改默认密码和密钥在conf/app.conf中找到defaultPassword和jwtSecret等配置项立即替换为高强度随机字符串。我曾见过有测试服务器因为没改密码而被意外暴露在公网导致安全风险。3.2 初始化配置与核心参数解析成功部署并首次登录后第一件事就是进行初始化配置。管理后台的“系统设置”页面是核心。这里有几个关键配置项需要你仔细斟酌站点 URL填写 Casdoor 服务对外访问的完整基础 URL例如https://sso.yourcompany.com。这个值会用于生成回调地址和各类链接如果填错会导致 OAuth 回调失败。数据库配置如果你在生产环境使用 MySQL/PostgreSQL需要在这里配置数据库连接字符串。格式通常为用户名:密码tcp(数据库主机:端口)/数据库名?charsetutf8mb4parseTimeTruelocLocal。务必确保数据库的字符集是utf8mb4以支持完整的 Unicode如 Emoji。存储配置用户上传的头像等文件需要存储。默认使用本地文件系统但对于多实例部署或云环境建议配置为云存储如 AWS S3、阿里云 OSS 或 MinIO。配置正确的存储后端可以保证文件的高可用和可扩展性。邮件/SMS 配置用于发送验证码、重置密码等通知。你需要配置 SMTP 服务器或 SMS 服务商的 API 密钥。即使初期不用也建议先配置一个测试用的邮件服务方便调试。接下来是创建你的第一个“组织”。点击左侧“组织管理”创建一个新组织比如叫“内部平台”。组织标识符会成为 URL 的一部分建议使用英文短横线命名如internal-platform。创建后系统会自动在该组织下生成一个默认的“应用”名为app-built-in。这个内置应用就是 Casdoor 自身管理后台的认证入口你可以基于它来配置管理员的 MFA 等安全策略。然后进入“应用管理”为你真正的业务应用创建一个新应用。假设你有一个内部知识库系统可以创建一个名为“内部知识库”的应用。在应用配置中“回调 URL”是最重要的字段之一它必须完全匹配你的知识库系统在 OAuth 流程中声明的重定向 URI通常格式为https://your-wiki.com/api/callback。任何不匹配都会导致认证失败。4. 核心功能实现与深度集成指南4.1 标准 OAuth 2.0 / OIDC 集成流程对于绝大多数现代 Web 应用通过 OAuth 2.0 授权码模式集成 Casdoor 是最常见和推荐的方式。这个过程可以清晰地分为前端和后端两部分。前端集成在你的 React、Vue 或 Angular 应用中你需要使用一个 OAuth 客户端库。以 React 为例可以使用react-oauth2-code-pkce这样的库。核心步骤是初始化时配置你的 Casdoor 应用信息包括authorizationEndpoint通常是https://your-casdoor.com/login/oauth/authorize、tokenEndpoint、clientId、redirectUri和需要的scope。当用户点击登录按钮时前端库会将用户重定向到 Casdoor 的登录页面。用户成功登录并授权后Casdoor 会将一个授权码通过回调 URL 传回你的前端应用。后端集成前端拿到授权码后不能直接使用因为授权码可能被窃取。前端应将该授权码发送到你自己的后端服务器。你的后端服务器如一个 Node.js/Go/Python API然后拿着这个授权码、你的clientId、clientSecret和回调地址向 Casdoor 的令牌端点发起一个后端到后端的 HTTPS 请求换取access_token和id_token。access_token用于访问受保护的 API 资源而id_token是一个 JWT包含了用户的身份信息如用户 ID、邮箱、角色等。你的后端必须验证这个 JWT 的签名使用 Casdoor 提供的公钥通常从/.well-known/jwks.json端点获取和有效期然后从中提取用户信息建立自己的会话或签发自己的应用令牌。# 一个简化的 Python Flask 后端处理回调的示例 import requests from flask import request, jsonify import jwt from jwt.algorithms import RSAAlgorithm def callback(): auth_code request.args.get(code) # 1. 用授权码换取令牌 token_url https://your-casdoor.com/api/login/oauth/access_token data { grant_type: authorization_code, code: auth_code, client_id: YOUR_CLIENT_ID, client_secret: YOUR_CLIENT_SECRET, redirect_uri: YOUR_REDIRECT_URI } token_resp requests.post(token_url, datadata).json() id_token token_resp[id_token] # 2. 获取 Casdoor 公钥并验证 JWT jwks_url https://your-casdoor.com/.well-known/jwks.json jwks requests.get(jwks_url).json() public_key RSAAlgorithm.from_jwk(jwks[keys][0]) # 简化处理实际需匹配 kid payload jwt.decode(id_token, public_key, algorithms[RS256], audienceYOUR_CLIENT_ID) # 3. 根据 payload 中的用户信息创建本地会话或用户 user_id payload[sub] email payload.get(email) # ... 你的业务逻辑 return jsonify({msg: 登录成功, user: payload})4.2 第三方登录与多因素认证配置除了标准的账号密码Casdoor 可以轻松集成数十种第三方身份提供商极大提升用户体验。配置都在“认证源”管理页面中。以集成 GitHub OAuth 为例你需要在 GitHub 的开发者设置中创建一个 OAuth App获取Client ID和Client Secret。然后在 Casdoor 中添加一个类型为“GitHub”的认证源填入这些信息以及回调地址格式为https://your-casdoor.com/callback。保存后在“应用管理”中编辑你的应用在“登录配置”里勾选上这个 GitHub 认证源。这样用户在你的应用登录页上就能看到“使用 GitHub 登录”的按钮了。多因素认证是提升安全性的重要手段。Casdoor 内置支持基于 TOTP 的验证器应用如 Google Authenticator、Authy和邮件/短信验证码。在“应用管理”中找到“MFA 配置”部分你可以选择强制所有用户启用或仅对某些角色启用。启用后用户在首次密码登录后会被引导至 MFA 设置页面。我建议在生产环境中至少对管理员角色强制启用 MFA。配置时注意提供一个清晰的引导文档告诉用户如何安装和绑定验证器应用。4.3 细粒度权限管理与资源保护Casdoor 的权限系统非常强大但需要精心设计。权限管理的核心流程是定义资源 - 创建权限 - 绑定角色 - 分配用户。首先在“权限管理”中你需要定义“资源”。资源可以是 REST API 的端点模式如/api/v1/users/*、一个前端路由路径或者一个抽象的操作标识符如read:report。然后基于资源创建具体的“权限”指定允许的操作如GET、POST、*通配符。接着在“角色管理”中创建角色并将上一步创建的权限关联到角色。例如创建一个“项目管理员”角色关联“管理项目成员”、“编辑项目信息”等权限。最后在“用户管理”中将角色赋予相应用户。一个用户可以拥有多个角色其最终权限是这些角色权限的并集。权限的校验可以发生在两个地方一是在 Casdoor 侧通过配置应用的“权限规则”Casdoor 可以在颁发令牌时将用户的权限列表以声明的方式如permissions: [read:report, write:document]编码到 JWT 的permissions字段中。你的业务后端在验证 JWT 后可以解析此字段并根据自己的逻辑进行判断。另一种更强大的方式是与CasbinCasdoor 的兄弟项目一个强大的访问控制库集成。你可以在 Casdoor 中配置 Casbin 的适配器将用户-角色-权限关系同步到 Casbin 的策略模型中然后在你的每个微服务中嵌入 Casbin实现分布式的、高性能的权限决策。5. 生产环境运维与深度调优5.1 高可用与性能优化策略单点部署的 Casdoor 无法满足生产环境的可用性要求。高可用部署的核心思路是无状态应用层 共享数据库与存储。你可以部署多个 Casdoor 实例放在负载均衡器如 Nginx、HAProxy 或云负载均衡器后面。由于 Casdoor 本身不存储会话状态依赖数据库和 Token所有实例都是对等的。关键点在于共享数据库所有实例必须连接同一个 MySQL/PostgreSQL 集群。共享存储如果使用本地存储需要使用共享文件系统如 NFS或切换为云对象存储确保所有实例能访问相同的用户头像等文件。共享缓存为了提高性能Casdoor 会使用内存缓存。在多实例下需要配置一个集中式的缓存如 Redis。在app.conf中配置redisEndpoint即可启用 Redis 作为缓存后端保证各实例缓存数据的一致性。JWT 密钥一致性所有实例必须使用完全相同的jwtSecret否则一个实例签发的 Token 无法被另一个实例验证。性能调优方面数据库查询是瓶颈。确保为user、token等核心表建立了合适的索引例如在user表的organization、name字段上建立联合索引。定期清理过期的令牌和日志表token、record中的旧数据可以编写定时任务或使用数据库的事件调度器来完成。对于用户量非常大的场景可以考虑对用户表进行分库分表但这需要更深入的定制。5.2 监控、日志与安全审计没有监控的系统就像在黑暗中开车。Casdoor 提供了 Prometheus 格式的 metrics 端点 (/metrics)你可以将其接入到你的 Prometheus Grafana 监控栈中。关键指标包括HTTP 请求速率和延迟、数据库连接池状态、各类缓存命中率、当前活跃用户数等。设置告警规则例如当登录失败率在5分钟内飙升或数据库连接数接近上限时及时通知运维人员。日志是排查问题的生命线。Casdoor 的日志配置在app.conf的logConfig部分。建议将日志级别设置为Info或Warn并将日志输出到文件同时配置日志轮转避免磁盘被撑满。更佳实践是使用Fluentd或Filebeat等工具将日志实时收集到 Elasticsearch 中便于集中检索和分析。在日志中你会看到详细的用户登录、令牌颁发、权限校验记录这对于安全审计至关重要。安全审计方面除了利用日志Casdoor 管理后台的“记录”页面提供了图形化的审计日志。所有关键操作如用户创建、密码修改、权限变更、管理员登录等都会被记录在这里并包含操作者 IP、时间和详情。你应该定期审查这些记录并确保只有受信任的管理员有权限访问审计日志本身。此外开启 HTTPS 是强制要求并使用 HSTS 头来强制浏览器使用安全连接。6. 常见问题排查与实战经验录在实际部署和集成 Casdoor 的过程中你一定会遇到各种“坑”。下面是我总结的一些最常见问题及其解决方案希望能帮你少走弯路。问题一OAuth 回调失败错误提示“redirect_uri_mismatch”。这是最高频的问题。99% 的原因是你的应用配置中的“回调 URL”与前端实际发起请求时携带的redirect_uri参数不完全匹配。Casdoor 会进行严格的字符串比对。排查步骤检查 Casdoor 应用管理页面中配置的“回调 URL”列表。确保你使用的回调地址包括协议 http/https、域名、端口、路径完全一致地存在于这个列表中。检查前端代码初始化 OAuth 客户端时传入的redirectUri参数必须与上一步配置的地址一字不差。注意本地开发环境 (http://localhost:3000/callback) 和生产环境 (https://app.com/callback) 的地址是不同的通常需要在 Casdoor 中配置多个回调 URL。问题二用户登录成功但后端验证 JWT 令牌失败提示“签名无效”。这通常意味着验证令牌时使用的公钥与签发令牌时使用的私钥不匹配。排查步骤确认你的 Casdoor 是多实例部署且所有实例的jwtSecret配置项完全一致。不一致会导致签发和验证使用不同的密钥。确认你的后端服务是从正确的/.well-known/jwks.json端点获取的公钥。确保这个端点地址配置正确并且网络可达。检查 JWT 令牌是否已过期。验证时除了检查签名还必须检查exp(过期时间) 和nbf(生效时间) 声明。问题三权限配置了但用户访问应用时依然没有权限。这是一个涉及配置链条的问题。排查步骤检查权限绑定在 Casdoor 管理后台进入相应用户的详情页查看“权限”标签页确认期望的权限是否已经出现在该用户的“所有权限”列表中。如果没有说明权限没有通过角色成功关联到用户。检查令牌内容在应用的登录回调中让后端打印出解码后的 JWT Payload查看permissions字段是否包含了预期的权限字符串。如果令牌里没有可能是应用配置中“返回权限”的选项未开启或者用户权限在令牌签发后才被修改需要重新登录获取新令牌。检查应用侧校验逻辑确认你的业务后端是否正确解析了 JWT 中的permissions字段并且校验逻辑无误。一个常见的错误是校验时进行了大小写敏感或空格敏感的字符串比较。问题四集成第三方登录如GitHub时点击按钮没反应或报错。排查步骤首先检查 Casdoor 的“认证源”配置是否正确特别是Client ID、Client Secret和回调地址。第三方平台如GitHub要求的回调地址通常是 Casdoor 的地址格式为https://your-casdoor-domain.com/callback而不是你自己业务的地址。在浏览器的开发者工具“网络”标签页中查看点击按钮后发出的请求。观察请求是否被发出以及响应状态码和内容。常见的错误是跨域问题确保 Casdoor 的地址配置了正确的 CORS 头或者你的前端和 Casdoor 在同一域名下。查看 Casdoor 后端日志通常会有更详细的错误信息例如来自第三方 API 的错误响应。问题五管理后台访问缓慢或执行操作时卡顿。排查方向数据库性能检查数据库服务器的 CPU、内存和磁盘 IO。对token、record操作记录这类增长很快的表如果没有定期清理或缺少索引会导致查询变慢。为经常查询的字段如user_id,created_time添加索引。缓存未命中如果配置了 Redis 但未生效Casdoor 会退回到内存缓存在多实例下会导致缓存不一致和性能下降。检查app.conf中 Redis 配置是否正确以及 Redis 服务是否可连通。前端资源加载如果管理后台页面本身加载慢可能是静态资源JS、CSS过大或网络问题。考虑为 Casdoor 前端配置 CDN或者使用更高效的 Web 服务器如 Nginx来提供静态文件。最后分享一个我个人的深刻体会身份认证和权限管理是系统安全的基石也是最容易在项目后期变成“技术债”的部分。与其在业务代码中到处散落着登录判断和权限校验的if-else不如在项目早期就引入像 Casdoor 这样的标准化方案。它可能带来一些初期的学习成本和集成工作量但从长远看它带来的安全性提升、开发效率提高和运维复杂度降低是完全值得的。尤其是在微服务架构下一个统一的、标准的身份入口是服务间清晰解耦和高效协作的前提。开始可能会觉得配置繁琐但一旦跑通你会发现自己再也不想回去写那些重复的认证代码了。

相关文章:

Casdoor开源统一身份认证平台:基于OAuth 2.0与OIDC的SSO实战指南

1. 项目概述:一个开源的统一身份认证与单点登录平台如果你正在为多个内部系统各自独立的登录入口而头疼,或者厌倦了为每个新应用重复开发用户注册、登录、权限管理这些“轮子”,那么 Casdoor 这个项目绝对值得你花时间深入了解。简单来说&…...

Harness Engineering 讲解

Harness 工程过去很长一段时间里,大家一提到“大模型怎么用好”,第一反应往往是:Prompt 怎么写? 于是,Prompt Engineering 成了很多人学习大模型的第一站。我们学习如何提问,如何给角色,如何写任…...

自建个人数字图书馆:基于Go+Vue+SQLite的Alexandria部署与优化指南

1. 项目概述:一个现代数字图书馆的诞生如果你和我一样,是个重度数字内容爱好者,硬盘里塞满了从各种渠道收集的电子书、论文、技术文档、漫画,甚至是整理好的网页存档,那你一定体会过那种“找东西”的痛苦。文件散落在不…...

C++ 如何在VS中“强制”链接?

如何在VS中“强制”链接? 打开你的game_mobile项目,按下图设置。 方法一:强制链接(最直接) 这是彻底忽略LNK1169及其引发的所有LNK2005错误,强制生成可执行文件的方法。 打开项目的“属性页”。导航到“配置…...

Figma中文汉化终极指南:3分钟实现高效专业设计界面

Figma中文汉化终极指南:3分钟实现高效专业设计界面 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗?作为中文设计师,你…...

Hello Robot 发布 Stretch 4 移动操作机器人,推动具身智能迈向家庭实用化

近日,机器人公司 Hello Robot 正式推出了其新一代产品——Stretch 4 移动操作机器人。作为 Stretch 3 的全面升级迭代,全新的 Hello Robot 具身智能平台​ 在移动灵活性、环境感知、运行性能与续航能力上实现了显著突破,并将设计重心明确转向…...

Vue3企业级后台管理系统实战:如何用ant-design-vue3-admin高效构建现代化管理平台

Vue3企业级后台管理系统实战:如何用ant-design-vue3-admin高效构建现代化管理平台 【免费下载链接】ant-design-vue3-admin 一个基于 Vite2 Vue3 Typescript tsx Ant Design Vue 的后台管理系统模板,支持响应式布局,在 PC、平板和手机上均…...

LabelImg标注的YOLO格式txt坐标转换保姆级教程(附Python代码)

LabelImg标注的YOLO格式坐标转换实战指南:从原理到Python实现 在计算机视觉项目中,数据标注是模型训练前的关键步骤。LabelImg作为一款开源的图像标注工具,支持生成YOLO格式的标注文件。然而,许多开发者在实际应用中发现&#xff…...

用操作系统类比彻底搞懂 AI Agent:进程、系统调用与上下文窗口

用操作系统类比彻底搞懂 AI Agent:进程、系统调用与上下文窗口 引言 很多人第一次接触 AI Agent,会立刻被一堆新词包围:Tool Use、Function Calling、RAG、Memory、Orchestrator、Multi-Agent、Context Compression。 这些词看起来很新&#…...

科技与科学新闻摘要-2026年5月16日

科技与科学新闻摘要 日期: 2026年5月16日 科技领域重点新闻 1. 中国2025年度十大科学进展揭晓 核心要点: 中国科学技术部发布了2025年度十大科学进展,覆盖深空探测、人工智能、生命科学、能源技术等多个领域,集中展示了中国基础研究和应用研究的突破性…...

每日大赛间歇期通过Taotoken模型广场探索新模型特性

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 每日大赛间歇期通过Taotoken模型广场探索新模型特性 对于每日参与各类AI应用开发或创意大赛的选手而言,比赛间歇期并非…...

当机器人遇见城市:江南北如何重塑武汉的智能生活图景

城市,是人类文明的结晶,也是科技创新的试验场。在武汉这座英雄的城市,一场由江南北(武汉)信息技术有限公司(简称“江南北机器人”)引领的智能革命,正悄然改变着市民的日常生活与城市…...

5步搭建Sunshine游戏串流服务器:打造你的私人云游戏平台

5步搭建Sunshine游戏串流服务器:打造你的私人云游戏平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款功能强大的自托管游戏串流服务器,专…...

GitHub系统提示词库:提升大模型交互效率的工程实践指南

1. 项目概述:一个系统提示词的宝库如果你深度使用过ChatGPT、Claude或者DeepSeek这类大语言模型,那你一定对“系统提示词”这个概念不陌生。简单来说,它就是你发给模型的“第一条指令”,用来设定它的身份、行为准则和对话风格。比…...

82、【Agent】【OpenCode】bash 工具提示词(amend 风险)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除 背景 上篇 blog 【Agent】【OpenCode】bash 工…...

免费开源工业通信调试工具:ModbusTool终极指南,5分钟快速上手

免费开源工业通信调试工具:ModbusTool终极指南,5分钟快速上手 【免费下载链接】ModbusTool A modbus master and slave test tool with import and export functionality, supports TCP, UDP and RTU. 项目地址: https://gitcode.com/gh_mirrors/mo/Mo…...

LibreOffice Online 终极指南:如何在浏览器中实现免费办公协作

LibreOffice Online 终极指南:如何在浏览器中实现免费办公协作 【免费下载链接】online Read-only Mirror - no pull request (use https://gerrit.libreoffice.org instead) 项目地址: https://gitcode.com/gh_mirrors/onl/online 还在为昂贵的在线办公软件…...

如何快速掌握Winhance中文版:Windows优化终极指南

如何快速掌握Winhance中文版:Windows优化终极指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_CN …...

Virtual ZPL Printer:5步搭建专业级条码标签开发测试环境

Virtual ZPL Printer:5步搭建专业级条码标签开发测试环境 【免费下载链接】Virtual-ZPL-Printer An ethernet based virtual Zebra Label Printer that can be used to test applications that produce bar code labels. 项目地址: https://gitcode.com/gh_mirror…...

Heightmapper完全指南:5步将全球地形数据变成3D模型

Heightmapper完全指南:5步将全球地形数据变成3D模型 【免费下载链接】heightmapper interactive heightmaps from terrain data 项目地址: https://gitcode.com/gh_mirrors/he/heightmapper 还在为3D地形建模发愁吗?Heightmapper让你的地形创作效…...

终极解决方案:让苹果触控板在Windows上获得原生级精准触控体验

终极解决方案:让苹果触控板在Windows上获得原生级精准触控体验 【免费下载链接】mac-precision-touchpad Windows Precision Touchpad Driver Implementation for Apple MacBook / Magic Trackpad 项目地址: https://gitcode.com/gh_mirrors/ma/mac-precision-tou…...

别再手动记版本了!Xilinx FPGA两种自动记录编译时间的方法实测对比(附Tcl脚本)

Xilinx FPGA版本管理实战:Tcl脚本与USR_ACCESS原语深度评测 每次编译FPGA设计时手动记录版本号的时代该结束了。在快速迭代的硬件开发中,精确追踪每个比特流文件的生成时间对调试和版本控制至关重要。本文将深入对比两种自动化方案——Tcl脚本与USR_ACCE…...

异步复位同步释放:数字电路设计的核心技巧与工程实践

1. 项目概述:一个看似简单却暗藏玄机的设计技巧在数字电路设计,尤其是FPGA和ASIC开发中,复位信号的处理是确保系统从确定状态启动和稳定运行的第一道,也是最重要的一道防线。我们经常听到“异步复位,同步释放”这个设计…...

2026 免费GEO监测:AI搜索优化实用工具推荐

2026年AI搜索优化(GEO)已经成为企业数字营销的核心环节。当前GEO工具市场呈现明显的国内外分化格局,国内工具和海外工具在功能支持、适用场景上存在巨大差异。本文选取目前市场上主流的5款GEO工具,从功能完整性、AI模型支持、易用…...

3分钟完成B站缓存视频转换:m4s-converter完整使用指南

3分钟完成B站缓存视频转换:m4s-converter完整使用指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站视频下架后&…...

Linux服务器安全基线自动化实践:基于Ansible的加固方案

1. 项目概述与核心价值“安全加固”这个词,对于任何一个负责线上系统运维、应用部署或者个人服务器管理的朋友来说,都绝不陌生。它就像给自家房子装防盗门、安监控一样,是基础且必要的工作。然而,现实情况往往是:我们面…...

税调企业与所在区县税务局的距离

税调企业与所在区县税务局的距离2007-2020数据包含:2007~2020年税调企业与所在区县税务局的距离_km.dta数据包含如下变量:sdid、与税务局的大圆距离_km、税务局经度、经度、纬度、省、省代码、市、市代码、县、县代码、税务局纬度、组织机构代…...

【ElevenLabs语音伦理合规白皮书】:面向银发群体的AI语音生成必须绕开的4类GDPR/《互联网信息服务深度合成管理规定》雷区

更多请点击: https://intelliparadigm.com 第一章:银发群体AI语音服务的伦理合规必要性 随着智能语音助手在居家养老、远程问诊、紧急呼叫等场景中的深度部署,面向60岁以上用户的AI语音服务已从“可选功能”演变为“关键基础设施”。然而&am…...

RK3568平台开发系列讲解(热拔插篇)内核是如何发送事件到用户空间

🚀返回专栏总目录 文章目录 一、相关接口函数 二、udevadm 命令 三、实验程序 四、运行效果 沉淀、分享、成长,让自己和他人都能有所收获!😄 一、相关接口函数 kobject_uevent 是 Linux 内核中的一个函数, 用于生成和发送 uevent 事件。 它是 udev 和其他设备管理工具与…...

实验室小白避坑指南:在浪潮AiStation上从零部署PyTorch项目(含离线环境打包)

实验室科研实战:浪潮AiStation离线部署PyTorch全流程解析 当实验室服务器遭遇网络隔离与资源限制时,如何高效部署深度学习项目成为每个科研新手的必修课。本文将针对浪潮AiStation平台的特殊性,系统梳理从环境准备到代码运行的完整闭环&#…...