[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-peteromallet--desloppify":3,"tool-peteromallet--desloppify":62},[4,18,26,36,46,54],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},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,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},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 真正成长为懂上",159636,2,"2026-04-17T23:33:34",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":42,"last_commit_at":43,"category_tags":44,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,45],"插件",{"id":47,"name":48,"github_repo":49,"description_zh":50,"stars":51,"difficulty_score":32,"last_commit_at":52,"category_tags":53,"status":17},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":32,"last_commit_at":60,"category_tags":61,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[45,13,15,14],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":68,"readme_en":69,"readme_zh":70,"quickstart_zh":71,"use_case_zh":72,"hero_image_url":73,"owner_login":74,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":74,"owner_website":77,"owner_url":78,"languages":79,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":32,"env_os":99,"env_gpu":99,"env_ram":99,"env_deps":100,"category_tags":105,"github_topics":106,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":108,"updated_at":109,"faqs":110,"releases":138},8927,"peteromallet\u002Fdesloppify","desloppify","Agent harness to make your slop code well-engineered and beautiful.","Desloppify 是一款专为 AI 编程助手设计的“代码质量提升引擎”。它的核心使命是将 AI 生成的粗糙代码（俗称\"slop\"）转化为结构严谨、优雅且易于维护的工程级代码。\n\n在开发过程中，AI 虽然能快速生成代码，但往往缺乏对整体架构、命名规范及模块边界的深层考量，导致代码库逐渐变得杂乱。Desloppify 解决了这一痛点，它通过结合机械式检测（如识别死代码、重复逻辑、复杂度）与大型语言模型的主观审查，为代码质量提供量化评分。更重要的是，它提供了一个持续优化的闭环工作流：扫描问题、生成优先级列表、指导 AI 逐步修复并验证，且状态可在多次会话间持久保存，确保改进工作循序渐进而非浅尝辄止。\n\n这款工具非常适合依赖 AI 进行开发的程序员、技术团队以及希望提升现有项目代码质量的开发者使用。其独特亮点在于支持 29 种编程语言，并对 TypeScript、Python、Rust 等主流语言提供深度插件支持；同时，它设计了抗博弈的评分机制，迫使 AI 必须进行实质性的重构而非投机取巧地刷分。只需简单的命令行交互，Desloppify 就能引导 AI 像资深工程师一样思考，将代码库打磨","Desloppify 是一款专为 AI 编程助手设计的“代码质量提升引擎”。它的核心使命是将 AI 生成的粗糙代码（俗称\"slop\"）转化为结构严谨、优雅且易于维护的工程级代码。\n\n在开发过程中，AI 虽然能快速生成代码，但往往缺乏对整体架构、命名规范及模块边界的深层考量，导致代码库逐渐变得杂乱。Desloppify 解决了这一痛点，它通过结合机械式检测（如识别死代码、重复逻辑、复杂度）与大型语言模型的主观审查，为代码质量提供量化评分。更重要的是，它提供了一个持续优化的闭环工作流：扫描问题、生成优先级列表、指导 AI 逐步修复并验证，且状态可在多次会话间持久保存，确保改进工作循序渐进而非浅尝辄止。\n\n这款工具非常适合依赖 AI 进行开发的程序员、技术团队以及希望提升现有项目代码质量的开发者使用。其独特亮点在于支持 29 种编程语言，并对 TypeScript、Python、Rust 等主流语言提供深度插件支持；同时，它设计了抗博弈的评分机制，迫使 AI 必须进行实质性的重构而非投机取巧地刷分。只需简单的命令行交互，Desloppify 就能引导 AI 像资深工程师一样思考，将代码库打磨至完美。","# Desloppify - an agent harness to make your codebase 🤌\n\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdesloppify)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdesloppify\u002F) ![Python 3.11+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.11%2B-blue)\n\nDesloppify gives your AI coding agent the tools to identify, understand, and systematically improve codebase quality. It combines mechanical detection (dead code, duplication, complexity) with subjective LLM review (naming, abstractions, module boundaries), then works through a prioritized fix loop. State persists across scans so it chips away over multiple sessions, and the scoring is designed to resist gaming.\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpeteromallet_desloppify_readme_116df06bbf72.png\" width=\"100%\">\n\nThe score gives your agent a north-star, and the tooling helps it plan, execute, and resolve issues until it hits your target — with a lot of tricks to keep it on track. A score above 98 should correlate with a codebase a seasoned engineer would call beautiful.\n\nThat score generates a scorecard badge for your GitHub profile or README:\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpeteromallet_desloppify_readme_8c987e6eb702.png\" width=\"100%\">\n\nCurrently supports 29 languages — full plugin depth for TypeScript, Python, C#, C++, Dart, GDScript, Go, and Rust; generic linter + tree-sitter support for Ruby, Java, Kotlin, and 18 more. For C++ projects, `compile_commands.json` is the primary analysis path and `Makefile` repositories fall back to best-effort local include scanning.\n\n## For your agent's consideration...\n\nPaste this prompt into your agent:\n\n```\nI want you to improve the quality of this codebase. To do this, install and run desloppify.\nRun ALL of the following (requires Python 3.11+):\n\npip install --upgrade \"desloppify[full]\"\ndesloppify update-skill claude    # installs the full workflow guide — pick yours: claude, cursor, codex, copilot, droid, windsurf, gemini\n\nAdd .desloppify\u002F to your .gitignore — it contains local state that shouldn't be committed.\n\nBefore scanning, check for directories that should be excluded (vendor, build output,\ngenerated code, worktrees, etc.) and exclude obvious ones with `desloppify exclude \u003Cpath>`.\nShare any questionable candidates with me before excluding.\n\ndesloppify scan --path .\ndesloppify next\n\n--path is the directory to scan (use \".\" for the whole project, or \"src\u002F\" etc).\n\nYour goal is to get the strict score as high as possible. The scoring resists gaming — the\nonly way to improve it is to actually make the code better.\n\nTHE LOOP: run `next`. It is the execution queue from the living plan, not the whole backlog.\nIt tells you what to fix now, which file, and the resolve command to run when done.\nFix it, resolve it, run `next` again. Over and over. This is your main job.\n\nUse `desloppify backlog` only when you need to inspect broader open work that is not currently\ndriving execution.\n\nDon't be lazy. Large refactors and small detailed fixes — do both with equal energy. No task\nis too big or too small. Fix things properly, not minimally.\n\nUse `plan` \u002F `plan queue` to reorder priorities or cluster related issues. Rescan periodically.\nThe scan output includes agent instructions — follow them, don't substitute your own analysis.\n```\n\n## Monorepos and multi-project directories\n\nIf your workspace contains multiple programs (e.g., a frontend and backend in sibling directories), scan each one separately with `--path`:\n\n```bash\ndesloppify --lang typescript scan --path .\u002Ffrontend\ndesloppify --lang python scan --path .\u002Fbackend\n```\n\nScanning the parent directory that contains both will mix state and path context across unrelated codebases, producing unreliable results. Each `--path` target should be a single coherent project. Desloppify maintains separate state per language, so you can scan a TypeScript frontend and a Python backend from the same workspace without conflict — just target them individually.\n\n## How it works\n\n```\nscan ──→ score ──→ review ──→ triage ──→ execute ──→ rescan\n  │         │         │          │          │           │\n  │     dimensions    │     prioritize    fix it     verify\n  │     scored      LLM reviews  & cluster  & resolve  improvements\n  │                 subjective   the queue\n  │                 quality\n  detectors find\n  mechanical issues\n  (dead code, smells,\n  test gaps, etc.)\n```\n\n**Scan** runs mechanical detectors across your codebase — dead code, duplication, complexity, test coverage gaps, naming issues, and more. Each issue is scored by dimension (File health, Code quality, Test health, etc.).\n\n**Review** uses an LLM to assess subjective quality dimensions — naming, abstractions, error handling patterns, module boundaries. These score alongside the mechanical dimensions.\n\n**Triage** is where prioritization happens. The agent (or you) observes the findings, reflects on patterns, organizes issues into clusters, and enriches them with implementation detail. This produces an ordered execution queue — only items explicitly queued appear in `next`. Before triage, all mechanical issues are visible in the queue sorted by impact, which can be noisy.\n\n**Execute** is the fix loop: `next` → fix → `resolve` → `next`. Items come from the triaged queue. Autofix handles what it can; the rest needs manual or agent work.\n\n**Rescan** verifies improvements, catches cascading effects, and feeds the next cycle.\n\nState persists in `.desloppify\u002F` so progress carries across sessions. The scoring resists gaming — wontfix items widen the gap between lenient and strict scores, and re-reviewing dimensions can lower scores if the reviewer finds new issues.\n\n## From Vibe Coding to Vibe Engineering\n\nVibe coding gets things built fast. But the codebases it produces tend to rot in ways that are hard to see and harder to fix — not just the mechanical stuff like dead imports, but the structural kind. Abstractions that made sense at first stop making sense. Naming drifts. Error handling is done three different ways. The codebase works, but working in it gets worse over time.\n\nLLMs are actually good at spotting this now, if you ask them the right questions. That's the core bet here — that an agent with the right framework can hold a codebase to a real standard, the kind that used to require a senior engineer paying close attention over months.\n\nSo we're trying to define what \"good\" looks like as a score that's actually worth optimizing. Not a lint score you game to 100 by suppressing warnings. Something where improving the number means the codebase genuinely got better. That's hard, and we're not done, but the anti-gaming stuff matters to us a lot — it's the difference between a useful signal and a vanity metric.\n\nThe hope is that anyone can use this to build something a seasoned engineer would look at and respect. That's the bar we're aiming for.\n\nIf you'd like to join a community of vibe engineers who want to build beautiful things, [come hang out](https:\u002F\u002Fdiscord.gg\u002FaZdzbZrHaY).\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpeteromallet_desloppify_readme_ab9615654f20.png\" width=\"100%\">\n\n---\n\nIssues, improvements, and PRs are hugely appreciated — [github.com\u002Fpeteromallet\u002Fdesloppify](https:\u002F\u002Fgithub.com\u002Fpeteromallet\u002Fdesloppify).\n\nDesloppify is free for any individual — whether working independently or at a company — to use for their own work. It is also free for open source companies to use in any capacity, including commercial. Non-open source companies who wish to commercialize it should refer to the [LICENSE](LICENSE) for transparent pricing details.\n","# Desloppify - 一款让您的代码库更美好的代理工具 🤌\n\n[![PyPI版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdesloppify)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdesloppify\u002F) ![Python 3.11+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.11%2B-blue)\n\nDesloppify 为您的 AI 编码代理提供了识别、理解并系统性提升代码库质量的工具。它结合了机械检测（如无用代码、重复代码、复杂度）与主观的 LLM 审查（如命名、抽象设计、模块边界），然后按照优先级驱动的修复循环逐步推进。扫描状态会持续保存，因此即使分多次进行也能不断优化代码；其评分机制经过精心设计，能够有效防止被“刷分”。\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpeteromallet_desloppify_readme_116df06bbf72.png\" width=\"100%\">\n\n评分结果为您的代理提供了一个明确的目标指引，而配套工具则帮助它规划、执行并解决各类问题，直至达到您设定的质量标准——同时内置多种机制确保流程始终按计划推进。当评分超过 98 分时，通常意味着该代码库已达到了资深工程师所认为的“优美”水平。\n\n这一评分还会生成一个积分卡徽章，您可以将其展示在 GitHub 个人主页或 README 文件中：\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpeteromallet_desloppify_readme_8c987e6eb702.png\" width=\"100%\">\n\n目前支持 29 种编程语言：对 TypeScript、Python、C#、C++、Dart、GDScript、Go 和 Rust 提供完整的插件深度支持；而对于 Ruby、Java、Kotlin 等另外 18 种语言，则采用通用的 linter 结合 Tree-sitter 解析器的支持。对于 C++ 项目，`compile_commands.json` 是主要的分析入口，而基于 `Makefile` 的仓库则会退而求其次，通过尽力扫描本地包含文件来进行分析。\n\n## 供您的代理参考...\n\n请将以下提示粘贴到您的代理中：\n\n```\n我希望你提升这个代码库的质量。为此，请安装并运行 desloppify。\n请执行以下所有步骤（需 Python 3.11+）：\n\npip install --upgrade \"desloppify[full]\"\ndesloppify update-skill claude    # 安装完整的工作流指南 — 可选择 claude、cursor、codex、copilot、droid、windsurf 或 gemini\n\n将 .desloppify\u002F 添加到 .gitignore 中——其中包含不应提交的本地状态。\n\n在扫描之前，请检查需要排除的目录（如 vendor、构建输出、生成代码、工作树等），并使用 `desloppify exclude \u003Cpath>` 排除明显无需扫描的部分。对于任何存疑的路径，请先与我沟通确认后再排除。\n\ndesloppify scan --path .\ndesloppify next\n\n--path 参数指定要扫描的目录（使用 \".\" 表示整个项目，或 \"src\u002F\" 等特定子目录）。\n\n你的目标是尽可能提高严格评分。该评分机制不易被操纵——唯一提升评分的方式就是真正改善代码质量。\n\n循环流程：运行 `next`。它代表当前待执行的任务队列，而非全部待办事项清单。它会告诉你现在该修复哪一行代码、哪个文件，以及完成后的解决命令。修复完成后，立即执行 `resolve`，再运行 `next`。如此反复，这就是你的核心任务。\n\n仅在需要查看当前未纳入执行计划的更广泛待办事项时，才使用 `desloppify backlog`。\n\n不要偷懒。无论是大规模重构还是细致的小修小补，都应投入同等精力。没有太大的任务，也没有太小的任务。务必彻底解决问题，而非仅仅做最低限度的改动。\n\n使用 `plan` 或 `plan queue` 来调整优先级顺序或归并相关问题。定期重新扫描。扫描结果中会包含具体的行动指导，请遵照执行，切勿以自己的判断替代。\n\n```\n\n## 单体仓库与多项目目录\n\n如果您的工作区包含多个独立的程序（例如，兄弟目录下的前端和后端），请分别使用 `--path` 参数对它们进行扫描：\n\n```bash\ndesloppify --lang typescript scan --path .\u002Ffrontend\ndesloppify --lang python scan --path .\u002Fbackend\n```\n\n直接扫描包含这两个项目的父目录会导致不同代码库之间的状态和路径上下文相互干扰，从而产生不可靠的结果。每个 `--path` 指定的目标应当是一个完整的、连贯的项目。Desloppify 会为每种语言维护独立的状态，因此您可以在同一个工作区中分别扫描 TypeScript 前端和 Python 后端，而不会发生冲突——只需针对各自的目标单独执行扫描即可。\n\n## 工作原理\n\n```\n扫描 ──→ 评分 ──→ 审查 ──→ 分类排序 ──→ 执行 ──→ 重新扫描\n  │         │         │          │          │           │\n  │     维度      │     优先级化    修复它     验证\n  │     量化评估  LLM 主观评价  整理队列  解决它  改进效果\n  │                 质量\n  检测器发现\n  机械性问题\n  （无用代码、异味代码、测试覆盖率不足等）\n```\n\n**扫描** 会在您的代码库中运行一系列机械检测工具，包括无用代码、代码重复、复杂度、测试覆盖率不足、命名问题等。每个问题都会根据不同的维度（文件健康度、代码质量、测试健康度等）进行打分。\n\n**审查** 则借助大型语言模型来评估主观质量维度，例如命名规范、抽象层次、错误处理模式以及模块边界等。这些主观评分会与机械检测结果一同纳入总分。\n\n**分类排序** 是确定优先级的关键环节。代理（或您本人）会观察检测结果，归纳其中的规律，将问题归类分组，并补充具体的实现细节，最终形成有序的执行队列——只有明确列入队列的条目才会出现在 `next` 命令的输出中。在分类排序之前，所有机械性问题都会按影响程度排序显示在队列中，但可能会显得较为杂乱。\n\n**执行** 是修复循环的核心：`next` → 修复 → `resolve` → `next`。待修复的条目均来自分类排序后的队列。自动修复功能会处理那些可以自动化解决的问题；其余部分则需要人工或代理进一步干预。\n\n**重新扫描** 用于验证改进效果、捕捉连锁反应，并为下一轮循环提供数据支持。\n\n扫描状态会持久化保存在 `.desloppify\u002F` 目录中，因此进度可以在不同会话之间延续。此外，其评分机制具有防作弊特性：若将某些问题标记为“不予修复”，将会拉大宽松评分与严格评分之间的差距；而再次审查相关维度时，如果发现新问题，评分还可能下降。\n\n## 从 Vibe 编码到 Vibe 工程\n\nVibe 编码能让项目快速上线。然而，由此产生的代码库往往会在不易察觉、更难修复的方式下逐渐腐化——不仅体现在诸如未使用的导入之类的机械性问题上，还表现在结构性缺陷中。最初看似合理的抽象如今已不再适用；变量和函数的命名逐渐偏离初衷；错误处理方式更是五花八门，甚至同一种逻辑会有三种不同的实现。虽然代码库还能正常运行，但随着开发的推进，维护和协作的体验却每况愈下。\n\n如今，如果提出恰当的问题，大型语言模型确实能够敏锐地识别出这些问题。这也是我们最核心的设想：借助合适的框架构建一个智能体，使其能够将代码库的质量维持在一个真正的标准之上——而这样的标准过去往往需要一位资深工程师耗费数月时间悉心把关才能达成。\n\n因此，我们正尝试定义“好”的具体含义，并将其转化为一个真正值得优化的评分指标。这绝非那种通过压制警告就能轻易刷到100分的 Lint 分数，而是指当分数提升时，代码库本身也确实在质量上得到了实质性改善。这项工作颇具挑战，目前尚未完成，但我们非常重视防止“刷分”行为——因为这直接决定了指标是具有实际意义的信号，还是徒有其表的虚荣数字。\n\n我们的愿景是：无论谁使用这套工具，都能打造出令经验丰富的工程师由衷钦佩的作品。这便是我们所追求的目标。\n\n如果你也希望加入一群致力于创造卓越成果的 Vibe 工程师社区，欢迎来 [Discord 交流](https:\u002F\u002Fdiscord.gg\u002FaZdzbZrHaY)。\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpeteromallet_desloppify_readme_ab9615654f20.png\" width=\"100%\">\n\n---\n\n我们非常欢迎各类问题、改进建议以及 Pull Request — 欢迎访问 [github.com\u002Fpeteromallet\u002Fdesloppify](https:\u002F\u002Fgithub.com\u002Fpeteromallet\u002Fdesloppify)。\n\nDesloppify 对所有个人用户完全免费，无论是独立开发者还是企业员工，均可将其用于自身的工作。同时，开源公司也可在任何场景下免费使用，包括商业用途。对于希望将 Desloppify 商业化的非开源企业，请参阅 [LICENSE](LICENSE)，以获取透明的价格信息。","# Desloppify 快速上手指南\n\nDesloppify 是一个 AI 代理工具包，旨在帮助你的 AI 编程助手系统性地识别、理解并提升代码库质量。它结合了机械式检测（死代码、重复代码、复杂度）与大语言模型（LLM）的主观审查（命名、抽象、模块边界），通过优先级的修复循环持续优化代码。\n\n## 环境准备\n\n- **操作系统**：支持 Linux、macOS、Windows\n- **Python 版本**：必须为 **Python 3.11** 或更高版本\n- **项目语言支持**：\n  - 深度支持：TypeScript, Python, C#, C++, Dart, GDScript, Go, Rust\n  - 通用支持（基于 tree-sitter）：Ruby, Java, Kotlin 等共 29 种语言\n- **C++ 项目特别说明**：首选提供 `compile_commands.json`，若无则尝试基于 `Makefile` 的本地包含扫描。\n\n## 安装步骤\n\n1. 升级 pip 并安装 Desloppify 完整功能包：\n\n```bash\npip install --upgrade \"desloppify[full]\"\n```\n\n> 💡 **国内加速建议**：如果下载缓慢，可使用清华或阿里镜像源：\n> ```bash\n> pip install --upgrade \"desloppify[full]\" -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n2. 为你的 AI 代理安装工作流指南（根据你的代理类型选择其一）：\n\n```bash\ndesloppify update-skill claude\n# 或者\ndesloppify update-skill cursor\n# 或者\ndesloppify update-skill copilot\n# 其他可选：codex, droid, windsurf, gemini\n```\n\n3. 将生成的状态目录添加到 `.gitignore`，避免提交本地状态文件：\n\n```text\n.desloppify\u002F\n```\n\n## 基本使用\n\n### 1. 排除无关目录（可选但推荐）\n\n在扫描前，排除构建输出、第三方库、生成代码等目录：\n\n```bash\ndesloppify exclude node_modules\ndesloppify exclude build\ndesloppify exclude dist\n```\n\n如有不确定的目录，请先与团队成员确认后再排除。\n\n### 2. 执行全量扫描\n\n对当前项目根目录进行扫描：\n\n```bash\ndesloppify scan --path .\n```\n\n若为多项目仓库（如前后端分离），请分别扫描：\n\n```bash\ndesloppify --lang typescript scan --path .\u002Ffrontend\ndesloppify --lang python scan --path .\u002Fbackend\n```\n\n### 3. 进入修复循环\n\n运行以下命令获取当前最优先的修复任务：\n\n```bash\ndesloppify next\n```\n\n该命令会输出：\n- 需要修复的文件路径\n- 具体问题描述\n- 修复完成后执行的 resolve 命令\n\n**标准工作流程**：\n1. 执行 `desloppify next` 获取任务\n2. 手动或由 AI 代理修复代码\n3. 运行提示中的 `resolve` 命令标记完成\n4. 重复执行 `desloppify next` 继续下一项\n\n### 4. 查看与管理任务队列\n\n- 查看待处理的全部 backlog（非当前执行队列）：\n  ```bash\n  desloppify backlog\n  ```\n\n- 调整优先级或聚类相关问题：\n  ```bash\n  desloppify plan\n  desloppify plan queue\n  ```\n\n- 定期重新扫描以验证改进并发现新问题：\n  ```bash\n  desloppify scan --path .\n  ```\n\n### 5. 目标分数\n\n持续修复直到严格评分（strict score）达到 **98 分以上**，这通常意味着代码库已达到资深工程师认可的“优美”标准。评分机制设计有防作弊逻辑，唯有真实提升代码质量才能提高分数。","某初创团队在快速迭代中积累了一个充满“临时方案”的 Python 后端项目，代码库逐渐变得难以维护，新成员上手困难且 Bug 频发。\n\n### 没有 desloppify 时\n- **缺乏统一标准**：团队成员各自为战，命名风格混乱，抽象层级不一，导致代码读起来像不同人写的“拼凑品”。\n- **修复盲目低效**：重构全靠人工肉眼排查死代码和重复逻辑，往往修了东墙补西墙，无法系统性提升质量。\n- **进度难以量化**：老板询问“代码质量改善了多少”时，开发者只能凭感觉回答，缺乏客观数据支撑。\n- **AI 助手易偷懒**：让 AI 重构代码时，它倾向于只做表面修改或忽略复杂的重构任务，无法持续深入优化。\n\n### 使用 desloppify 后\n- **建立质量北星**：desloppify 生成唯一的“严格评分”，结合机械检测与 LLM 主观评审，为团队提供了清晰的代码质量目标（如冲刺 98 分）。\n- **执行闭环自动化**：通过 `desloppify next` 命令，AI 代理获得具体的待办队列，按优先级逐个修复文件并自动标记完成，形成“扫描 - 计划 - 执行”的闭环。\n- **状态持久化追踪**：工具记录每次扫描的状态，支持跨会话持续“啃硬骨头”，确保大型重构和小细节修补都能被系统性地解决。\n- **防作弊机制**：评分系统设计巧妙，迫使 AI 必须真正优化代码结构和逻辑才能提分，杜绝了仅修改注释或变量名来“刷分”的行为。\n\ndesloppify 将模糊的代码整洁度转化为可执行的量化任务，让 AI 代理从“偶尔帮忙”变成了不知疲倦的资深架构师。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpeteromallet_desloppify_8c987e6e.png","peteromallet","POM","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fpeteromallet_06f2d5bd.jpg",null,"https:\u002F\u002Fgithub.com\u002Fpeteromallet",[80,84,88,92],{"name":81,"color":82,"percentage":83},"Python","#3572A5",99.9,{"name":85,"color":86,"percentage":87},"HTML","#e34c26",0.1,{"name":89,"color":90,"percentage":91},"Makefile","#427819",0,{"name":93,"color":94,"percentage":91},"Shell","#89e051",2746,188,"2026-04-17T21:01:14","NOASSERTION","未说明",{"notes":101,"python":102,"dependencies":103},"该工具主要结合机械检测与 LLM 主观审查。对于 C++ 项目，首选分析路径需要 `compile_commands.json` 文件，若为 Makefile 项目则回退到本地包含扫描。运行前需将 `.desloppify\u002F` 目录加入 `.gitignore`。支持 29 种语言，其中 TypeScript、Python 等 8 种语言支持深度插件分析，其余语言通过通用 linter 和 tree-sitter 支持。","3.11+",[104],"desloppify[full]",[13],[107],"agent-harness","2026-03-27T02:49:30.150509","2026-04-18T14:14:13.124759",[111,116,121,126,130,134],{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},40037,"未使用导入检测器为什么会产生大量误报（特别是针对命名导入）？","在 v0.9.9 版本中，检测器错误地检查模块文件路径而非实际引用的符号，导致命名导入被误判。该问题已在 v0.9.10 版本中修复（PR #433）。新版检测器现在使用感知绑定的逐符号分析（binding-aware per-symbol analysis），能够正确追踪命名导入、默认导入、别名以及 JSX 中的使用情况，从而消除误报。","https:\u002F\u002Fgithub.com\u002Fpeteromallet\u002Fdesloppify\u002Fissues\u002F430",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},40038,"Desloppify 如何支持新框架（如 Next.js, Django）的检测架构？","项目采用了规范驱动（spec-driven）的水平层架构 `FrameworkSpec`。添加新框架只需定义包含 `DetectionConfig`、`ScannerRule` 和 `ToolIntegration` 的规范数据类，无需修改核心基础设施。该架构支持跨语言覆盖（例如 TS 和 JS 共享同一个 Next.js 规范），并通过 `make_tool_phase` 集成外部工具（如 `next lint`），同时尊重 `--skip-slow` 标志。浅层插件使用 `frameworks=True`，深层插件使用 `*framework_phases()`。","https:\u002F\u002Fgithub.com\u002Fpeteromallet\u002Fdesloppify\u002Fissues\u002F418",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},40039,"提交代码库工程缺陷赏金任务的标准是什么？","赏金针对的是“工程设计糟糕”的内容，包括糟糕的工程决策、草率的实现或不当的抽象，这些决策应显著增加维护、扩展或理解的难度。单纯的代码风格偏好不计入。提交的缺陷必须基于指定的代码库快照。评审过程会使用 Claude Opus 和 ChatGPT Codex 两个模型进行双重验证，只有当两个模型都同意该问题属于“工程设计糟糕”且具有“一定重要性”时，提交才会被接受。死代码若仅为无影响的兼容性垫片则可能因缺乏显著影响而被拒绝。","https:\u002F\u002Fgithub.com\u002Fpeteromallet\u002Fdesloppify\u002Fissues\u002F204",{"id":127,"question_zh":128,"answer_zh":129,"source_url":115},40040,"运行扫描时如何配置排除目录？","可以在配置文件中设置排除项。例如在 JavaScript 项目中，可以通过配置排除 `node_modules`, `.next`, `src\u002Fgenerated`, `coverage`, `.git`, `test-data` 等目录。扫描输出会显示 \"Excluding (from config): ...\" 列表，确认哪些目录已被忽略。确保在运行 `desloppify scan` 前检查配置文件以避免扫描不必要的生成文件或依赖包。",{"id":131,"question_zh":132,"answer_zh":133,"source_url":125},40041,"Desloppify 扫描报告中的“神类”（God Classes）和结构问题是指什么？","扫描报告会识别结构性异味，例如“神类”（拥有过多字段或职责的类\u002F数据结构，如拥有 36 个字段的 `PreparedBatchRunContext`）和“原始类型痴迷”（函数参数过多或返回复杂元组）。这些问题违反了单一职责原则，增加了维护成本。扫描结果会列出具体的数量（如 \"god classes: 1\"）和受影响的文件数，帮助开发者定位需要重构的高复杂度文件。",{"id":135,"question_zh":136,"answer_zh":137,"source_url":120},40042,"Desloppify 支持哪些语言深度和检测能力？","Desloppify 支持不同深度的语言插件：浅层支持 JS, Nim, Zig, Bash 等；深层支持 TS, Go, Rust, C++ 等（通过 `LangConfig` 类）。检测能力包括 ESLint  linting、自动修复、导入分析、函数提取、安全扫描、样板代码检测和设计审查。对于深层语言，还能进行依赖图分析和区域映射（zone map），以检测更复杂的架构违规问题。",[139,144,149,154,159,164,169,174,179],{"id":140,"version":141,"summary_zh":142,"released_at":143},323542,"v0.9.15","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布新增了针对 JavaScript 和 R 的测试覆盖率钩子、孤儿检测器对 Next.js App Router 的感知能力，并修复了三个 Rust 检测器中的误报问题。许可证已更新为 OSNL v0.2。\n\n---\n\n**47 个文件变更 | 17 次提交 | 6,698 项测试通过**\n\n## 亮点功能\n\n### Next.js App Router 框架感知\n\n孤儿检测器现在能够自动检测 Next.js 项目（通过 `next.config.{js,mjs,ts}` 文件），并识别 App Router 约定的文件——`page.tsx`、`layout.tsx`、`loading.tsx`、`error.tsx`、`route.ts`、`template.tsx`、`default.tsx`、`middleware.ts` 等——作为框架入口点。从此，符合 Next.js 习惯用法的代码将不再触发误报的孤儿警告。解决了由 **@m-ahmed-elbeskeri** 报告的 #528 问题。\n\n## 其他功能\n\n### JavaScript 测试覆盖率钩子\n全面支持 JavaScript 的测试映射，与现有的 TypeScript 插件保持一致。包括文件命名规范（`.test.js`、`.spec.js`、`__tests__\u002F`）、断言语句模式检测以及占位符\u002F待办测试的识别。摘自 **@elfensky** 提交的 PR #515。解决了 #514 问题。\n\n### R testthat 测试覆盖率钩子\n为遵循 testthat 规范的 R 项目提供测试映射（`tests\u002Ftestthat\u002Ftest-*.R` → `R\u002F*.R`）。包含 R 特有的断言语句模式（`expect_equal`、`expect_true` 等）以及 testthat 占位符检测。摘自 **@sims1253** 提交的 PR #529（并修复了 strip_test_markers 的 basename 问题）。\n\n### Deno std\u002Fassert 识别\nTypeScript 和 JavaScript 插件现在除了 Node 的点号风格外，也能够识别 Deno 风格的函数调用式断言（`assert()`、`assertEquals()`、`assertThrows()` 等）。解决了由 **@RolanH** 报告的 #530 问题。\n\n### OpenCode 批量评审运行器\n在现有选项之外，新增了 OpenCode 作为替代的批量评审运行器。来自 **@cpjet64** 的 PR。\n\n## 错误修复\n\n- **Rust 分组 use 声明** — 未使用导入检测器不再对 `use crate::module::{A, B}` 这样的分组导入产生误报。每个名称现在都会被独立验证。解决了 #521 问题。\n- **Rust 异步锁作用域释放** — 异步锁检测器现在会跟踪大括号层级，以识别块级作用域边界处隐式的锁守卫释放。如果在 `if let` 或 `match` 分支内部获取了锁守卫，且该块之后出现了 `.await`，将不再触发误报。解决了 #523 问题。\n- **Codex 分类运行器缺失状态** — `StageRunContext` 构造函数现在会接收 `state=pipeline_context.state` 参数，从而修复了策略制定阶段的崩溃问题。解决了由 **@jmartell72** 报告的 #527 问题。\n- **normalize_step 对字符串输入崩溃** — `normalize_step` 现在能够处理来自 `--steps` CLI 参数的字符串输入。解决了 #519 问题。\n- **do_import_run 部分批次结果** — `do_import_run` 现在会尊重 `allow_partial` 设置，以处理缺失的批次结果。\n- **跨扩展测试映射** — 修复了 TypeScript 插件中 `.test.ts` 到 `.tsx` 源文件的映射错误。","2026-04-06T20:29:51",{"id":145,"version":146,"summary_zh":147,"released_at":148},323543,"v0.9.14","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布**彻底重构了计划\u002F执行生命周期**——将阶段推导整合为一个标准函数，修复了会重新排队已完成主观评审的强制重扫 bug，并将内部状态机从细粒度的阶段名称简化为仅保留 `plan` 和 `execute`。此外还修复了仪表板计数过时、图表归一化采样以及 Windows UTF-8 编码等问题。\n\n---\n\n**64 个文件变更 | 11 次提交 | 5,660 个测试通过**\n\n## 亮点功能\n\n### 生命周期整合\n\n计划\u002F执行生命周期——即决定当前是处于计划阶段还是执行阶段的状态机——现已进行了大幅重构，以提升清晰度和正确性：\n\n- **共享阶段推导**——现在，协调流水线和工作队列快照都委托给一个具有明确优先级链的纯函数 `derive_display_phase()`。此前，两个独立的实现需要手动保持同步。\n- **纯只读函数**——`current_lifecycle_phase()` 不再在读取时修改计划数据。旧版阶段名称的迁移现在只需在计划加载时运行一次。\n- **标记不变式文档化**——驱动生命周期转换的三个扫描计数标记（`lifecycle_phase`、`postflight_scan_completed_at_scan_count`、`subjective_review_completed_at_scan_count`）如今都附有有效值、转换规则及单写者函数的说明。\n- **不再存在绕行路径**——快照阶段解析现在会将所有推导流程统一交由共享函数处理，不再有短路返回的情况。\n\n这一改进源于一类反复出现的 bug：生命周期标记会不同步，最近的一次就是强制重扫导致已完成的主观评审被重新排队。\n\n## 其他功能\n\n### 带迷你图的成绩检查点\n\n`plan_checkpoint` 进展事件现在包含一条迷你图，显示成绩在各检查点之间的变化趋势。这使得用户能够更直观地判断成绩是在上升还是趋于平稳。\n\n### 简化面向用户的生命周期\n\n用户现在只会看到“计划模式”和“执行模式”，而不再接触诸如 `workflow_postflight` 或 `triage_postflight` 等内部阶段名称。当不存在先前基线时，`communicate-score` 工作流步骤会自动完成，从而消除了首次使用时的一个令人困惑的手动步骤。\n\n## Bug 修复\n\n- **强制重扫不再重置主观评审**——当在计划模式下运行 `--force-rescan` 时，扫描计数的增加会导致 `subjective_review_completed_at_scan_count` 变得过时，进而将全部 20 项主观评审重新入队。新的 `carry_forward_subjective_review()` 函数会在旧评审与当前替换周期匹配时提升该标记。\n- **焦点计数过时问题**——`status`、`next` 和 `scan` 命令现在会显示最新的焦点计数，而非过时的缓存值。解决了 #503 问题。\n- **图表归一化采样**——`check_all_graph_keys` 现在会检查所有键以进行归一化处理。","2026-03-24T01:10:30",{"id":150,"version":151,"summary_zh":152,"released_at":153},323544,"v0.9.13","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布通过 `desloppify setup` 命令提供了一键全局安装的 **全部 11 个技能叠加层**，并根据社区反馈修复了 **三个检测器中的误报问题** —— 孤立文件、硬编码密钥名称和循环依赖。\n\n---\n\n**31 个文件变更 | 7 次提交 | 6,539 个测试通过**\n\n## 亮点功能\n\n### 使用 `desloppify setup` 打包技能叠加层\n\n现在，所有 11 个代理技能文件（Claude、Cursor、Copilot、Codex、Droid、Windsurf、Gemini、AMP、Hermes、OpenCode、Skill）均已打包到软件包中，并可通过 `desloppify setup` 命令进行全局安装。无需网络连接——该命令会将打包好的文档复制到正确位置，使各个项目中的代理都能自动发现 Desloppify。同时，预提交钩子和 `make sync-docs` 目标可确保打包副本与 `docs\u002F` 中的内容保持同步。\n\nREADME 现已将 `desloppify setup` 定为首选安装方式，而 `update-skill` 则作为每个项目的备用方案。\n\n## 错误修复\n\n- **孤立文件检测器误报** —— 包含 `__all__` 导出的文件现被视为有意公开的 API 接口，不再被判定为孤立文件。关闭 #496，由 **@Git-on-my-level** 报告。\n- **hardcoded_secret_name 检测器误报** —— 新增熵启发式规则以过滤非密钥值：字段名常量（如 `token_usage`）、哨兵字符串以及标签前缀（如 `agent_workspace@`）将不再被标记。关闭 #496。\n- **Cycles 检测器 TYPE_CHECKING 分支误报** —— 现在会将 `if TYPE_CHECKING:` 块内的导入标记为延迟加载，并排除在循环检测之外。源自 **@Git-on-my-level** 在 #496 中的评论。\n- **评估模块因状态损坏而崩溃** —— `store_assessments` 现在会在调用 `.get()` 之前使用 `isinstance` 检查来防止状态中出现原始整数值。关闭 #465，由 **@Vuk97** 报告。\n- **fix_debug_logs 负索引损坏问题** —— 添加了下界保护（`start \u003C 0`），与所有其他修复程序的模式一致。这可避免当 `entry[\"line\"]` 为 0 时静默地修改错误行的问题。此修复摘自 **@cpjet64** 提交的 PR #499。\n- **.gitignore 中 CLAUDE.md\u002FAGENTS.md 的作用范围** —— 现在模式锚定到仓库根目录（`\u002FCLAUDE.md`），从而不会忽略子目录中的副本。\n\n## 重构与内部改进\n\n- **评审流程优化** —— 增加了“偏向行动”的指导原则：确认的 bug 将立即实施，而非推迟处理。第三阶段现在会收集待解决的问题供维护者确认，而不是自行猜测。硬性规定：任何决策都必须先提交审批，方可执行。\n\n## 社区贡献\n\n感谢 **@Git-on-my-level** 提供的关于三个检测器中误报问题的详细报告（#496）；感谢 **@Vuk97** 复现的评估模块崩溃问题（#465）以及语言检测 Bug（#466）；同时也感谢 **@cpjet64** 提供的 fix_debug_logs 保护修复（PR #499）。","2026-03-22T17:47:07",{"id":155,"version":156,"summary_zh":157,"released_at":158},323545,"v0.9.12","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布新增了**战略家分类角色**，用于具备趋势意识的战略性监督；引入了一个**`desloppify setup` 命令**，可一步完成全局技能安装；同时还修复了一系列问题，终于让**过时的主观评审**摆脱了队列顺序相关的问题困扰。此外，还包含了社区贡献的修复，涉及 Python 源码目录结构项目、Windows 编码以及 Knip 卡顿等问题。\n\n---\n\n**149 个文件变更 | 21 次提交 | 6,485 项测试通过**\n\n## 重磅功能\n\n### 战略家分类角色\n\n分类流程新增了一个“战略家”阶段，作为 CEO 级别的清理周期总负责人。与以往盲目信任代理上报的趋势不同，战略家会将评分和债务趋势与计算得出的轨迹数据进行交叉核对，并在发现不一致时予以覆盖。该角色可以创建高优先级的 `strategy::` 工作项，将其直接插入队列前端；同时，它也支持明确的确认机制（与其他分类阶段一致），以便人工审核战略评估结果后再予执行。\n\n底层的 `ScoreTrajectory` 现在会追踪完整扫描历史中的最高值（而不仅是最近 5 次扫描窗口内的数据），并引入了一种“恢复中”的趋势类型，用于标识那些正在改善但尚未达到此前峰值的评分情况。此外，它还能检测跨周期的退步现象——即平台期掩盖了重置后的持续下滑。\n\n## 其他功能\n\n### `desloppify setup` 命令\n\n新增命令：`pip install desloppify && desloppify setup`。此命令无需网络连接即可将捆绑的技能定义复制到 `~\u002F.claude\u002F` 和 `~\u002F.cursor\u002F` 目录下，从而使所有项目中的代理都能全局识别 Desloppify。针对单个项目的安装仍可通过 `update-skill` 命令完成。\n\n### 主观防作弊策略已禁用\n\n之前用于在维度评分趋近目标值时将其归零的完整性策略曾产生大量误报——由于盲包式子代理评审无法以目标评分为基准，合法的趋近过程也被错误地惩罚了。现在该策略会原样通过各项评估。待后续出现更优的检测方案时，仍可重新启用。\n\n## Bug 修复\n\n- **因队列状态导致过时主观评审被阻塞** — 三项相关修复确保无论队列中是否仍有机械类任务，过时评审都能被准确检测并注入。此前，`live_planned_queue_empty` 保护机制会在存在客观任务时完全阻止重整操作，从而使得评审维度长期处于过时状态。\n- **过时评审的阶段排序** — 现在，过时主观评审的优先级高于非关键工作流（如传递评分）及分类任务。而评审前的工作流（延迟处置、运行扫描、导入评分等）仍然会优先于其他一切任务。\n- **强制重新扫描以注入过时评审** — 强制重新扫描现已能够正确注入过时评审，它会绕过队列为空的保护机制以及刚完成本轮循环的延迟逻辑。此外，还新增了 `_refresh_plan_start_baseline()` 方法，用于在不改变现有评分的情况下重新初始化 baseline。","2026-03-21T03:54:59",{"id":160,"version":161,"summary_zh":162,"released_at":163},323546,"v0.9.11","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布新增了**进展日志**——一个仅追加的生命周期事件时间线，为 AI 代理提供了跨周期的持久化记忆——同时还包含来自社区的一批 bug 修复，涵盖了跨平台问题、正则表达式安全性、序列化崩溃以及分类质量等方面。\n\n---\n\n**62 个文件变更 | 18 次提交 | 5,495 个测试通过**\n\n## 进展日志\n\n本次发布的最大改进是 `.desloppify\u002Fprogression.jsonl` 文件——一个仅追加的事件日志，用于记录生命周期各边界点发生的事件。每行都是一个自包含的 JSON 对象，包含区分类型的 `event_type`、时间戳、评分以及结构化的负载数据。\n\n这一功能解决的问题是：desloppify 的生命周期是一个循环（执行 → 扫描 → 审查 → 分类 → 执行），而在此之前，并没有一个持久化的记录来追踪每个边界点究竟发生了什么。扫描历史仅保留最近 20 次扫描的结果，执行日志记录的是计划中的操作，而 `query.json` 则是临时性的。因此，负责指导分类工作的 CEO 代理无法回答“自上一周期以来有哪些改进？”这个问题，除非从分散的来源中重新拼凑信息。\n\n进展日志会记录 7 种边界事件：\n\n- **`scan_preflight`** — 门控决策（允许\u002F阻止\u002F绕过）及队列状态\n- **`scan_complete`** — 评分、维度变化、扫描差异、执行摘要（包含已解决和已跳过的 ID）以及抑制指标\n- **`postflight_scan_completed`** — 当前周期的扫描标记翻转\n- **`subjective_review_completed`** — 审查者的观察：覆盖了哪些维度、证据摘要、新审查问题的 ID 和摘要、导入来源\n- **`triage_complete`** — 策略摘要、聚类名称与论点、各类判定的数量、已整理与总数量\n- **`entered_planning_mode`** — 进入任何规划阶段的转变，附带触发原因\n- **`execution_drain`** — 队列通过解决或工作流解决被清空，同时记录清空时的评分\n\n关键设计决策：\n\n- **以时间戳作为连接键** — 事件本身携带足够的摘要信息以便快速查阅，但时间戳可以让读者查询 `state.json` 和计划的 `execution_log` 以获取完整细节。进展日志只是一个时间线索引，而非数据副本。\n- **幂等标记触发器** — 事件会在 `mark_postflight_scan_completed()` 和 `mark_subjective_review_completed()` 返回 True 时触发。这些触发器对每次扫描次数都是幂等的，因此不会重复触发。\n- **尽力而为，绝不破坏父进程** — 所有钩子都包裹在 try\u002Fexcept 块中。采用建议式的文件锁机制，超时时间为 2 秒。若加锁失败，则不加锁直接追加并记录警告。\n- **抗损坏读取** — 对于损坏的 JSONL 行，会跳过并发出警告；文件本身绝不会被清除。定期修剪可将其保持在 2000 行以内。\n\n## 分类：别再纠结于测试覆盖率\n\n多位用户反馈，该工具过于强调编写测试用例，反而忽视了实际代码的清理工作。根本原因在于：分类阶段的 LLM 会优先推荐 `test_coverage` 聚类，因为它们 app","2026-03-19T00:18:07",{"id":165,"version":166,"summary_zh":167,"released_at":168},323547,"v0.9.10","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布新增了用于完全自主清理循环的**实验性 Hermes Agent 集成**、带有完整 Next.js 规范的**框架感知检测**、**SCSS 语言支持**，以及在检测器预取与缓存加持下的显著**扫描性能提升**——同时还包含社区贡献的一系列问题修复。\n\n---\n\n**152 个文件变更 | 54 次提交 | 5,466 项测试通过**\n\n## Hermes Agent 集成（实验性）\n\n我们一直在探索：当代码库健康度工具能够真正“驱动”AI智能体时会是什么样？它不仅生成报告，还能自主编排整个清理流程。此次发布的首个实验性集成便是与 [Hermes Agent](https:\u002F\u002Fgithub.com\u002FNousResearch\u002Fhermes-agent) 的对接。\n\n核心思路在于：desloppify 已经清楚需要执行哪些步骤（扫描、分类、评审、修复）。现在，它不再只是为人类输出操作指令，而是可以直接告知智能体——针对机械性修复切换至低成本模型，而架构评审则使用高成本模型；在各任务间自动重置上下文，并通过 `\u002Fautoreply` 让智能体持续工作，全程无需人工介入。\n\n该集成带来的能力包括：\n\n- **自主评审循环**——desloppify 通过 `delegate_task` 子代理编排盲审流程（最多可并行3个），完全无需人工参与。\n- **阶段边界处的模型切换**——执行类任务使用低成本模型，规划或评审则切换到高成本模型，且自动完成。\n- **上下文管理**——在不同任务之间自动重置上下文，确保智能体在长时间运行中保持专注。\n- **生命周期流转**——desloppify 通过 Control API 告诉 Hermes 接下来该做什么。\n\n### 如何试用\n\n**这需要使用 Hermes 的 Control API 分支**（[NousResearch\u002Fhermes-agent#1508](https:\u002F\u002Fgithub.com\u002FNousResearch\u002Fhermes-agent\u002Fpull\u002F1508)），目前尚未合入主仓库。若不采用此分支，Hermes 将作为普通工具运行，无法实现自主模型切换或自我提示功能。\n\n请将以下内容复制粘贴到您的智能体环境中（适用于全新安装及现有 Hermes 环境）：\n\n```\n安装支持 Hermes Control API 的 desloppify。Control API 目前位于一个分叉分支上，直到 NousResearch\u002Fhermes-agent#1508 合入主仓库之前都会如此。\n\n1. 如果 Hermes 已经安装（可通过 `which hermes` 检查），请将其切换到 Control API 分支：\n\n   cd $(pip show hermes-agent 2>\u002Fdev\u002Fnull | grep -i location | cut -d' ' -f2)\u002Fhermes-agent\n   git remote add peteromallet https:\u002F\u002Fgithub.com\u002Fpeteromallet\u002Fhermes-agent.git 2>\u002Fdev\u002Fnull || true\n   git fetch peteromallet\n   git checkout peteromallet\u002Ffeat\u002Fcontrol-api-autoreply\n   pip install -e .\n\n   重要提示：如果 Hermes 当前正在运行，请告知用户在此步骤后需以 `HERMES_CONTROL_API=1 hermes` 重启程序——新分支只有在重启后才会生效。\n\n   如果 Hermes 尚未安装，则直接克隆最新版本：\n\n   git clone -b feat\u002Fcontrol-api-auto","2026-03-16T21:55:18",{"id":170,"version":171,"summary_zh":172,"released_at":173},323548,"v0.9.9","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布重点提升了**计划生命周期的健壮性**——修复了工作流死锁、自动解决过时问题、强化了协调管道，并用显式的集群语义替换了启发式方法。此外，还包含了来自社区贡献者的**C++ 检测器作用域改进**，以及多项用户体验修复，以防止代理在周期中途卡住。\n\n---\n\n**366 个文件变更 | 16 次提交 | 5,367 项测试通过**\n\n## 重构与内部清理\n\n本次发布延续了收紧代码边界、减少间接调用的做法。在 366 个变更文件中，超过一半属于内部重构：\n\n- **集群与覆盖 → 子包** — `cluster_ops_display.py`、`cluster_ops_manage.py`、`cluster_ops_reorder.py`、`cluster_update.py` 和 `cluster_steps.py` 被移至 `cluster\u002F` 子包。同样地，`override_io.py`、`override_misc.py`、`override_skip.py` 以及 `override_resolve_*` 文件也被归入 `override\u002F` 子包。\n- **整体式集群访问器内联** — 删除了 `context_holistic\u002F` 中约 8 个小封装文件（如 `_clusters_complexity.py`、`_clusters_consistency.py`、`_clusters_dependency.py`、`_clusters_security.py` 等），并将其逻辑直接内联到调用处。\n- **计划同步管道提取** — 新增了 `sync\u002Fpipeline.py` 和 `sync\u002Fphase_cleanup.py`，将它们从单体工作流中剥离出来；同时将 `reconcile.py` 重命名为 `scan_issue_reconcile.py`，并将评审导入的协调逻辑移至 `sync\u002Freview_import.py`。\n- **问题语义集中化** — 新增了 `issue_semantics.py`（约 225 行），用于整合此前分散在多个模块中的分类逻辑。\n- **计划协调简化** — 通过将共享逻辑提取到引擎层，`scan\u002Fplan_reconcile.py` 的代码量由约 470 行缩减至约 200 行。\n- **工作队列快照大改** — `snapshot.py` 增加了约 470 行针对各阶段的分区与排序优化代码，取代了原有的临时性排序逻辑。\n- **移除 TypeScript 死代码** — 删除了 `helpers_blocks.py` 和 `helpers_line_state.py`（约 200 行未使用的气味检测辅助工具）。\n- **广泛的类型\u002F模式更新** — 在 130 多个文件中更新了问题类型引用和状态模式类型，以确保与新的问题语义保持一致。\n\n## 自动解决已删除文件的问题\n\n当扫描运行时，若之前标记的文件已不在磁盘上，其未决问题现会自动设置为“已自动解决”，并附带明确说明。此前，已删除文件的相关问题会一直悬而未决，无限期地污染工作队列——这在模块重组频繁的 Rust 项目中尤为棘手。此修复解决了 #412 问题。\n\n## 分类死锁修复\n\n修复了一个死锁问题：分类处于滞后期（周期中途有新评审问题到达），但因目标积压仍未完成，且目标解决又被阻塞，导致分类无法启动。此次修复能够检测到这种“目标积压尚未完成，分类却已滞后”的情况。","2026-03-13T19:47:06",{"id":175,"version":176,"summary_zh":177,"released_at":178},323549,"v0.9.8","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布新增了**完整的 C++ 和 Rust 语言插件**，引入了**两阶段评审评分机制**、**统一的问题生命周期状态**、**防作弊保障措施**，并带来了全面的分类验证、工作队列以及跨平台改进——同时持续进行代码质量优化，移除了 23 个兼容性封装层，并进一步收紧了整个代码库中的接口边界。\n\n---\n\n**609 个文件变更 | 78 次提交 | 5,266 个测试通过**\n\n## C++ 语言支持\n\nC++ 现已成为一个深度集成的语言插件，具备基于 Tree-sitter 的语法提取、结构分析以及工具辅助的安全扫描功能。该插件包括：\n\n- 从 C++ 源文件中提取**函数、类和头文件引用**\n- 通过 `compile_commands.json` 和 Makefile 项目中的 `#include` 图谱进行**依赖关系图分析**\n- 结合 cppcheck 集成与批量问题扫描，实现**结构与耦合阶段**分析\n- 利用 cppcheck 和 clang-tidy 的规范化结果进行**安全检测**\n- 提供**评审界面、测试覆盖率挂钩以及代码移动支持**\n- 包含 14 个测试文件，配有针对 CMake 和 Makefile 示例项目的测试夹具\n\n## Rust 语言支持\n\nRust 现在也实现了与其它语言插件完全对等的功能，新增了 13 个 Rust 特有的检测器、3 个自动修复工具，并深度集成了 Cargo 工具链：\n\n- 覆盖 6 个模块的**13 个检测器**：API 表面、Cargo 规则、安全性、异味、依赖关系及自定义规则\n- **3 个自动修复工具**：crate 导入、Cargo 特性、README 文档测试\n- **Cargo 工具集成**：clippy、cargo check、rustdoc\n- 具备 Rust 感知能力的**依赖关系图构建**，以及可识别内联 `#[cfg(test)]` 的**测试覆盖率映射**\n- 共包含 12 个测试文件，总计 117 个测试用例\n\n## 两阶段评审评分机制\n\n整体评审流程现被重构为两个明确的阶段：\n\n- **第一阶段 — 观察**：收集特征与缺陷，但不进行评分\n- **第二阶段 — 判断**：基于观察结果综合各项维度特征，再进行评分\n\n积极的观察记录现在会以带有完整来源信息（`added_at`、`source`、`positive: true`）的上下文洞察形式保留下来，取代以往短暂存在的“优势”标签。全新的 `context_schema.json` 文件定义了评审数据框架。\n\n## 统一的问题生命周期状态\n\n`DEFERRED` 和 `TRIAGED_OUT` 被添加到 `Status` 枚举中，以确保问题状态始终权威有效。此前，临时搁置或已分类剔除的问题会导致 `issue.status` 仍显示为“开放”，从而造成计划视图和队列界面中的计数重复。此次更新还包括扫描对齐时的状态迁移、新的状态图标、更新后的计划渲染，以及默认启用 `--retrospective True` 后向查看历史记录的功能，方便评审人员回顾过往情况。\n\n## 防作弊保障措施\n\n两项针对性修复措施旨在防止 AI 代理锁定评分目标：\n\n- 在惩罚消息中**屏蔽具体数值目标**——将“匹配目标 95.0”替换为“聚集于评分目标附近”，以避免代理推断并锚定到确切数值\n- 在第一条惩罚消息中直接呈现**盲审工作流**（之前","2026-03-12T22:25:46",{"id":180,"version":181,"summary_zh":182,"released_at":183},323550,"v0.9.5","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fpeteromallet\u002Fdesloppify\u002Fmain\u002Fassets\u002Fmascot-no-bg.png\" width=\"180\" alt=\"Desloppify吉祥物\">\n\u003C\u002Fp>\n\n本次发布新增了 **Julia 语言支持**，扩展了 tree-sitter 框架，将健康评分的权重调整为更偏向主观维度（现为 75\u002F25），并带来了广泛的改进，涵盖稳定性提升、分类流程可靠性增强、安全性加固以及针对不同平台的修复——同时进行了大规模的代码质量优化，减少了间接调用并移除了过度提取的部分。\n\n---\n\n**354+ 个文件变更 | 80+ 次提交 | 5,022 项测试通过**\n\n## Julia 语言支持\n\nJulia 现在已成为受支持的语言。初始插件框架包含了基于 tree-sitter 的解析与导入解析功能，其架构与现有的 Python 和 TypeScript 插件保持一致。\n\n## Tree-sitter 框架扩展\n\ntree-sitter 框架新增了功能规范和功能导入解析器——这些是新的扩展点，语言插件可以利用它们以声明式方式定义分析规则。这些新功能为 Julia 插件提供了基础，并将简化未来新增语言的支持工作。\n\n## 审查发现的裁决机制\n\n审查子代理在构建批次时，现在能够以结构化的方式访问需要人工判断的发现。每个检测器的发现数量会嵌入到批次中，关切信号会携带指纹和发现 ID，而 CLI 则会渲染探索命令（`desloppify show \u003Cdet> --no-budget`）。关切信号的数量上限从 8 提升至 30，并增加了溢出时的提示信息；驳回路径也简化为仅需填写两个字段。\n\n## 评分权重调整\n\n评分权重调整为 **75% 主观 \u002F 25% 机械**。其中，主观的设计质量——如命名、内聚性和抽象层次等评审维度——现已成为健康评分的主要驱动因素。所有文档、报告字符串、测试用例和快照均已更新以匹配这一变化。\n\n## 需要人工判断的检测器不再参与自动聚类\n\n标记为 `needs_judgment` 的检测器（例如 `structural`、`dict_keys`、`smells`、`responsibility_cohesion` 等）现在会在聚类分组键中返回 `None`。这意味着它们将 **作为机械性证据直接进入审查流程**，而不会被自动归入计划任务中。聚类策略也因此简化：针对需要人工判断的问题按文件、子类型和检测器进行特殊分组的做法已被完全移除，同时 `generate_description` 中未使用的参数也被一并清理。\n\n## 动态计划与队列体系重构\n\n`next` 命令现在会 **直接遵循动态计划**，而非独立计算优先级。队列系统经过了大幅重构：\n\n- **执行队列与待处理队列** 现在是独立的界面——`next` 从执行队列（当前聚类中的工作）中获取任务，而待处理队列则显示接下来的任务。\n- **队列生命周期阶段** 被明确持久化，从而清晰地展示当前处于扫描 → 分类 → 执行流程中的哪个环节。\n- **扫描被视为一级后置阶段** —— 队列系统能够识别并跟踪扫描后的…","2026-03-11T13:20:20"]