重构入口诊断:把代码库坏味道(超长文件/深嵌套/超长函数/上帝对象)转成带定位、优先级与依赖顺序的重构计划(只读不自动改码)。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-refactor-insight
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:duyanta123/dsh-refactor-insight
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DSH 技能插件:把代码库的坏味道转成带定位、优先级和依赖顺序的可执行重构计划——结构健康体检,而非 diff 审查。
Turn codebase smells into an executable, priority-ordered refactoring plan.
能力(v0)
六条确定性坏味道规则(阈值均可参数覆盖,零依赖启发式):
- 超长文件(默认 > 400 行)
- 深嵌套(默认最大缩进 / 花括号深度 > 5)
- TODO/FIXME 密度(噪音指标,输出每千行计数)
- 长函数(Python 缩进块 / JS-TS 花括号配对 / Go 函数声明,函数体 > 80 行)
- 上帝对象(类方法数 > 10 或类体行数 > 300 / Go 接收者方法数)
- 高耦合模块(复用
arch-profile --deps输出,按入度/出度识别 hub 模块 + Tarjan 环检测) - 只输出计划、不自动改代码;高风险重构项由 LLM 标注、须人工确认。
脚本只给硬事实(确定性扫描),严重度 / 成本 / 建议动作由 LLM 精修真误报后标注推断。
快速开始
在 DSH 中使用
- 安装插件:
dsh plugin --profile web add github:duyanta123/dsh-refactor-insight- 发布 v0.1.0 tag 后,可改为
github:duyanta123/dsh-refactor-insight#v0.1.0锁定版本。
- 发布 v0.1.0 tag 后,可改为
- 使用:对 Agent 说「用 refactor-insight 体检 /path/to/repo」
- 输出:按
docs/refactor-plan-template.md生成REFACTOR-PLAN.md。
只跑诊断 CLI(零依赖,不经过 DSH 也能跑)
# 六条规则诊断
node scripts/refactor-smell.mjs <repo_path>
# 复用 arch-profile 的依赖输出做高耦合/环检测
node scripts/arch-profile.mjs <repo_path> --deps > deps.json
node scripts/refactor-smell.mjs <repo_path> --deps-json deps.json
主要参数:--max-lines、--max-func-lines、--max-nesting、--max-methods、--max-class-lines、--max-coupling、--max-depth、--include-dirs、--exclude-dirs。
示例输出(节选):
{
"language": "javascript/typescript",
"smells": [
{
"rule": "god-object",
"type": "god_object",
"path": "src/lib/GodService.js",
"name": "GodService",
"methods": 12,
"threshold": 10,
"severity": 2,
"cost": "M"
}
]
}
目录结构
dsh-refactor-insight/
├── package.json # npm 包 + dsh.bundle.patch
├── cordis.patch.yml # DSH bundle patch
├── plugin/index.js # ESM 入口,注册 skills/ 为技能根
├── skills/refactor-runbook/SKILL.md # 技能 frontmatter + 阶段执行 runbook
├── docs/refactor-plan-template.md # 输出报告骨架
├── scripts/arch-profile.mjs # 复用:probe/scan/deps/entry(零依赖)
├── scripts/refactor-smell.mjs # 坏味道诊断器(六条规则,--deps-json 复用 arch-profile deps)
└── test/ # node --test 测试 + fixtures
本地开发
- profile 的 package.json 加
"dsh-refactor-insight": "file:<本地路径>/dsh-refactor-insight",bundles 加"dsh-refactor-insight"。 - 测试:
npm test - 打包检查:
npm pack --dry-run
输出
REFACTOR-PLAN.md:结构化重构计划(按docs/refactor-plan-template.md骨架)
链接
同类插件
strukto-ai/mirage#dsh★ 3600
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 302
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
ZSeven-W/dsh-ios★ 275
在 DSH 对话中运行 iOS 模拟器与 USB 连接的真机:21 个 agent 工具,可启动设备、构建运行 Xcode 工程、按无障碍标识 / OCR 文本 / 列表行驱动 UI、读取统一日志并查看进程、backtrace 与内存泄漏,并附带可点按、拖拽、旋转的实时侧边栏画面。
lire1131/dsh-undo-savepoint★ 144
DSH 撤销/回退系统:配置变更自动存档,一键撤销/恢复/回退到任意版本,支持 WebUI 与离线 CLI/GUI 工具(DSH 启动失败也能救)。
Fishquito7/dsh-skill-mcp-panel★ 115
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
kanneiren/dsh-network-settings★ 108
可视化 DSH 进程在 Windows 或 WSL 上的网络链路(DNS/TCP/TLS/HTTP 分层探测),检测失效的代理配置,并提供带快照回滚的安全修复。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。