Implemented a generic alternative to Claude Code with the following features: Core Implementation: - Multi-LLM provider support (OpenAI compatible APIs) - Function calling for direct tool execution by LLM - Interactive REPL shell interface - MCP server mode for Claude Desktop integration - Shell executor with bash, read, write, list tools Architecture: - src/cli: Interactive REPL implementation - src/llm: LLM provider abstraction (OpenAI compatible) - src/shell: Shell execution engine with duct - src/mcp: MCP server for Claude Desktop - src/config: Configuration management Technical Stack: - Rust 2021 with tokio async runtime - clap for CLI framework - reqwest for HTTP client - duct for shell execution - rustyline for REPL interface This tool integrates with aigpt to form AIOS (AI Operating System), enabling AI-driven OS management and automation. Based on aigpt architecture for CLI and MCP patterns.
48 lines
943 B
TOML
48 lines
943 B
TOML
[package]
|
|
name = "aishell"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
authors = ["syui"]
|
|
description = "AI-powered shell automation tool - A generic alternative to Claude Code"
|
|
|
|
[lib]
|
|
name = "aishell"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "aishell"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# CLI and async (following aigpt pattern)
|
|
clap = { version = "4.5", features = ["derive"] }
|
|
tokio = { version = "1.40", features = ["rt", "rt-multi-thread", "macros", "io-std", "process", "fs"] }
|
|
async-trait = "0.1"
|
|
|
|
# HTTP client for LLM APIs
|
|
reqwest = { version = "0.12", features = ["json", "stream"] }
|
|
|
|
# Serialization
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
|
|
# Error handling
|
|
thiserror = "1.0"
|
|
anyhow = "1.0"
|
|
|
|
# Utilities
|
|
dirs = "5.0"
|
|
|
|
# Shell execution
|
|
duct = "0.13"
|
|
|
|
# Configuration
|
|
toml = "0.8"
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Interactive REPL
|
|
rustyline = "14.0"
|