How rrusson/darkclippy works
DarkClippy is an ASP.NET chatbot that presents a Clippy-themed web experience and sends questions to a locally hosted Ollama model through Semantic Kernel. The main workflow accepts a question at the chat API, obtains a client keyed by requester IP, maintains per-client conversation context, and returns Markdown-rendered HTML. Startup also validates the configured service connection. The README documents the Ollama integration and Clippy.js capability; source excerpts do not establish the browser-side request wiring or connection-validation internals, so those links are kept limited.
Main entry points: ChatController.cs Chat API · ConnectionValidator.cs Connection validator · SemanticKernelClient.cs Session chat client · Program.cs ASP.NET app
Components 18
Web experience
- ASP.NET app
ClippyWeb/Program.cs - Chat page
ClippyWeb/Pages - Clippy assistant
ClippyWeb/wwwroot/js/clippy
Chat handling
- Chat API
ClippyWeb/Controllers/ChatController.cs - Request gate
ClippyWeb/Controllers/ChatController.cs - Markdown rendering
ClippyWeb/Controllers/ChatController.cs - Memory cache
AI integration
- Client factory
SemanticKernelHelper/ChatClientFactory.cs - Session chat client
SemanticKernelHelper/SemanticKernelClient.cs - Chat history
SemanticKernelHelper/SemanticKernelClient.cs - Semantic Kernel
SemanticKernelHelper/SemanticKernelClient.cs
Startup connectivity
- Connection validator
ClippyWeb/Util/ConnectionValidator.cs - Ping service
ClippyWeb/Util/PingService.cs - TCP client factory
ClippyWeb/Util/TcpClientFactory.cs - TCP client wrapper
ClippyWeb/Util/TcpClientWrapper.cs - Service contracts
SharedInterfaces
Other components
- Visitor
- Ollama service
Connections 21
- Visitor → Chat page: views
- Visitor → Chat API: submits question
- ASP.NET app → Chat API: maps controllers
- ASP.NET app → Chat page: maps pages
- Chat page → Clippy assistant: loads assets
- Chat API → Request gate: checks request
- Request gate → Memory cache: reads and writes lock
- Chat API → Client factory: gets client
- Client factory → Memory cache: caches clients
- Client factory → Session chat client: creates client
- Chat API → Session chat client: requests response
- Session chat client → Chat history: updates context
- Session chat client → Semantic Kernel: requests completion
- Semantic Kernel → Ollama service: streams completion
- Chat API → Markdown rendering: converts response
- Markdown rendering → Visitor: returns HTML
- ASP.NET app → Connection validator: validates startup connection
- Connection validator → Service contracts: uses contracts
- Connection validator → Ping service
- Connection validator → TCP client factory
- TCP client factory → TCP client wrapper: creates client