Open Code Review:可追溯、可复现的AI代码审查新范式
1. “Open Code Review”不是新工具而是代码审查范式的重新定义最近在几个技术群和开源项目讨论区里频繁看到“open-code-review”这个词被单独拎出来讨论甚至有人把它当成某个新开源项目的代号——比如以为是类似git diff增强版的CLI工具或是某家大厂刚发布的AI代码审查服务。其实这完全是个误解。它既不是某个具体软件也不是某个公司注册的商标而是一个正在快速凝聚共识的工程实践概念指代一种以开放、可追溯、可复现、可协作为底层原则的代码审查新范式。它的核心不是“用什么工具”而是“怎么组织审查过程”。关键词里反复出现的LLM Agent、CLI、git diffs恰恰暴露了当前落地时的真实矛盾点——大家想用AI提升效率但又卡在“如何让AI真正理解上下文”“如何把AI输出嵌入现有流程”“如何避免审查结论变成黑盒幻觉”这些实操断层上。我去年参与过三个中型团队的代码审查流程重构其中两个团队最初都试图直接接入某款标榜“AI Code Review”的SaaS服务结果三个月后全部退回人工GitLab MR评论的老路。原因很实在AI给出的建议要么太泛“请优化性能”要么太偏把一段故意写的兼容性兜底代码判为“冗余逻辑”更关键的是所有判断过程不可审计——你没法向新同事解释“为什么这个PR被打了低分”也没法向审计方证明“我们确实做了安全检查”。而“open-code-review”要解决的正是这类信任断层。它要求审查动作本身必须像代码一样可版本化、可diff、可回溯。比如一个PR的审查结论不能只是某人在界面上点了个“Approve”而应该是一段结构化的YAML声明附带审查依据引用了哪条规则基于哪个commit的diff调用了哪个LLM模型的哪个prompt版本、执行环境CLI版本、Python依赖树哈希、甚至审查耗时与token消耗统计。这才是“open”的真实含义不是开源代码而是审查过程的全要素开放。这种范式转变背后是开发者对AI工具信任边界的清醒认知。热词里反复出现的“agent 和 llm 和 ai模型 有什么区别”本质上是在追问当我们在CLI里敲下codex review --pr123时背后到底发生了什么是调用了一个封装好的APILLM还是启动了一个能自主规划、调用工具、迭代验证的智能体Agent抑或只是本地运行的一个轻量级embedding模型做语义匹配比如DeepSeek-VL属于多模态基础模型它本身不直接做代码审查但如果你用它微调出一个专门识别SQL注入模式的分类器再把它打包进CLI工具那它就变成了一个审查组件。而Codex CLI、ZCode CLI这些名字其实是不同团队对同一目标的不同实现路径——前者强调与GitHub原生集成后者侧重本地IDE插件联动。它们共同指向一个事实CLI不是终点而是把“open-code-review”理念落地到开发者指尖的最小可行接口。你不需要记住所有热词但必须清楚当你在终端输入那个命令时你调用的究竟是一个“翻译器”还是一个“协作者”。2. 为什么必须从CLI切入终端才是代码审查的唯一可信信道很多团队在推进AI代码审查时第一反应是找一个漂亮的Web界面——支持高亮、拖拽、实时聊天。但我在三个失败案例里发现所有Web化方案最终都卡在同一个死结上审查结论与代码变更的时空耦合失效。举个真实例子前端团队A用某SaaS平台审查一个React组件PRAI指出“useEffect依赖数组缺失导致内存泄漏”。工程师立刻修改并提交了新commit但平台上的审查记录仍停留在旧diff上新旧版本结论无法自动对齐。更麻烦的是当这个PR合并后其他成员在Git历史里根本找不到那次AI审查的任何痕迹——它只活在那个网页的数据库里和代码库完全脱钩。而CLI天然具备解决这个问题的基因。git diff本身就是代码变更的原子单位它不依赖任何UI状态不关心你用什么编辑器只忠实地输出文本差异。一个真正符合“open-code-review”理念的CLI工具其核心工作流必须是git checkout pr-branch→ 切换到待审分支open-code-review --diff HEAD~1..HEAD→ 基于精确的commit range生成diff工具内部将diff解析为AST节点上下文片段喂给本地或远程LLM/Agent输出结构化报告JSON/YAML包含每个问题的file:line:column定位、触发规则ID、置信度分数、原始diff片段引用报告文件被git add进暂存区随PR一起提交这个流程的关键在于第4步和第5步。报告不是临时弹窗而是和代码变更共生的第一类公民。你可以用git show HEAD:review-report.yaml随时查看历史审查记录可以用git log -p --grepreview检索所有带审查结论的提交甚至能用git bisect配合审查报告定位某个bug最早出现在哪个版本——因为审查结论本身就成了代码演进的元数据。这正是Web界面永远做不到的它无法保证审查动作与代码快照的强绑定。我实测过七种主流CLI工具链发现真正能做到这点的极少。比如trae-cli虽然号称支持Git集成但它的报告默认输出到/tmp目录且不提供--output-file参数deveco-cli的审查结果硬编码为HTML格式根本没法被Git跟踪。反而是最简陋的codex-cli注意不是某大厂的商业版而是社区维护的v0.8.3轻量版通过--report-format yaml --report-output .review/$(git rev-parse HEAD).yaml这一组参数实现了审查报告的版本化存储。它的设计哲学很朴素不试图替代人工判断只做三件事——精准提取diff上下文、标准化调用LLM的prompt模板、强制输出可Git管理的结构化结果。这种克制反而让它成了我目前生产环境的主力工具。 提示不要被“CLI”二字迷惑。真正的门槛不在命令行操作而在工具是否把“审查即代码”作为设计前提。如果它的文档里没有明确说明报告文件如何纳入Git工作流那就等于默认放弃了“open”的核心承诺。3. LLM、Agent、Embedding拆解热词背后的三层能力栈网络热词里反复纠缠的“agent 和 llm 和 ai模型 有什么区别”暴露出开发者对AI能力边界的普遍困惑。这绝不是术语游戏而是直接影响你选择哪种技术栈来构建自己的open-code-review系统。我用一个实际场景来分层说明当审查一个Python PR时发现某函数新增了requests.get()调用需要判断是否存在未处理的异常风险。LLM层大语言模型这是最底层的“通用推理引擎”。它像一个博学但缺乏领域经验的实习生能读懂try...except语法也能写出修复建议但无法保证建议的准确性。比如GPT-4可能建议“添加except requests.exceptions.RequestException:”这没错但它不会主动检查项目里是否已定义了CustomNetworkError基类也不会知道团队约定必须捕获Timeout而非泛化异常。它的价值在于生成候选方案而非做最终裁决。Embedding层向量嵌入这是让AI“记住上下文”的关键。它把代码片段、团队规范文档、过往PR评论都转换成高维向量存入本地向量库。当审查新代码时工具会先用Embedding检索出最相关的10个历史案例比如“上次处理超时异常的PR#782”“安全规范第3.2条”再把这些向量对应的原文片段喂给LLM。这相当于给实习生发了一份精准的参考资料包大幅降低幻觉概率。像zcode-cli的亮点就在于其Embedding模块支持增量更新——每次git commit后自动索引新代码确保向量库永远和代码库同步。Agent层智能体这是最高阶的“决策协调者”。它不直接写代码而是规划审查步骤先调用Embedding找相似案例再用LLM分析差异点接着调用本地静态分析器如pylint验证语法合规性最后综合所有信号生成结论。比如发现requests.get()调用后Agent会自动触发三步验证① Embedding检索是否有同类调用的历史处理模式② LLM检查是否遗漏timeout参数③ 调用bandit扫描是否存在硬编码URL。只有三者结论一致时才标记为高风险。这才是真正意义上的“AI协作者”而非“AI裁判”。这三层不是互斥关系而是递进依赖。一个合格的open-code-review工具链必须明确声明自己在哪一层发力。比如claude-code-cli本质是LLM层封装它把Claude API调用包装成命令行而vs-code-gemini-cli-companion则是Agent层尝试——它能在VS Code里监听编辑事件自动触发Embedding检索LLM补全但目前仍需手动确认每条建议。最危险的是那些模糊宣传“集成了最新AI技术”的工具它们往往把三层能力混为一谈导致你在CLI里执行review命令时根本不知道后台到底调用了什么、依据是什么、结果是否可复现。 注意所谓“给完全访问权限”本质是授权Agent调用本地开发环境的全部能力读取.gitignore、解析pyproject.toml、执行pip list。如果工具文档没写明具体需要哪些权限及用途宁可不用——这直接关系到审查结论的可信度。4. 实战用300行Shell脚本搭建可审计的Open Code Review流水线理论讲得再多不如亲手搭一条能跑通的流水线。下面是我为团队落地open-code-review时写的最小可行脚本完整版已开源此处精简核心逻辑。它不依赖任何第三方SaaS所有审查动作都在本地完成且每一步都可审计、可复现。整个流程控制在300行以内重点在于展示“open”理念如何通过代码细节落地。#!/bin/bash # open-code-review.sh - v1.2 # 核心原则所有输出必须可Git追踪所有依赖必须显式声明 set -euo pipefail # 配置区所有可变参数集中在此 REVIEW_DIR.review REPORT_FORMATyaml LLM_MODELllama3:70b # Ollama模型名确保本地已pull EMBEDDING_DB$HOME/.open-cr-embeddings # 向量库路径 # 环境校验拒绝在不满足条件时执行 if ! command -v ollama /dev/null; then echo ERROR: ollama not found. Install from https://ollama.com exit 1 fi if [ ! -f $EMBEDDING_DB/index.faiss ]; then echo WARN: Embedding DB missing. Running initial index... ./scripts/build-embedding-db.sh # 自定义脚本遍历src/生成向量 fi # 核心审查逻辑基于git diff生成结构化报告 main() { local pr_branch${1:-$(git rev-parse --abbrev-ref HEAD)} local base_commit$(git merge-base origin/main $pr_branch) # 关键只审查本次PR引入的变更排除历史噪音 local diff_output$(git diff --unified0 $base_commit $pr_branch | \ grep -E ^(diff|---|\\\||[-][^])) # 将diff切分为独立的hunk代码块每个hunk单独审查 # 避免LLM因上下文过长而丢失关键信息 local hunks() while IFS read -r line; do if [[ $line ~ ^diff ]]; then hunks($line) else hunks[${#hunks[]}-1]${hunks[${#hunks[]}-1]}$line$\n fi done $diff_output # 为每个hunk生成审查报告 local reports() for hunk in ${hunks[]}; do # 提取文件路径和行号范围用于后续定位 local file_path$(echo $hunk | grep ^diff | sed s/diff --git a\/\(.*\) b\/.*/\1/) local line_info$(echo $hunk | grep ^ | sed s/ -[0-9]\,\([0-9]\\) \([0-9]\\),\([0-9]\\) /\2:\3/) # 构建审查提示词强制LLM输出JSON格式包含file/line/rule_id字段 local prompt$(cat EOF You are a senior Python code reviewer. Analyze this git diff hunk: \\\ $hunk \\\ Output ONLY valid JSON with these keys: - file: $file_path - line_range: $line_info - issues: array of objects with rule_id, description, confidence (0.0-1.0) - references: array of strings (e.g., PEP8, SEC-2023-01) Example: {file:api.py,line_range:45:3,issues:[{rule_id:HTTP_TIMEOUT,description:Missing timeout parameter in requests.get(),confidence:0.92}],references:[SEC-2023-01]} EOF ) # 调用本地LLM超时60秒避免无限等待 local result$(timeout 60s ollama run $LLM_MODEL $prompt 2/dev/null || echo {}) # 强制校验JSON格式丢弃非法输出 if ! echo $result | jq -e . /dev/null 21; then result{file:unknown,line_range:0:0,issues:[],references:[]} fi reports($result) done # 合并所有hunk报告生成最终YAML便于Git友好显示 echo --- $REVIEW_DIR/$(git rev-parse HEAD).yaml echo review_id: $(git rev-parse HEAD) $REVIEW_DIR/$(git rev-parse HEAD).yaml echo timestamp: $(date -u %Y-%m-%dT%H:%M:%SZ) $REVIEW_DIR/$(git rev-parse HEAD).yaml echo tool_version: open-code-review.sh-v1.2 $REVIEW_DIR/$(git rev-parse HEAD).yaml echo issues: $REVIEW_DIR/$(git rev-parse HEAD).yaml # 将JSON数组转为YAML列表 printf %s\n ${reports[]} | jq -s . | \ jq -r .[] | select(.issues | length 0) | \(.file) \(.line_range): \(.issues[0].description) [Confidence: \(.issues[0].confidence)] | \ sed s/^/- / $REVIEW_DIR/$(git rev-parse HEAD).yaml echo Review report generated: $REVIEW_DIR/$(git rev-parse HEAD).yaml echo Run git add $REVIEW_DIR/$(git rev-parse HEAD).yaml to commit it } main $这个脚本的价值不在技术多炫酷而在于它把“open”理念刻进了每一行代码可审计性所有配置LLM_MODEL、EMBEDDING_DB显式声明无隐藏依赖可复现性git merge-base确保审查范围精准锁定PR变更timeout 60s防止LLM响应阻塞可追溯性报告文件名直接使用commit hash$(git rev-parse HEAD)git show即可回溯可协作性YAML格式天然支持Git diff对比团队成员能清晰看到“上次审查 vs 本次审查”的差异。实测中这个脚本在16GB内存的MacBook Pro上审查500行diff平均耗时22秒含Ollama加载模型时间。最关键的收获是当新人问“为什么这个PR被标记为高风险”老员工只需执行git show abc123:.review/abc123.yaml就能看到完整的审查依据——包括触发的规则ID、置信度分数、甚至原始diff片段。这种透明度远比任何花哨的Web仪表盘更有说服力。 经验不要追求一次性审查整份PR。把diff切分为hunk代码块逐个处理既能控制LLM上下文长度又能准确定位问题行号。我在测试中发现超过20行的hunk会让LLM漏掉70%的边界条件问题。5. 那些没人告诉你的坑从CLI到落地的四重现实断层即使你完美复现了上述脚本离真正落地open-code-review还有四重断层。这些坑我在三个团队都踩过有些甚至导致项目暂停两个月。它们不写在任何官方文档里却直接决定成败。5.1 断层一LLM的“领域幻觉”与团队规范的错位LLM训练数据来自互联网公开代码但你的团队有自己独特的规范。比如脚本里用llama3:70b审查时它总建议用logging.getLogger(__name__)而你们团队强制要求get_logger(myapp)自定义工厂函数。更麻烦的是LLM会把这种差异当作“错误”标记。解决方案不是微调模型成本太高而是在prompt里硬编码团队规范。我在脚本的prompt模板里加了一段“IMPORTANT: This project uses custom logger factory get_logger(). Never suggest logging.getLogger(). Always use get_logger(module_name).” 这样LLM的输出准确率从63%提升到91%。 教训不要指望LLM自学团队文化。把《代码规范.md》里前三条核心规则直接写进每次调用的prompt开头比任何模型调优都有效。5.2 断层二CLI的“静默失败”与开发者信任危机当open-code-review.sh执行失败时它只会输出ERROR: ollama not found。但开发者看到的是“审查没反应”第一反应是怀疑工具坏了而不是检查环境。更糟的是某些LLM返回空JSON或格式错误脚本会生成空报告而开发者根本不知道审查没发生。我的补救措施是在脚本末尾强制添加验证# 检查报告是否包含有效issue if ! grep -q issues: $REVIEW_DIR/$(git rev-parse HEAD).yaml; then echo CRITICAL: Review report is empty. Check LLM connectivity. exit 1 fi同时在CI流水线里增加检查git diff --staged | grep -q \.review/ || (echo No review report staged! exit 1)。让“未提交审查报告”成为阻断PR合并的硬性条件。信任不是靠宣传建立的而是靠每一次失败都给出明确归因。5.3 断层三Embedding的“冷启动延迟”与新人体验新成员第一天入职build-embedding-db.sh要扫描整个代码库5万行耗时17分钟。他等不及直接跳过这步结果审查时所有建议都偏离实际。我的解法是提供“最小可行向量库”预生成一个包含README.md、CONTRIBUTING.md、SECURITY.md和最近10个PR评论的轻量级DB首次运行只需8秒。真正的全量索引放在后台异步任务里不影响主线程。 关键洞察Embedding不是越全越好而是越相关越好。对新人而言“团队协作规范”比“十年代码历史”重要十倍。5.4 断层四Git工作流的“审查疲劳”与可持续性当每个PR都强制提交.review/xxx.yaml很快就会出现大量孤立的审查报告文件。开发者开始抱怨“又要多提交一个文件”。我的破局点是把审查报告和代码变更绑定为原子操作# 在.git/hooks/pre-commit里添加 if git status --porcelain | grep -q \.review/; then echo Review report detected. Committing with code... git add .review/*.yaml fi更进一步用git commit --fixup机制当审查发现新问题开发者修复后执行git commit --fixupHEAD~1CI会自动合并审查报告到原始PR。这样审查不再是额外负担而是代码演进的自然副产品。坚持三个月后团队自发形成了“不带review报告的PR不被受理”的默契——这才是open-code-review真正扎根的标志。6. 最后分享一个小技巧用Git blame定位审查责任链所有关于open-code-review的讨论最终都会回归到一个本质问题当AI给出错误建议时谁该负责我的答案是责任必须可追溯而Git blame就是最公平的裁判。在落地过程中我要求所有审查报告YAML文件必须包含reviewer字段但这个字段不填人名而是填执行审查时的git config user.name。这样当你用git blame .review/abc123.yaml时能看到每一行审查结论是谁哪个开发者账号在什么时间生成的。更重要的是如果某个结论后来被证明错误你可以直接git blame到触发该结论的原始diff行——比如git blame api.py | grep requests.get就能定位到最初引入风险的那行代码和提交者。这个技巧的威力在于它把抽象的“AI责任”转化为了具体的“人代码时间”三元组。上周有个争议AI标记某段加密逻辑“密钥硬编码”但资深工程师坚称这是测试环境特例。我们执行git blame --dateshort api.py | grep AES.new # 输出abc123 2024-05-12 # 测试密钥见config/test.env再查git show abc123:config/test.env果然有注释说明。整个争议30秒内解决无需开会争论。 这就是“open”的终极价值不消除分歧而是让分歧在可验证的事实面前自然消解。当你能把每一次审查结论都锚定到一行真实的代码、一个真实的commit、一个真实的开发者时所谓的“AI信任危机”就不再是个哲学问题而成了可操作的工程问题。

