osojicode/osoji
GitHub: osojicode/osoji
一款利用 LLM 语义分析自动检测代码库中死代码、过时文档及潜在 bug 的代码库清理工具。
Stars: 2 | Forks: 0
# osoji
**你代码库的垃圾收集器**
[](https://pypi.org/project/osojicode/)
[](https://pypi.org/project/osojicode/)
[](https://github.com/osojicode/osoji/blob/main/LICENSE)
[](https://github.com/osojicode/osoji/actions/workflows/ci.yml)
[](https://scorecard.dev/viewer/?uri=github.com/osojicode/osoji)
[](https://www.bestpractices.dev/projects/12362)
## 它的功能
osoji 会审查你的代码库,查找死代码、过时的文档、具有误导性的注释以及语义矛盾。它会生成结构化、可操作的审计结果——并附带 agent skill 文件,可自动执行整个“分类-修复-反馈”闭环。不要再把时间浪费在处理项目中堆积的垃圾上了。
## 快速开始
```
pip install osojicode
export ANTHROPIC_API_KEY=your-key-here
osoji audit .
```
BYOK(自带密钥)——你直接向你的 LLM 提供商付费。除了 API 调用外,没有任何数据会离开你的机器。
## Agent 工作流
osoji 附带了内置的 skill 文件,这些文件教导 AI 编码 agent 如何端到端地处理审计结果:
1. **审计** — `osoji audit .` 扫描你的代码库
2. **分类** — 你的 agent 将每个发现分类为真阳性、假阳性或信息性内容
3. **修复** — 你的 agent 为已确认的问题应用修复并运行测试
4. **改进** — 你的 agent 针对 osoji 的假阳性和漏报提交 GitHub issue,从而为所有人改进检测效果
### 运行 skills
**Claude Code**(斜杠命令):
```
/osoji-sweep # Full end-to-end: audit, triage, fix, file issues
/osoji-triage # Read-only triage: classify findings, produce report
```
**其他 agent** — 将 skill 内容通过管道传递到你的 agent 提示词中:
```
osoji skills show osoji-sweep | pbcopy # macOS
osoji skills show osoji-sweep | clip # Windows
osoji skills list # See all available skills
```
### 内置 skills
- **osoji-sweep** — 审计,对每个发现进行分类,修复真阳性,提交 GitHub issue 以改进 pipeline
- **osoji-triage** — 对发现进行分类并生成结构化报告,而不修改任何文件
### 改进检测
使用 osoji 的人越多,它就越智能。当你的 agent 发现假阳性或发现 osoji 遗漏了某些内容时,skill 文件会帮助它自动提交一个结构化的 issue。这些 issue 会为所有人改进检测效果——包括你在下次审计时。
## 它能发现什么
- **死符号** — 未使用的导出、无法访问的代码
- **死参数** — 没有被任何调用者传递的函数参数
- **过时的文档** — 与其描述的代码产生偏差的文档
- **具有误导性的注释** — 过时的注释、不准确的 docstring
- **潜在 bug** — 未检查的返回值、类型混淆模式
- **契约违规** — 跨文件破坏的隐式字符串契约
- **未生效的配置** — 声明了但从未执行的配置字段
- **未使用的依赖** — 已列出但从未导入的包
- **死 CI/CD** — 过时的 pipeline 作业、未使用的 Makefile 目标
- **孤立文件** — 从任何入口点都无法访问的源文件
## 工作原理
osoji 生成影子文档以构建代码库的语义模型,然后将该模型与现有文档和代码结构进行比较。它使用分层的 LLM 分析——廉价模型用于过滤,昂贵模型用于深度验证——并生成 agent 和人类都可以采取行动的结构化 JSON 结果。分析是语义上的,而非纯粹基于 AST 的,因此它适用于任何语言。AST 插件可以增强受支持语言(Python、TypeScript)的检测效果。
## 命令
| 命令 | 描述 |
|---------|-------------|
| `osoji audit .` | 扫描死代码、过时文档和语义问题 |
| `osoji shadow .` | 生成影子文档 |
| `osoji check .` | 检查过时或缺失的影子文档 |
| `osoji diff` | 显示源代码更改对文档的影响 |
| `osoji stats .` | 源代码与影子文档的 token 统计信息 |
| `osoji report .` | 以不同的格式重新渲染上次审计 |
| `osoji export .` | 导出 observatory bundle |
| `osoji push` | 将 bundle 推送到 osoji-teams |
| `osoji skills list` | 列出内置的 agent skill 文件 |
| `osoji config show` | 检查已解析的配置 |
| `osoji hooks install` | 管理 git hooks |
| `osoji safety check` | Pre-commit 安全检查 |
使用 `osoji --help` 获取完整选项。
## 配置
osoji 是 BYOK(自带密钥)。它默认使用 Anthropic,但也支持 OpenAI、Google 和 OpenRouter。
设置你的 API 密钥即可开始:
```
export ANTHROPIC_API_KEY=your-key-here
```
按命令切换提供商:
```
osoji audit . --provider openai --model gpt-5.2
osoji audit . --provider google --model gemini-2.0-flash
```
或者在 TOML 中配置默认值:
```
# ~/.config/osoji/config.toml (全局)
# .osoji.local.toml (项目级, gitignored)
default_provider = "openai"
[providers.openai]
small = "gpt-5-mini"
medium = "gpt-5.2"
large = "gpt-5.4"
```
支持的提供商凭证:`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, `OPENROUTER_API_KEY`
配置优先级(从高到低):
1. CLI 标志 (`--provider`, `--model`)
2. 环境变量 (`OSOJI_PROVIDER`, `OSOJI_MODEL`)
3. `.osoji.local.toml`(按项目)
4. `~/.config/osoji/config.toml`(全局)
5. 内置默认值
运行 `osoji config show` 以检查生效的策略。
## 要求
- Python 3.11+
- 一个 LLM API 密钥(推荐使用 Anthropic,也支持 OpenAI 和 Google)
## 链接
- 网站:[osojicode.ai](https://osojicode.ai)
- PyPI:[pypi.org/project/osojicode](https://pypi.org/project/osojicode/)
- 问题:[github.com/osojicode/osoji/issues](https://github.com/osojicode/osoji/issues)
## 安全
要报告安全漏洞,请参阅 [SECURITY.md](SECURITY.md)。
## 许可证
Apache License 2.0。有关全文,请参阅 [LICENSE](LICENSE)。
## 行为准则
本项目遵循 [Contributor Covenant](CODE_OF_CONDUCT.md)。
标签:AI编程助手, IPv6支持, LNA, Python, Python安全, SOC Prime, 云安全监控, 开发工具, 无后门, 死代码检测, 自动化payload嵌入, 逆向工具, 静态分析