Skip to content

Commit 210d6d5

Browse files
author
OpenSIN-AI Team
committed
Add OpenSIN-AI CLI, Code, Platform, and Overview documentation
1 parent 95e336f commit 210d6d5

6 files changed

Lines changed: 673 additions & 5 deletions

File tree

.vitepress/config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ export default defineConfig({
2929
{ text: 'Troubleshooting', link: '/docs/guide/troubleshooting' },
3030
{ text: 'Changelog', link: '/docs/guide/changelog' },
3131
{ text: 'OpenSIN Code', link: '/docs/guide/opensin-code' },
32+
{ text: 'OpenSIN-AI CLI (Rust)', link: '/docs/guide/opensin-ai-cli' },
33+
{ text: 'OpenSIN-AI Code (Python)', link: '/docs/guide/opensin-ai-code' },
3234
{ text: 'Rust Engine', link: '/docs/guide/opensin-code-rust-engine' },
35+
{ text: 'OpenSIN-AI Platform', link: '/docs/guide/opensin-ai-platform' },
3336
],
3437
},
3538
{

docs/guide/opensin-ai-cli.md

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
# OpenSIN-AI CLI — AI Coding Assistant in Rust
2+
3+
OpenSIN-AI CLI ist der hochperformante, speicher-sichere AI Coding Assistant der OpenSIN-AI Organisation. Komplett in Rust implementiert für maximale Geschwindigkeit und Sicherheit.
4+
5+
> **Repository:** [OpenSIN-AI/opensin-ai-cli](https://github.com/OpenSIN-AI/opensin-ai-cli)
6+
>
7+
> **Umfang:** 70 Dateien | 34.601 Zeilen Rust-Code | 9 Crates
8+
9+
---
10+
11+
## Architektur
12+
13+
OpenSIN-AI CLI ist als Rust Workspace mit Cargo organisiert:
14+
15+
```
16+
opensin-ai-cli/
17+
├── Cargo.toml # Workspace Definition
18+
├── Cargo.lock # Dependency Lockfile
19+
├── README.md # Projektdokumentation
20+
├── CONTRIBUTING.md # Contributing Guidelines
21+
├── LICENSE # Apache 2.0
22+
└── crates/
23+
├── opensin-cli/ # CLI Entry Point (6 Dateien)
24+
│ └── src/
25+
│ ├── main.rs # CLI Entry, REPL, OAuth Login
26+
│ ├── app.rs # SessionApp, Slash Command Handling
27+
│ ├── args.rs # Clap Argument Parsing
28+
│ ├── render.rs # Terminal Renderer, Markdown, Spinners
29+
│ ├── init.rs # Repo Initialization, Auto-detection
30+
│ └── input.rs # Vim-mode Terminal Line Editor
31+
├── api/ # API Layer (11 Dateien)
32+
│ └── src/
33+
│ ├── lib.rs # Module Exports
34+
│ ├── client.rs # ProviderClient Abstraction
35+
│ ├── types.rs # StreamEvent, MessageRequest
36+
│ ├── error.rs # ApiError Enum
37+
│ ├── sse.rs # SSE Parser
38+
│ └── providers/
39+
│ ├── mod.rs # Provider Trait, Model Registry
40+
│ ├── opensin_provider.rs # OpenSIN API Client
41+
│ └── openai_compat.rs # OpenAI/xAI kompatible Endpunkte
42+
├── runtime/ # Runtime Layer (18 Dateien)
43+
│ └── src/
44+
│ ├── lib.rs # Module Exports
45+
│ ├── conversation.rs # Core Agent Loop
46+
│ ├── config.rs # Multi-source Config Loading
47+
│ ├── session.rs # Session Persistence
48+
│ ├── compact.rs # Session Compaction Algorithm
49+
│ ├── bash.rs # Bash Execution with Sandbox
50+
│ ├── file_ops.rs # Read/Write/Edit/Glob/Grep
51+
│ ├── oauth.rs # OAuth Flow with PKCE
52+
│ ├── sandbox.rs # Linux Namespace Isolation
53+
│ ├── hooks.rs # Pre/Post Tool Hooks
54+
│ ├── prompt.rs # System Prompt Building
55+
│ ├── mcp.rs # MCP Tool Naming
56+
│ ├── mcp_client.rs # Transport Abstraction
57+
│ ├── mcp_stdio.rs # JSON-RPC over stdio
58+
│ ├── permissions.rs # Permission Mode Enforcement
59+
│ ├── remote.rs # Upstream Proxy Support
60+
│ ├── usage.rs # Token Usage Tracking
61+
│ ├── sse.rs # SSE Event Parsing
62+
│ ├── bootstrap.rs # Bootstrap Phases
63+
│ └── json.rs # Custom JSON Parser/Renderer
64+
├── tools/ # Tools Layer
65+
│ └── src/lib.rs # 19 Built-in Tools
66+
├── commands/ # Commands Layer
67+
│ └── src/lib.rs # 27+ Slash Commands
68+
├── plugins/ # Plugin System
69+
│ └── src/
70+
│ ├── lib.rs # Full Plugin System
71+
│ └── hooks.rs # Hook Execution
72+
├── lsp/ # LSP Layer (5 Dateien)
73+
│ └── src/
74+
│ ├── lib.rs # LSP Re-exports
75+
│ ├── client.rs # JSON-RPC over stdio
76+
│ ├── manager.rs # Multi-server Manager
77+
│ ├── types.rs # LSP Context Enrichment
78+
│ └── error.rs # LSP Error Types
79+
├── server/ # Server Layer
80+
│ └── src/lib.rs # Axum HTTP API, SSE Streaming
81+
└── compat-harness/ # Compat-Harness
82+
└── src/lib.rs # Upstream Source Extraction
83+
```
84+
85+
---
86+
87+
## Core Engine
88+
89+
### API Layer
90+
91+
Der API Layer abstrahiert den Zugriff auf verschiedene LLM-Provider:
92+
93+
```rust
94+
// Provider Trait
95+
pub trait Provider {
96+
async fn stream(&self, request: MessageRequest) -> Result<StreamEvent>;
97+
fn models(&self) -> Vec<ModelInfo>;
98+
}
99+
100+
// OpenSIN Provider
101+
let client = OpenSinApiClient::new(api_key, base_url);
102+
let events = client.stream(request).await?;
103+
```
104+
105+
### Unterstützte Provider
106+
107+
- **OpenSinApi** — OpenSIN API via OCI Proxy
108+
- **OpenAICompat** — OpenAI/xAI kompatible Endpunkte
109+
110+
### Runtime Layer
111+
112+
#### Core Agent Loop
113+
114+
```rust
115+
let mut conversation = Conversation::new(config);
116+
loop {
117+
let response = client.stream(conversation.messages()).await?;
118+
conversation.add_assistant(response);
119+
120+
for tool_call in response.tool_calls {
121+
let result = tools.execute(&tool_call).await?;
122+
conversation.add_tool_result(tool_call.id, result);
123+
}
124+
}
125+
```
126+
127+
#### Session Compaction
128+
129+
Der Compaction-Algorithmus reduziert den Kontext wenn das Token-Limit erreicht wird:
130+
131+
1. **Micro-Compact** — Einzelne Tool-Aufrufe zusammenfassen
132+
2. **Session Memory Compact** — Ältere Nachrichten komprimieren
133+
3. **Full Compact** — Gesamte Konversation zusammenfassen
134+
135+
---
136+
137+
## Built-in Tools (19)
138+
139+
| Tool | Beschreibung |
140+
|------|-------------|
141+
| BashTool | Shell Command Execution |
142+
| ReadFileTool | Datei lesen |
143+
| WriteFileTool | Datei schreiben |
144+
| EditFileTool | Datei bearbeiten (Suchen/Ersetzen) |
145+
| GlobSearchTool | Datei-Globbing |
146+
| GrepSearchTool | Text-Suche |
147+
| WebFetchTool | URL-Inhalte abrufen |
148+
| WebSearchTool | Websuche |
149+
| TodoWriteTool | Todo-Liste verwalten |
150+
| SkillTool | Skill-Ausführung |
151+
| AgentTool | Sub-Agent spawnen |
152+
| ToolSearchTool | Deferred Tool Discovery |
153+
| NotebookEditTool | Jupyter Notebook bearbeiten |
154+
| SleepTool | Verzögerung |
155+
| BriefTool | Session-Zusammenfassung |
156+
| ConfigTool | Konfiguration (internal) |
157+
| StructuredOutputTool | Strukturierte Ausgabe |
158+
| REPLTool | REPL VM (internal) |
159+
| PowerShellTool | PowerShell Execution |
160+
161+
---
162+
163+
## CLI Layer
164+
165+
Der Rust CLI bietet einen vollständigen REPL-Modus:
166+
167+
```bash
168+
# Interaktiver Modus
169+
opensin-ai
170+
171+
# Mit Prompt
172+
opensin-ai "Erkläre die Codebasis"
173+
174+
# Non-interactive
175+
opensin-ai --print "Review this file"
176+
177+
# Mit Model
178+
opensin-ai --model opus "Analyse this"
179+
```
180+
181+
### Features
182+
183+
- **REPL** — Interaktive Eingabe mit History
184+
- **Vim-Mode** — Vim-style Line Editor
185+
- **Markdown Rendering** — Syntax Highlighting, Code Blocks
186+
- **Spinner** — Animierte Ladeanzeige
187+
- **Slash Commands** — 27+ integrierte Befehle
188+
189+
---
190+
191+
## Plugin System
192+
193+
Plugins können Hooks, Commands, Agents und Skills registrieren:
194+
195+
```json
196+
{
197+
"name": "opensin-mein-plugin",
198+
"version": "1.0.0",
199+
"hooks": {
200+
"PreToolUse": [
201+
{
202+
"matcher": "Bash",
203+
"command": "python3 ${OPENSIN_PLUGIN_ROOT}/hooks/validate.py"
204+
}
205+
]
206+
}
207+
}
208+
```
209+
210+
---
211+
212+
## Schnellstart
213+
214+
```bash
215+
# Repository klonen
216+
git clone https://github.com/OpenSIN-AI/opensin-ai-cli.git
217+
cd opensin-ai-cli
218+
219+
# Bauen
220+
cargo build --release
221+
222+
# Tests ausführen
223+
cargo test
224+
225+
# CLI starten
226+
cargo run --bin opensin-ai
227+
```
228+
229+
---
230+
231+
## Installation
232+
233+
### Von Source
234+
```bash
235+
cargo install --path crates/opensin-cli --locked
236+
```
237+
238+
### Pre-built Binary
239+
```bash
240+
./target/release/opensin-ai
241+
```
242+
243+
---
244+
245+
*Zuletzt aktualisiert: 2026-04-07 | OpenSIN-AI*

0 commit comments

Comments
 (0)