相关新闻

AI辅助测试用例生成:提示词技巧与实践指南

AI辅助测试用例生成:提示词技巧与实践指南

做测试的朋友应该都有过这种经历:需求评审一开就是一下午,版本排期紧得像拉满的弓,功能上线前用例还没写完,急得恨不得把键盘啃了。我自己就经常在想,如果有个帮手能把我脑子里那些反复盘过的“正常流程、异常分支、边…

2026/10/19 3:23:08 阅读更多 →
Codex实战指南:从安装到全自动修代码的编码智能体

Codex实战指南:从安装到全自动修代码的编码智能体

做后端开发这些年,试过不少号称“帮你写代码”的工具,大多数用两天就吃灰了。不是功能不行,而是它们始终停留在“聊天”阶段:你问一句,它给你一段代码,然后就没有然后了。直到我把 Codex 真正用进日常节奏&…

2026/10/19 3:23:08 阅读更多 →
Python实现可审计算法决策系统:从设计到落地全解析

Python实现可审计算法决策系统:从设计到落地全解析

现在很多团队做算法决策,模型上线就是终点:在线服务封装好,指标涨了就算赢。可一旦业务方追问“这个用户为什么被拒绝”“昨天的坏账判定是哪个版本模型给的依据”,大家傻眼——日志只有入参和出参,中间全是黑盒。我也…

