Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

BoltDoggy/boli

Repository files navigation

boli

一个受 Claude Code 启发的智能命令行助手。

想了解更多背景?参见 产品介绍
想了解文档驱动开发在本项目中的实践?参见 Showcase 说明

功能特性

  • 单次模式:直接执行单次任务,无上下文保留
  • REPL 模式:持续对话,支持上下文和输入历史(上下键切换)
  • 工具调用:读文件、写文件、编辑、搜索、执行 Shell、向用户提问
  • 内置 Skills:/init/loop/commit 等快捷命令
  • 流式 TUI:基于 Ink 的终端交互界面

环境要求

  • Bun
  • pnpm
  • ANTHROPIC_API_KEY 环境变量(或放在 .env 文件中)

安装与使用

从 npm 安装

# 全局安装
npm install -g @boltdoggy/boli
# 单次模式
boli "帮我写一个快速排序"
# 单次模式,不注入项目上下文
boli --no-context "帮我写一个快速排序"
# REPL 模式
boli

不想全局安装时,也可以用 npx:

npx @boltdoggy/boli "帮我写一个快速排序"

从源码开发

# 安装依赖
pnpm install
# 从源码直接运行(无需构建)
bun run src/cmd/cli.ts "帮我写一个快速排序"
# 构建产物
pnpm run build
# 用 pnpm 链接本地包进行测试
pnpm link --global
boli "帮我写一个快速排序"

项目架构

src/
├── cmd/ # CLI 入口与参数解析
├── domain/ # 核心领域模型(message、session、skill、tool)
├── infra/ # 基础设施(LLM、文件系统、Shell、配置、持久化)
├── interactive/ # Ink 交互界面(REPL、用户输入、流式渲染)
└── skills/ # 内置 skill 实现
  • domain 层:纯业务逻辑,无框架依赖
  • infra 层:对接外部系统,隔离实现细节
  • interactive 层:负责所有终端交互

开发指引

# 从源码直接运行(无需构建)
bun run src/cmd/cli.ts "帮我写一个快速排序"
# 开发运行 REPL 模式
pnpm run dev
# 类型检查
pnpm exec tsc --noEmit
# 构建
pnpm run build

添加新 Skill

  1. src/domain/skill.ts 中定义 Skill 接口与元数据
  2. src/skills/ 下实现具体逻辑
  3. src/agent/skill-registry.ts 中注册

相关文档

文档 说明
docs/guides/product.md 产品定位与核心能力介绍
docs/guides/showcase.md 文档驱动开发实践说明
docs/requirements/cli-tool-requirements.md CLI 工具需求文档
docs/design/cli-tool-design.md CLI 工具架构设计
docs/adr/ 架构决策记录

当前状态

功能/变更 状态
CLI 工具 MVP(单次/REPL 模式、基础工具调用) ✅ 已完成
P1 增强(/init/loop、输入历史) ✅ 已完成
测试框架引入 ⬜ 待进行
打包分发 ⬜ 待进行

本仓库遵循严格的文档驱动开发流程,详见 CLAUDE.mddocs/guides/showcase.md

About

一个受 Claude Code 启发的智能命令行助手。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /