winwin-cli 是一套专为 AI 使用设计的命令行工具集,提供知识库检索、文档转换、技能管理等实用功能。
设计理念:
- 🤖 AI 优先 - 所有命令支持 JSON 输出,便于 AI 调用和解析
- 🎯 简单易用 - 清晰的命令结构,简洁的参数设计
- 🔧 可扩展 - 模块化架构,易于添加新功能
- 📦 零依赖安装 - 使用
uvx无需安装即可运行
基于 BM25 算法的全文检索系统,快速搜索你的文档。
- 支持 30+ 种文档格式(PDF、Office、Markdown、HTML 等)
- 中文分词支持(jieba)
- 多知识库管理
- 自动文档索引和更新
- JSON 输出,便于 AI 解析
将各种格式的文档转换为 Markdown 或纯文本。
- 支持的格式:PDF、Word、PowerPoint、Excel、图片(OCR)、音频、视频等
- 批量转换目录
- 保留目录结构
- 转换进度显示
从本地目录注册和安装 Claude Code 等AI 工具的技能。
- 本地技能注册 - 将本地技能目录注册到 winwin-cli
- 快速安装 - 使用简短名称从注册表安装技能
- 技能管理 - 列出、取消注册已注册的技能
- 从本地目录安装 - 支持直接从本地文件系统安装技能
- 智能路径识别 - 自动识别 URL、本地目录或技能名称
- 多平台支持 - Claude Code、OpenCode
- 自动解析元数据 - 从 SKILL.md 提取技能信息
为 AI 提供实时互联网搜索能力。
- 多引擎支持 - 默认 DuckDuckGo (免费),可选 Tavily (AI 优化)
- JSON 输出 - 结构化结果,便于 AI 解析
- 灵活配置 - 支持自定义查询上限和 API Key 注入
- 集成友好 - 非常适合作为 AI Agent 的搜索工具技能
- 自动解析元数据 - 从 SKILL.md 提取技能信息
方式一:使用 uvx(推荐,无需安装)
# 直接运行,无需安装
uvx winwin-cli --help
# 查看特定命令
uvx winwin-cli kb-search --help方式二:使用 uv 安装
# 安装 uv(如果未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 安装 winwin-cli
uv pip install winwin-cli
# 验证安装
winwin-cli --help方式三:从源码安装
# 克隆仓库
git clone https://github.com/winwin-inc/winwin-cli.git
cd winwin-cli
# 安装依赖
uv sync
# 激活虚拟环境
source .venv/bin/activate
# 运行命令
winwin-cli --help知识库检索:
# 添加文档到知识库
winwin-cli kb-search add my-kb ./docs
# 搜索文档
winwin-cli kb-search search my-kb "如何使用 Python"
# 列出所有知识库
winwin-cli kb-search list
# 索引知识库
winwin-cli kb-search index my-kb文档转换:
# 转换单个文件
winwin-cli convert document.docx
# 转换目录
winwin-cli convert ./docs
# 指定输出目录
winwin-cli convert ./docs -o ./markdown
# 只转换特定格式
winwin-cli convert ./docs --ext .pdf --ext .docx技能管理:
# 注册本地技能
winwin-cli skills register /path/to/skill
winwin-cli skills register ./my-skill --name custom-name
# 列出所有已注册的技能
winwin-cli skills list
# 从注册表安装(使用技能名称)
winwin-cli skills install skill-name
# 从本地目录直接安装(不注册)
winwin-cli skills install /path/to/local/skill
# 指定安装目标
winwin-cli skills install skill-name --to /target/project
# 指定平台
winwin-cli skills install skill-name --platform claude-code
# 取消注册
winwin-cli skills unregister skill-name
# JSON 格式输出(AI 调用)
winwin-cli skills list --json网络搜索:
# 基础搜索(使用 DuckDuckGo)
winwin-cli web-search search "Python 教程"
# 指定结果数量
winwin-cli web-search search "AI 新闻" --limit 10
# JSON 输出(AI 专用)
winwin-cli web-search search "winwin-cli" --json
# 使用 Tavily 引擎(需 API Key)
winwin-cli web-search search "最新技术" --provider tavily --api-key YOUR_KEY# 添加知识库
winwin-cli kb-search add my-kb ./docs --desc "我的文档"
# 添加并立即索引
winwin-cli kb-search add my-kb ./docs --init
# 搜索(JSON 输出)
winwin-cli kb-search search my-kb "查询词" --json
# 更新索引
winwin-cli kb-search index my-kb
# 查看知识库状态
winwin-cli kb-search status my-kb
# 查看知识库详细信息
winwin-cli kb-search info my-kb
# 启用/禁用知识库
winwin-cli kb-search enable my-kb
winwin-cli kb-search disable my-kb
# 删除知识库
winwin-cli kb-search remove my-kb
# 搜索所有启用的知识库
winwin-cli kb-search search "查询词"
# 限制结果数量
winwin-cli kb-search search my-kb "查询词" --limit 5注册技能:
# 注册单个技能
winwin-cli skills register /path/to/skill
# 批量注册(从包含多个技能的目录)
winwin-cli skills register /path/to/skills-collection
# 使用自定义名称注册
winwin-cli skills register /path/to/skill --name my-custom-name
# 技能目录结构
# 单个技能:
my-skill/
├── SKILL.md # 必需:技能定义文件
└── scripts/ # 可选:脚本目录
# 技能集合(批量注册):
skills-collection/
├── skill-a/SKILL.md
├── skill-b/SKILL.md
└── skill-c/SKILL.md列出技能:
# 列出所有已注册的技能
winwin-cli skills list
# JSON 格式输出
winwin-cli skills list --json取消注册:
# 取消注册技能
winwin-cli skills unregister skill-name查看技能信息:
# 显示技能详细信息(优先从注册表查找)
winwin-cli skills info skill-name安装技能:
# 从注册表安装(推荐)
winwin-cli skills install skill-name
# 从本地目录直接安装(不注册)
winwin-cli skills install /path/to/local/skill
# 指定安装目标
winwin-cli skills install skill-name --to /target/project
# 指定平台
winwin-cli skills install skill-name --platform claude-code
# 完整示例
winwin-cli skills install my-skill --to ./my-project --platform claude-code工作流程:
# 1. 开发技能
mkdir my-skill
echo "---\nname: my-skill\ndescription: My skill\n---\n" > my-skill/SKILL.md
# 2. 注册技能
winwin-cli skills register ./my-skill
# 3. 查看已注册的技能
winwin-cli skills list
# 4. 安装到项目
winwin-cli skills install my-skill --to ./my-project --platform claude-code技能格式要求:
技能目录必须包含 SKILL.md 文件:
my-skill/
├── SKILL.md # 必需:技能定义文件(包含 YAML 前置元数据)
├── scripts/ # 可选:脚本目录
└── assets/ # 可选:资源文件
示例 SKILL.md:
---
name: my-skill
description: 我的技能描述
version: 1.0.0
author: Your Name
---
# 技能使用说明
...批量注册技能集合:
owner/skills-repo/
├── category1/ # 分类目录
│ ├── skill-a/ # 具体技能目录
│ │ └── SKILL.md # 必需:技能定义文件
│ └── skill-b/
│ └── SKILL.md
├── category2/
│ └── skill-c/
│ └── SKILL.md
└── README.md
# 执行搜索
winwin-cli web-search search "查询词"
# 限制结果数量 (默认 5)
winwin-cli web-search search "查询词" --limit 10
# JSON 格式输出
winwin-cli web-search search "查询词" --json
# 指定搜索引擎 (duckduckgo, tavily)
winwin-cli web-search search "查询词" --provider tavily
# 提供 API Key (也可通过环境变量 TAVILY_API_KEY)
winwin-cli web-search search "查询词" --provider tavily --api-key YOUR_TOKEN
# 列出所有可用的搜索引擎后端
winwin-cli web-search providers
# 执行网页抓取 (转换为 Markdown)
winwin-cli web-search fetch https://example.com
# 抓取并保存到文件
winwin-cli web-search fetch https://example.com -o article.md
# 使用 Tavily AI 提取引擎 (效果更佳)
winwin-cli web-search fetch https://example.com --provider tavilywinwin-cli/
├── src/winwin_cli/ # 源代码
│ ├── cli.py # 主入口
│ ├── convert/ # 文档转换模块
│ │ ├── __init__.py
│ │ └── cli.py # convert 命令
│ ├── skills/ # 技能管理模块
│ │ ├── __init__.py
│ │ └── cli.py # skills 命令(从 GitHub 仓库安装)
│ ├── kb_search/ # 知识库检索模块
│ │ ├── cli.py # kb-search 命令组
│ │ ├── config.py # 配置管理
│ │ ├── indexer.py # 文档索引
│ │ ├── search.py # 搜索引擎
│ │ ├── models.py # 数据模型
│ │ ├── markitdown.py # 文档转换
│ │ └── commands/ # 子命令实现
│ │ ├── add.py
│ │ ├── remove.py
│ │ ├── index.py
│ │ ├── search.py
│ │ ├── list.py
│ │ ├── enable.py
│ │ ├── disable.py
│ │ ├── status.py
│ │ └── info.py
│ └── web_search/ # 网络搜索模块
│ ├── cli.py # web-search 命令组
│ └── providers.py # 搜索引擎后端
├── tests/ # 测试文件
│ ├── test_convert.py
│ ├── test_kb_search_*.py
│ ├── test_skills.py
│ └── test_web_search.py
├── docs/ # 文档
├── pyproject.toml # 项目配置
├── CLAUDE.md # Claude Code 开发指南
└── README.md # 本文件
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 克隆仓库
git clone https://github.com/winwin-inc/winwin-cli.git
cd winwin-cli
# 安装依赖
uv sync
# 激活虚拟环境
source .venv/bin/activate# 运行所有测试
uv pytest
# 运行特定测试文件
uv pytest tests/test_skills.py
# 显示详细输出
uv pytest -v
# 显示测试覆盖率
uv pytest --cov=winwin_cli# 构建分发包
uv build
# 发布到 PyPI(需要凭据)
uv publish
# 或使用 twine
pip install twine
twine upload dist/*项目遵循以下代码规范:
- 使用 Click 进行 CLI 开发
- 遵循 PEP 8 代码风格
- 使用类型注解(Type Hints)
- 编写完整的文档字符串
- 保持测试覆盖率 > 80%
- 创建新模块目录:
src/winwin_cli/my_command/ - 创建
cli.py实现命令 - 创建
__init__.py导出命令 - 在
src/winwin_cli/cli.py中注册命令 - 编写测试
tests/test_my_command.py
欢迎贡献!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m '✨ feat: add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启 Pull Request
提交规范:
使用约定式提交格式(Conventional Commits):
feat:新功能fix:Bug 修复docs:文档更新style:代码格式refactor:重构test:测试相关chore:构建过程或辅助工具
本项目采用 MIT 许可证。
# 添加项目文档
winwin-cli kb-search add project-docs ./docs --init
# AI 可以快速查询
winwin-cli kb-search search project-docs "如何配置 API" --json# 转换所有 Office 文档为 Markdown
winwin-cli convert ./documents --ext .docx --ext .pptx --ext .xlsx# 为团队项目安装标准技能
winwin-cli skills install vega-lite-charts ./team-project --platform claude-code
winwin-cli skills install winwin-cli ./team-project --platform claude-code用 ❤️ 构建,专为 AI 设计