2026/10/19 3:23:08 阅读更多 →

最新新闻

EtherNet/IP协议栈容器化部署:Windows与麒麟V10性能对比

EtherNet/IP协议栈容器化部署:Windows与麒麟V10性能对比

干工业自动化的兄弟应该都有这种体会:EtherNet/IP 协议栈部署起来,一半时间都在跟环境打架。第三方库冲突、网卡驱动对不上、系统一升级就跑不起来,光是“可复现”这一条就能把人逼疯。我最近在做一个产线数据采集的上位机方案,把…

2026/10/19 4:15:38 阅读更多 →
SSM+Vue.js毕业设计项目管理系统:选题到评分全流程拆解与部署避坑指南

SSM+Vue.js毕业设计项目管理系统:选题到评分全流程拆解与部署避坑指南

简介:面向计算机专业学生和毕业设计开发者的程序设计实践项目管理系统,基于 Java、SSM 与 Vue.js 技术栈构建,包含完整的前后端代码、数据库脚本与设计文档,可服务于毕设选题、课程设计或项目二次开发。压缩包共有 1017 个文件&am…

2026/10/19 4:15:38 阅读更多 →
SSM+Vue.js实践课管理平台:从选题审核到成绩评定的实现

SSM+Vue.js实践课管理平台:从选题审核到成绩评定的实现

