Content
# Qingzhu v0.2.0

## Project Introduction
Qingzhu (official name) is a text creation tool that primarily explores the application of AI in the field of text creation.
**Core Features**:
* **AI Intelligent Interaction**: Real-time dialogue with AI to assist in creation.
* **Chapter Management**: Create, edit, delete, and organize chapters.
* **Content Editor**: Powerful text editing features, AI operation friendly, slightly inferior user experience for non-technical users
* **Tool Calling**: Supports tool calling similar to vibecoding to solve problems. Currently, some functions are still being improved.
* **RAG Knowledge Base**: Allows AI to obtain relevant information to improve effectiveness.
## Technology Stack
### Frontend (TypeScript)
* **React**: One of the mainstream frontend frameworks
* **Redux**: Frontend state management library
* **Tailwind CSS**: CSS framework
* **monaco-editor**: Same editor as vscode
### Backend (python)
* **FastAPI**: Python server framework
* **LangChain**: Toolchain for building AI applications
* **LangGraph**: Graph-based AI workflow orchestration framework
* **ChromaDB**: Vector database providing semantic search and knowledge base management
## Languages
Date : 2026-02-14 11:56:11
Total : 134 files, 11085 codes, 1762 comments, 1932 blanks, all 14779 lines
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| TypeScript JSX | 56 | 5,413 | 329 | 676 | 6,418 |
| Python | 42 | 3,207 | 1,146 | 784 | 5,137 |
| TypeScript | 17 | 1,291 | 201 | 216 | 1,708 |
| Markdown | 7 | 775 | 0 | 201 | 976 |
| PostCSS | 4 | 180 | 18 | 29 | 227 |
| JavaScript | 4 | 78 | 44 | 12 | 134 |
| JSON | 1 | 78 | 0 | 1 | 79 |
| JSON with Comments | 1 | 29 | 19 | 7 | 55 |
| Ignore | 1 | 20 | 5 | 5 | 30 |
| HTML | 1 | 14 | 0 | 1 | 15 |
## Project Structure(2026.1.26)
Frontend:
📦src
┣ 📂components # Component folder
┃ ┣ 📂agent ## Agent panel
┃ ┃ ┣ 📜AgentPanel.tsx ### 1. Agent main panel file
┃ ┃ ┣ 📂common
┃ ┃ ┣ 📂parameterTab ### 2. Parameter management panel
┃ ┃ ┣ 📂toolTab ### 3. Tool management panel
┃ ┃ ┣ 📜FileSelector.tsx
┃ ┃ ┗ 📜ModeManager.ts
┃ ┣ 📂aiprovider ## API provider panel
┃ ┃ ┗ 📜ProviderSettingsPanel.tsx
┃ ┣ 📂chapter ## Chapter bar
┃ ┃ ┣ 📜ChapterTreePanel.tsx ### 1. File main panel
┃ ┃ ┣ 📜ChapterContextMenu.tsx ### 1.1 File right-click menu
┃ ┃ ┗ 📜TreeRender.tsx ### 1.2 File tree rendering
┃ ┣ 📂chat ## Chat bar
┃ ┃ ┣ 📂header ### 1. Top bar
┃ ┃ ┣ 📂messagedisplay ### 2. Message box
┃ ┃ ┣ 📂input ### 3. Input box
┃ ┃ ┗ 📜ChatPanel.tsx ### 4. Main chat panel
┃ ┣ 📂editor
┃ ┃ ┣ 📂editor
┃ ┃ ┃ ┣ 📜CoreEditor.tsx
┃ ┃ ┃ ┣ 📜EditorArea.tsx
┃ ┃ ┃ ┗ 📜StatusBar.tsx
┃ ┃ ┣ 📂tab
┃ ┃ ┃ ┗ 📜CloseTabConfirmModal.tsx
┃ ┣ 📜EditorContextMenu.tsx
┃ ┗ 📜EditorPanel.tsx
┃ ┣ 📂others
┃ ┃ ┣ 📜ContextMenu.tsx
┃ ┃ ┣ 📜ErrorModal.tsx
┃ ┃ ┣ 📜Logo.css
┃ ┃ ┣ 📜Logo.tsx
┃ ┃ ┗ 📜UnifiedModal.tsx
┃ ┣ 📂rag
┃ ┃ ┗ 📜RagManagementPanel.tsx
┃ ┣ 📜LayoutComponent.tsx
┃ ┗ 📜SidebarComponent.tsx
┣ 📂context // Theme context
┃ ┗ 📜ThemeContext.tsx
┣ 📂store // redux state management
┃ ┣ 📜editor.ts
┃ ┣ 📜file.ts
┃ ┗ 📜store.ts
┣ 📂utils // Utility functions
┃ ┣ 📜DisplayNameHelper.ts
┃ ┣ 📜embeddingModelUtils.ts
┃ ┗ 📜httpClient.ts
┣ 📜App.css
┣ 📜App.tsx
┣ 📜css.d.ts
┣ 📜index.css
┗ 📜index.tsx
## Known Issues
The following are known issues that have not yet been resolved:
- **Imperfect Tool Calling Functionality**: Some tool functions are not coordinated with other functions (chapter bar, tab page, etc.)
- **Imperfect Chat Bar Functionality**: Currently, rollback and file path completion have not been implemented.
## Future Development Plan
### Short-Term Goals (v0.2.0)
- Improve tool calling functionality (2026/2/27)
- MCP client
- write_file tool
- What to do if there are too many tabs? Let's see where the two bars will be created first ()
- Other file operation tools ()
- Four file operation tools that need to support user intervention ()
- Rollback dialogue (1)
- Complete all chat bar functions
- Autocomplete file paths in the input bar ()
- System prompt construction, need to write the tags in the editor as well ()
- Sometimes, there are rendering problems, and the residual parts of several operation panels are rendered ———— using routing might be better ()
- Partial functional automated testing
### Mid-Term Goals (v0.3.0)
- Subagent, multi-agent system
- Visual workflow editor (like dify)
- More flexible AI chat function (like tavern???)
- Skills function
- Tool enhancement
- apply_diff allows similarity matching without line numbers, then successfully apply and remind of line number errors
- Add memory_edit tool, allowing AI to directly edit its own context (?)
- search_file & search_and_replace function optimization
- ask_user message display, can be changed to a tab like roo code
- Add a tool to read all questions under a directory (also need to optimize system prompt construction, when there are too many files, only display 100, and use tools to get the rest.)
- Explore other parameters of @tool(), especially description (need to read langchain/langgraph official documentation)
- search_file should return the path relative to the novel, not this: backend\data\novel\test.md:23
- Merge two search tools (?) Do not merge for now, merging will make the frontend editor display very troublesome
- Multiple AIs modify the file at the same time (?)
- bug ———— when the AI has used a tool before (e.g., write_file), and then closes the permission and instructions for using the tool. Once the AI tries to call this closed tool, it will report an error. But it is controllable. After the rendering crashes, open the message and delete the last call.
- Temporarily add tool results/get tool results in time and render/return state first when interrupting the return result, let the tool result message render first, and then stream render the interruption message ()
- Summarize dialogue history () ———— There is a small problem, for example, the second to last message is retained, but it shows that it was not sent to the AI
- qwen3max, there is a problem with tool calling, it may be a model reason, or it may be a ChatTongyi problem, maybe changing to ChatQwen can solve it? ()
- Reduce the burden on AI tools (especially repetitive tool function documents and args_schema)
- Add a dedicated delete tool to avoid AI mixing
- Notify the provider to stop generating when interrupted? This needs to refer to other people's projects to see how it is implemented
- Built-in embedding model (llama-cpp-python)
- Add error handling and verification in each tool, and send it to the AI as a failure message ———— Avoid directly throwing errors, and do not let any try-exception wrap interrupt
### Long-Term Goals (v1.0.0)
- None for now
## Quick Start
### Installation & Startup
1. **Clone the repository**:
```bash
git clone git@github.com:FlickeringLamp/ai-novelist.git
cd ai-novelist
```
2. **Install frontend dependencies**:
Enter the frontend directory (`frontend/`) and install dependencies, build the frontend, and start:
```bash
cd frontend
npm install
npm run build
npm start
```
3. **Install backend dependencies**:
Create a virtual environment from the root directory (`ai-novelist`), activate it, and install backend dependencies, return to the root directory, and start:
```bash
python -m venv backend_env
backend_env\Scripts\activate
cd backend
pip install -r requirements.txt
cd ..
python main.py
```
4. **Access in browser**:
Access localhost:3000 in the browser
## Contributing
We welcome contributions of all kinds! If you find a bug, have a feature suggestion, or want to submit code, please feel free to participate through GitHub Issues or Pull Requests.
To maintain the healthy development of the project, please ensure that:
- The submitted code is compatible with the [MIT License](LICENSE)
- Avoid introducing code that is incompatible with the MIT License
Thank you for the support of every contributor!
## License
This project is licensed under the [MIT License](LICENSE).
---
## Acknowledgements
The development of this project is based on the `roo-code` project to a certain extent. We would like to express our sincere gratitude to the developers of `roo-code`.
The `roo-code` project is open source under the Apache License 2.0. According to its license requirements, we have included its original license statement in the project, which you can view in the [`LICENSE-roo-code.txt`](./LICENSE-roo-code.txt) file.
Connection Info
You Might Also Like
markitdown
Python tool for converting files and office documents to Markdown.
Fetch
Retrieve and process content from web pages by converting HTML into markdown format.
oh-my-opencode
Background agents · Curated agents like oracle, librarians, frontend...
chatbox
User-friendly Desktop Client App for AI Models/LLMs (GPT, Claude, Gemini, Ollama...)
continue
Continue is an open-source project for seamless server management.
semantic-kernel
Build and deploy intelligent AI agents with Semantic Kernel's orchestration...