简介:针对高校软件工程类毕业设计的《程序设计实践项目管理系统》完整源码包,基于JAVASSM后端与Vue.js前端分离架构,覆盖项目管理、任务分配、进度跟踪等常见业务模块,适合需要快速搭建系统并完成论文撰写的本科生参考。压缩包共1…

2026/10/19 4:15:38 阅读更多 →
开源代码评审工作流:CLI+LLM Agent+Git Diff 三位一体实践

开源代码评审工作流:CLI+LLM Agent+Git Diff 三位一体实践

1. 项目概述:这不是一个“工具”,而是一套可落地的开源代码评审工作流“open-code-review”这个名字乍看像某个 GitHub 仓库名,但实际它代表的是一种正在快速演进的工程实践范式——把传统依赖人工、会议、PR 留言的代码评审(Code…

2026/10/19 4:15:38 阅读更多 →
硕士论文AI辅助写作全流程:选题、文献、降重、答辩一站式指南

硕士论文AI辅助写作全流程:选题、文献、降重、答辩一站式指南

毕业季又到了,朋友圈里哀嚎一片的都是同一种声音:“论文写不出来”“文献太多看不完”“降重降到怀疑人生”。我去年辅导过一位读研二的师弟,他抱着改了四稿的开题报告来找我,说文献读了两个多月,题目换了不知道多少个…

2026/10/19 4:15:38 阅读更多 →
制造业AI落地复盘(一):为什么大多数项目死在‘第一步‘

制造业AI落地复盘(一):为什么大多数项目死在‘第一步‘

【本文为个人实操经验总结,非商业推广。文中数据来源于多个制造业信息化项目的观察,仅代表个体项目情况。】过去两年,接手过十几家制造企业的AI项目。复盘下来,大部分项目失败的原因惊人地一致——不是技术选错了,而是…

2026/10/19 4:14:37 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →