[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-rodrigopivi--Chatito":3,"tool-rodrigopivi--Chatito":64},[4,17,25,39,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":10,"last_commit_at":23,"category_tags":24,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":26,"name":27,"github_repo":28,"description_zh":29,"stars":30,"difficulty_score":10,"last_commit_at":31,"category_tags":32,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[33,34,35,36,14,37,15,13,38],"图像","数据工具","视频","插件","其他","音频",{"id":40,"name":41,"github_repo":42,"description_zh":43,"stars":44,"difficulty_score":45,"last_commit_at":46,"category_tags":47,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[14,33,13,15,37],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":45,"last_commit_at":54,"category_tags":55,"status":16},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74939,"2026-04-05T23:16:38",[15,33,13,37],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":45,"last_commit_at":62,"category_tags":63,"status":16},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70626,"2026-04-05T22:51:36",[15,14,13,36],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":80,"owner_twitter":80,"owner_website":80,"owner_url":81,"languages":82,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":99,"env_os":100,"env_gpu":101,"env_ram":101,"env_deps":102,"category_tags":108,"github_topics":109,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":120,"updated_at":121,"faqs":122,"releases":158},1393,"rodrigopivi\u002FChatito","Chatito","🎯🗯 Dataset generation for AI chatbots, NLP tasks, named entity recognition or text classification models using a simple DSL!","Chatito 是一款专为人工智能聊天机器人和自然语言处理（NLP）任务设计的开源数据集生成工具。在构建智能对话系统时，开发者往往需要大量多样化的训练语料来教模型理解用户意图，而人工编写这些例句不仅耗时，还容易因样本单一导致模型“过拟合”。Chatito 通过一套简洁的领域特定语言（DSL），让用户只需定义少量的语句模板和变量组合，即可自动批量生成成千上万条结构丰富、语义多样的训练数据，有效解决了数据匮乏和多样性不足的难题。\n\n这款工具非常适合 AI 开发者、数据科学家以及 NLP 研究人员使用，尤其是那些正在利用 Rasa、DialogFlow、Wit.ai 或 Watson 等平台构建机器人的团队。其核心技术亮点在于独特的 DSL 语法设计，它并非简单地随机拼接词汇，而是基于逻辑规则描述句子的组合可能性，从而在数据增强与可控性之间取得平衡。此外，Chatito 提供了便捷的在线集成开发环境（IDE）供用户即时预览效果，并支持 VS Code 语法高亮插件。它能直接将生成的数据导出为多种主流框架所需的格式，大幅降低了数据准备门槛，让创作者能更专注于模型逻辑本身。","# Chatito\n\n[![npm version](https:\u002F\u002Fbadge.fury.io\u002Fjs\u002Fchatito.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fchatito)\n[![CircleCI branch](\nhttps:\u002F\u002Fimg.shields.io\u002Fcircleci\u002Fproject\u002Fgithub\u002FRedSparr0w\u002Fnode-csgo-parser\u002Fmaster.svg\n)](https:\u002F\u002Fcircleci.com\u002Fgh\u002Frodrigopivi\u002Fworkflows\u002FChatito)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fchatito.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fchatito)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Frodrigopivi\u002FChatito.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fchatito)\n\n\n[![Alt text](screenshot.jpg?raw=true \"Screenshot of online IDE\")](https:\u002F\u002Frodrigopivi.github.io\u002FChatito\u002F)\n\n[Try the online IDE!](https:\u002F\u002Frodrigopivi.github.io\u002FChatito\u002F)\n\n## Overview\nChatito helps you generate datasets for training and validating chatbot models using a simple DSL.\n\nIf you are building chatbots using commercial models, open source frameworks or writing your own natural language processing model, you need training and testing examples. Chatito is here to help you.\n\nThis project contains the:\n- [Online chatito IDE](https:\u002F\u002Frodrigopivi.github.io\u002FChatito\u002F)\n- [Chatito DSL specification](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fblob\u002Fmaster\u002Fspec.md)\n- [DSL AST parser in pegjs format](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fblob\u002Fmaster\u002Fparser\u002Fchatito.pegjs)\n- [Generator implemented in typescript + npm package](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Ftree\u002Fmaster\u002Fsrc)\n\n### Chatito language\nFor the full language specification and documentation, please refer to the [DSL spec document](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fblob\u002Fmaster\u002Fspec.md).\n\n## Tips\n\n### Prevent overfit\n\n[Overfitting](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOverfitting) is a problem that can be prevented if we use Chatito correctly. The idea behind this tool, is to have an intersection between data augmentation and a description of possible sentences combinations. It is not intended to generate deterministic datasets that may overfit a single sentence model, in those cases, you can have some control over the generation paths only pull samples as required.\n\n### Tools and resources\n\n- [Visual Studio Code syntax highlighting plugin](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=nimfin.chatito) Thanks to [Yuri Golobokov](https:\u002F\u002Fgithub.com\u002Fnimf) for his [work on this](https:\u002F\u002Fgithub.com\u002Fnimf\u002Fchatito-vscode).\n\n- [AI Blueprints: How to build and deploy AI business projects](https:\u002F\u002Fbooks.google.com.pe\u002Fbooks?id=sR2CDwAAQBAJ) implements practical full chatbot examples using chatito at chapter 7.\n\n- [3 steps to convert chatbot training data between different NLP Providers](https:\u002F\u002Fmedium.com\u002F@benoit.alvarez\u002F3-steps-to-convert-chatbot-training-data-between-different-nlp-providers-fa235f67617c) details a simple way to convert the data format to non implemented adapters. You can use a generated dataset with providers like DialogFlow, Wit.ai and Watson.\n\n- [Aida-nlp](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002Faida) is a tiny experimental NLP deep learning library for text classification and NER. Built with Tensorflow.js, Keras and Chatito. Implemented in JS and Python.\n\n## Adapters\nThe language is independent from the generated output format and because each model can receive different parameters and settings, this are the currently implemented data formats, if your provider is not listed, at the Tools and resources section there is more information on how to support more formats.\n\nNOTE: Samples are not shuffled between intents for easier review and because some adapters stream samples directly to the file and it's recommended to split intents in different files for easier review and maintenance.\n\n### [Rasa](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa\u002F)\n[Rasa](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa\u002F) is an open source machine learning framework for automated text and voice-based conversations. Understand messages, hold conversations, and connect to messaging channels and APIs. Chatito can help you build a dataset for the [Rasa NLU](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa\u002Fnlu\u002Fabout\u002F) component.\n\nOne particular behavior of the Rasa adapter is that when a slot definition sentence only contains one alias, and that alias defines the 'synonym' argument with 'true', the generated Rasa dataset will map the alias as a synonym. e.g.:\n\n```\n%[some intent]('training': '1')\n    @[some slot]\n\n@[some slot]\n    ~[some slot synonyms]\n\n~[some slot synonyms]('synonym': 'true')\n    synonym 1\n    synonym 2\n```\n\nIn this example, the generated Rasa dataset will contain the `entity_synonyms` of `synonym 1` and `synonym 2` mapping to `some slot synonyms`.\n\n### [Flair](https:\u002F\u002Fgithub.com\u002Fzalandoresearch\u002Fflair)\n[Flair](https:\u002F\u002Fgithub.com\u002Fzalandoresearch\u002Fflair) A very simple framework for state-of-the-art NLP. Developed by Zalando Research. It provides state of the art [(GPT, BERT, RoBERTa, XLNet, ELMo, etc...)](https:\u002F\u002Fgithub.com\u002Fzalandoresearch\u002Fflair\u002Fblob\u002Fmaster\u002Fresources\u002Fdocs\u002FTUTORIAL_4_ELMO_BERT_FLAIR_EMBEDDING.md) pre trained embeddings for many languages that work out of the box. This adapter supports the `text classification` dataset in FastText format and the `named entity recognition` dataset in two column [BIO](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FInside%E2%80%93outside%E2%80%93beginning_(tagging)) annotated words, as documented at [flair corpus documentation](https:\u002F\u002Fgithub.com\u002Fzalandoresearch\u002Fflair\u002Fblob\u002Fmaster\u002Fresources\u002Fdocs\u002FTUTORIAL_6_CORPUS.md). This two data formats are very common and with many other providers or models.\n\nThe NER dataset requires a word tokenization processing that is currently done using a [simple tokenizer](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Ftree\u002Fmaster\u002Fsrc).\n\nNOTE: Flair adapter is only available for the NodeJS NPM CLI package, not for the IDE.\n\n### [LUIS](https:\u002F\u002Fwww.luis.ai\u002F)\n[LUIS](https:\u002F\u002Fwww.luis.ai\u002F) is part of Microsoft's Cognitive services. Chatito supports training a LUIS NLU model through its [batch add labeled utterances endpoint](https:\u002F\u002Fwestus.dev.cognitive.microsoft.com\u002Fdocs\u002Fservices\u002F5890b47c39e2bb17b84a55ff\u002Foperations\u002F5890b47c39e2bb052c5b9c09), and its [batch testing api](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fcognitive-services\u002FLUIS\u002Fluis-how-to-batch-test).\n\nTo train a LUIS model, you will need to post the utterance in batches to the relevant API for training or testing.\n\nReference issue: [#61](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F61)\n\n### [Snips NLU](https:\u002F\u002Fsnips-nlu.readthedocs.io\u002Fen\u002Flatest\u002F)\n[Snips NLU](https:\u002F\u002Fsnips-nlu.readthedocs.io\u002Fen\u002Flatest\u002F) is another great open source framework for NLU. One particular behavior of the Snips adapter is that you can define entity types for the slots. e.g.:\n\n```\n%[date search]('training':'1')\n   for @[date]\n\n@[date]('entity': 'snips\u002Fdatetime')\n    ~[today]\n    ~[tomorrow]\n```\n\nIn the previous example, all `@[date]` values will be tagged with the `snips\u002Fdatetime` entity tag.\n\n### Default format\nUse the default format if you plan to train a custom model or if you are writing a custom adapter. This is the most flexible format because you can annotate `Slots` and `Intents` with custom entity arguments, and they all will be present at the generated output, so for example, you could also include dialog\u002Fresponse generation logic with the DSL. E.g.:\n\n```\n%[some intent]('context': 'some annotation')\n    @[some slot] ~[please?]\n\n@[some slot]('required': 'true', 'type': 'some type')\n    ~[some alias here]\n\n```\n\nCustom entities like 'context', 'required' and 'type' will be available at the output so you can handle this custom arguments as you want.\n\n## NPM package\n\nChatito supports Node.js `>= v8.11`.\n\nInstall it with yarn or npm:\n```\nnpm i chatito --save\n```\n\nThen create a definition file (e.g.: `trainClimateBot.chatito`) with your code.\n\nRun the npm generator:\n\n```\nnpx chatito trainClimateBot.chatito\n```\n\nThe generated dataset should be available next to your definition file.\n\nHere is the full npm generator options:\n```\nnpx chatito \u003CpathToFileOrDirectory> --format=\u003Cformat> --formatOptions=\u003CformatOptions> --outputPath=\u003CoutputPath> --trainingFileName=\u003CtrainingFileName> --testingFileName=\u003CtestingFileName> --defaultDistribution=\u003CdefaultDistribution> --autoAliases=\u003CautoAliases>\n```\n\n - `\u003CpathToFileOrDirectory>` path to a `.chatito` file or a directory that contains chatito files. If it is a directory, will search recursively for all `*.chatito` files inside and use them to generate the dataset. e.g.: `lightsChange.chatito` or `.\u002FchatitoFilesFolder`\n - `\u003Cformat>` Optional. `default`, `rasa`, `luis`, `flair` or `snips`.\n - `\u003CformatOptions>` Optional. Path to a .json file that each adapter optionally can use\n - `\u003CoutputPath>` Optional. The directory where to save the generated datasets. Uses the current directory as default.\n- `\u003CtrainingFileName>` Optional. The name of the generated training dataset file. Do not forget to add a .json extension at the end. Uses `\u003Cformat>`_dataset_training.json as default file name.\n- `\u003CtestingFileName>` Optional. The name of the generated testing dataset file. Do not forget to add a .json extension at the end. Uses `\u003Cformat>`_dataset_testing.json as default file name.\n- `\u003CdefaultDistribution>` Optional. The default frequency distribution if not defined at the entity level. Defaults to `regular` and can be set to `even`.\n\n- `\u003CautoAliases>` Optional. The generaor behavior when finding an undefined alias. Valid opions are `allow`, `warn`, `restrict`. Defauls to 'allow'.\n\n### Author and maintainer\n[Rodrigo Pimentel](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Frodrigo-pimentel-550430b7\u002F)\n\nsr.rodrigopv[at]gmail\n\n","# Chatito\n\n[![npm 版本](https:\u002F\u002Fbadge.fury.io\u002Fjs\u002Fchatito.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fchatito)\n[![CircleCI 分支](\nhttps:\u002F\u002Fimg.shields.io\u002Fcircleci\u002Fproject\u002Fgithub\u002FRedSparr0w\u002Fnode-csgo-parser\u002Fmaster.svg\n)](https:\u002F\u002Fcircleci.com\u002Fgh\u002Frodrigopivi\u002Fworkflows\u002FChatito)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fchatito.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fchatito)\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Frodrigopivi\u002FChatito.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fchatito)\n\n\n[![替代文本](screenshot.jpg?raw=true \"在线 IDE 截图\")](https:\u002F\u002Frodrigopivi.github.io\u002FChatito\u002F)\n\n[尝试使用在线 IDE 吧！](https:\u002F\u002Frodrigopivi.github.io\u002FChatito\u002F)\n\n## 概述\nChatito 可以帮助您使用简单的 DSL 生成用于训练和验证聊天机器人模型的数据集。\n\n如果您正在使用商业模型、开源框架或自行编写自然语言处理模型来构建聊天机器人，那么您就需要训练和测试示例。Chatito 就能为您提供帮助。\n\n本项目包含以下内容：\n- [在线 Chatito IDE](https:\u002F\u002Frodrigopivi.github.io\u002FChatito\u002F)\n- [Chatito DSL 规范](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fblob\u002Fmaster\u002Fspec.md)\n- [DSL AST 解析器，采用 pegjs 格式](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fblob\u002Fmaster\u002Fparser\u002Fchatito.pegjs)\n- [基于 TypeScript 实现的生成器，并作为 npm 包发布](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Ftree\u002Fmaster\u002Fsrc)\n\n### Chatito 语言\n如需完整的语言规范及文档，请参阅 [DSL 规范文档](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fblob\u002Fmaster\u002Fspec.md)。\n\n## 提示\n\n### 预防过拟合\n\n过拟合是可以通过正确使用 Chatito 来有效预防的问题。该工具的核心理念在于：将数据增强与可能的句子组合描述相结合。它并非旨在生成确定性数据集，以免对单一句子模型造成过拟合；在这些情况下，您可以根据需要对生成路径进行一定程度的控制，仅按需提取样本。\n\n### 工具与资源\n\n- [Visual Studio Code 语法高亮插件](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=nimfin.chatito) 感谢 [Yuri Golobokov](https:\u002F\u002Fgithub.com\u002Fnimf) 对此插件的贡献，他为该插件的开发付出了大量努力（[GitHub 地址](https:\u002F\u002Fgithub.com\u002Fnimf\u002Fchatito-vscode)）。\n\n- [AI 蓝图：如何构建并部署 AI 业务项目](https:\u002F\u002Fbooks.google.com.pe\u002Fbooks?id=sR2CDwAAQBAJ) 在第 7 章中，详细介绍了利用 Chatito 构建实用且完整的聊天机器人案例。\n\n- [3 个步骤：在不同 NLP 提供商之间转换聊天机器人训练数据](https:\u002F\u002Fmedium.com\u002F@benoit.alvarez\u002F3-steps-to-convert-chatbot-training-data-between-different-nlp-providers-fa235f67617c) 详细阐述了将数据格式转换为未实现适配器的简单方法。您还可以使用由 DialogFlow、Wit.ai 和 Watson 等提供商生成的数据集。\n\n- [Aida-nlp](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002Faida) 是一款轻量级的实验性 NLP 深度学习库，专为文本分类和命名实体识别而设计。该库基于 Tensorflow.js、Keras 和 Chatito 构建而成，支持 JavaScript 和 Python 两种编程语言。\n\n## 适配器\n该语言与生成的输出格式无关，且由于每个模型可接收不同的参数和设置，因此目前我们已实现了以下几种数据格式。如果您的提供商未列在此处，可在“工具与资源”部分找到更多关于如何支持更多格式的信息。\n\n注意：为了便于审查，各意图之间的样本不会被打乱；此外，部分适配器会直接将样本流式传输至文件中，因此建议将意图拆分为多个文件，以便于更轻松地进行审查与维护。\n\n### [Rasa](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa\u002F)\n[Rasa](https:\u002F\u002Frasa.com\u002Fdocs\u002Frasa\u002F) 是一款开源的机器学习框架，适用于自动化文本和语音对话。它能够理解消息、维持对话，并与消息渠道和 API 进行连接。Chatito 可以帮助您为 Rasa NLU 组件构建数据集。\n\nRasa 适配器的一个特殊行为是：当某个槽位定义的句子仅包含一个别名，且该别名将“同义词”参数设置为“真”时，生成的 Rasa 数据集会将该别名映射为同义词。例如：\n\n```\n%[某些意图]('训练': '1')\n    @[某些槽位]\n\n@[某些槽位]\n    ~[某些槽位同义词]\n\n~[某些槽位同义词]('同义词': '真')\n    同义词 1\n    同义词 2\n```\n\n在本示例中，生成的 Rasa 数据集会包含 `entity_synonyms` 中的 `同义词 1` 和 `同义词 2`，它们分别映射到 `某些槽位同义词`。\n\n### [Flair](https:\u002F\u002Fgithub.com\u002Fzalandoresearch\u002Fflair)\n[Flair](https:\u002F\u002Fgithub.com\u002Fzalandoresearch\u002Fflair) 是一款极为简洁的先进 NLP 框架。该框架由 Zalando Research 开发，提供了多种语言的预训练嵌入向量，可直接开箱即用，涵盖 [(GPT、BERT、RoBERTa、XLNet、ELMo 等)](https:\u002F\u002Fgithub.com\u002Fzalandoresearch\u002Fflair\u002Fblob\u002Fmaster\u002Fresources\u002Fdocs\u002FTUTORIAL_4_ELMO_BERT_FLAIR_EMBEDDING.md)。此适配器支持使用 FastText 格式的“文本分类”数据集，以及采用两列标注的“命名实体识别”数据集——BIO 标签标注的词语，具体信息请参见 [Flair 语料库文档](https:\u002F\u002Fgithub.com\u002Fzalandoresearch\u002Fflair\u002Fblob\u002Fmaster\u002Fresources\u002Fdocs\u002FTUTORIAL_6_CORPUS.md)。这两种数据格式非常常见，且在众多其他提供商或模型中也广泛使用。\n\n命名实体识别数据集需要进行单词分词处理，目前这一过程由 [简单分词器](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Ftree\u002Fmaster\u002Fsrc) 完成。\n\n注意：Flair 适配器仅适用于 NodeJS 的 npm CLI 包，不适用于 IDE。\n\n### [LUIS](https:\u002F\u002Fwww.luis.ai\u002F)\n[LUIS](https:\u002F\u002Fwww.luis.ai\u002F) 是微软认知服务的一部分。Chatito 支持通过其 [批量添加带标签语句端点](https:\u002F\u002Fwestus.dev.cognitive.microsoft.com\u002Fdocs\u002Fservices\u002F5890b47c39e2bb17b84a55ff\u002Foperations\u002F5890b47c39e2bb052c5b9c09) 和 [批量测试 API](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Fazure\u002Fcognitive-services\u002FLUIS\u002Fluis-how-to-batch-test) 来训练 LUIS NLU 模型。\n\n要训练 LUIS 模型，您需要将语句分批提交至相关 API，以进行训练或测试。\n\n参考问题：[#61](https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F61)\n\n### [Snips NLU](https:\u002F\u002Fsnips-nlu.readthedocs.io\u002Fen\u002Flatest\u002F)\n[Snips NLU](https:\u002F\u002Fsnips-nlu.readthedocs.io\u002Fen\u002Flatest\u002F) 是另一款优秀的开源 NLU 框架。Snips 适配器的一个特殊行为是：您可以为槽位定义实体类型。例如：\n\n```\n%[日期搜索]('训练': '1')\n   for @[日期]\n\n@[日期]('实体': 'snips\u002F日期')\n    ~[今天]\n    ~[明天]\n```\n\n在上述示例中，所有 `@[日期]` 值都会被标记为 `snips\u002F日期` 实体标签。\n\n### 默认格式\n如果您计划训练自定义模型，或正在编写自定义适配器，请使用默认格式。此格式最为灵活，因为您可以为“槽位”和“意图”添加自定义实体参数，且这些参数都会出现在生成的输出中。例如，您还可以在 DSL 中加入对话\u002F响应生成逻辑。例如：\n\n```\n%[某些意图]('上下文': '某些注释')\n    @[某些槽位] ~[请？]\n\n@[某些槽位]('必填': 'true', '类型': '某种类型')\n    ~[此处可添加别名]\n\n```\n\n像“上下文”、“必填”和“类型”等自定义实体将在输出中可用，因此您可以根据自己的需求来处理这些自定义参数。\n\n## NPM 包\n\nChatito 支持 Node.js `>= v8.11`。\n\n通过 Yarn 或 npm 进行安装：\n```\nnpm i chatito --save\n```\n\n然后创建一个定义文件（例如：`trainClimateBot.chatito`），并在其中编写您的代码。\n\n运行 npm 生成器：\n```\nnpx chatito trainClimateBot.chatito\n```\n\n生成的数据集将位于您的定义文件旁边。\n\n以下是完整的 npm 生成器选项：\n```\nnpx chatito \u003CpathToFileOrDirectory> --format=\u003Cformat> --formatOptions=\u003CformatOptions> --outputPath=\u003CoutputPath> --trainingFileName=\u003CtrainingFileName> --testingFileName=\u003CtestingFileName> --defaultDistribution=\u003CdefaultDistribution> --autoAliases=\u003CautoAliases>\n```\n\n- `\u003CpathToFileOrDirectory>` 是 `.chatito` 文件或包含 Chatito 文件的目录的路径。如果该路径是一个目录，则会递归搜索其内部的所有 `*.chatito` 文件，并使用这些文件来生成数据集。例如：`lightsChange.chatito` 或 `.\u002FchatitoFilesFolder`。\n- `\u003Cformat>` 可选。支持 `default`、`rasa`、`luis`、`flair` 或 `snips`。\n- `\u003CformatOptions>` 可选。指向一个 .json 文件，各适配器可根据需要选择使用。\n- `\u003CoutputPath>` 可选。用于保存生成数据集的目录。默认情况下，将使用当前目录作为输出路径。\n- `\u003CtrainingFileName>` 可选。生成的训练数据集文件的名称。请务必在文件名后添加 `.json` 扩展名。默认文件名为 `\u003Cformat>_dataset_training.json`。\n- `\u003CtestingFileName>` 可选。生成的测试数据集文件的名称。请务必在文件名后添加 `.json` 扩展名。默认文件名为 `\u003Cformat>_dataset_testing.json`。\n- `\u003CdefaultDistribution>` 可选。若未在实体级别定义，默认频率分布。默认值为 `regular`，也可设置为 `even`。\n\n- `\u003CautoAliases>` 可选。当发现未定义的别名时的生成器行为。有效选项包括 `allow`、`warn`、`restrict`。默认值为 `allow`。\n\n### 作者与维护者\n[Rodrigo Pimentel](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Frodrigo-pimentel-550430b7\u002F)\n\nsr.rodrigopv[at]gmail","# Chatito 快速上手指南\n\nChatito 是一个用于生成聊天机器人训练和验证数据集的开源工具。它通过简单的领域特定语言（DSL）描述意图和实体组合，帮助开发者高效构建高质量的 NLP 训练数据，支持 Rasa、LUIS、Snips、Flair 等多种主流框架格式。\n\n## 环境准备\n\n- **操作系统**：Windows、macOS 或 Linux\n- **运行环境**：Node.js >= v8.11\n- **包管理器**：npm 或 yarn\n\n请确保已安装 Node.js。可通过以下命令检查版本：\n```bash\nnode -v\n```\n\n## 安装步骤\n\n使用 npm 全局安装 Chatito：\n\n```bash\nnpm i chatito --save\n```\n\n> 💡 国内用户推荐使用淘宝镜像加速安装：\n> ```bash\n> npm config set registry https:\u002F\u002Fregistry.npmmirror.com\n> npm i chatito --save\n> ```\n\n## 基本使用\n\n### 1. 创建定义文件\n\n新建一个 `.chatito` 后缀的文件，例如 `trainClimateBot.chatito`，内容如下：\n\n```chatito\n%[get_weather]('training': '1')\n    今天 @[city] 天气怎么样？\n    查询 @[city] 的天气\n\n@[city]\n    ~[beijing]\n    ~[shanghai]\n    ~[guangzhou]\n\n~[beijing]\n    北京\n    北京市\n\n~[shanghai]\n    上海\n    上海市\n\n~[guangzhou]\n    广州\n    广州市\n```\n\n### 2. 生成数据集\n\n在终端中运行以下命令生成训练数据：\n\n```bash\nnpx chatito trainClimateBot.chatito\n```\n\n默认会生成两个文件：\n- `default_dataset_training.json`（训练集）\n- `default_dataset_testing.json`（测试集）\n\n### 3. 指定输出格式（可选）\n\n若需生成适配特定框架的数据（如 Rasa），可添加 `--format` 参数：\n\n```bash\nnpx chatito trainClimateBot.chatito --format=rasa --outputPath=.\u002Fdata\n```\n\n支持的平台包括：`default`、`rasa`、`luis`、`snips`、`flair`。\n\n生成的数据文件将保存在当前目录或指定的 `outputPath` 路径下，可直接用于对应 NLP 平台的模型训练。","某电商团队正在为智能客服机器人构建意图识别模型，需要大量涵盖不同用户表达习惯的训练数据来准确识别“查询订单”、“退换货”等需求。\n\n### 没有 Chatito 时\n- 开发人员需手动编写数百条相似语料，不仅耗时费力，还极易因思维局限导致句式单一。\n- 难以覆盖用户多变的表达方式（如倒装、省略、口语化），导致模型在真实场景中泛化能力差。\n- 缺乏系统性的数据增强手段，稍微调整实体（如商品名、日期）就需要重新人工复制修改，维护成本极高。\n- 容易陷入过拟合陷阱，模型死记硬背了有限的训练样本，却无法理解未见过的类似问法。\n\n### 使用 Chatito 后\n- 利用简单的领域特定语言（DSL）定义规则，仅需几十行代码即可自动组合生成成千上万条多样化的训练样本。\n- 通过变量和可选参数机制，轻松覆盖各种句式结构和实体变化，显著提升模型对复杂自然语言的理解力。\n- 修改一处规则即可全局更新所有相关语料，支持快速迭代测试，大幅降低了数据集的维护难度。\n- 内置的数据增强逻辑有效防止过拟合，确保模型学习到的是语言规律而非特定句子，提升鲁棒性。\n\nChatito 将繁琐的人工语料编写转化为高效的规则定义，让开发者能以极低成本获得高质量、高多样性的 NLP 训练数据集。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frodrigopivi_Chatito_b2bed20d.jpg","rodrigopivi","Rod","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Frodrigopivi_68cc46b5.jpg","Research and software development enthusiast","Om Ah Hum",null,"https:\u002F\u002Fgithub.com\u002Frodrigopivi",[83,87,91],{"name":84,"color":85,"percentage":86},"TypeScript","#3178c6",91.9,{"name":88,"color":89,"percentage":90},"JavaScript","#f1e05a",4.9,{"name":92,"color":93,"percentage":94},"PEG.js","#234d6b",3.2,886,149,"2026-03-17T08:05:13","MIT",1,"Linux, macOS, Windows","未说明",{"notes":103,"python":101,"dependencies":104},"该工具是一个基于 Node.js 的数据集生成器，用于为聊天机器人模型生成训练和验证数据。它不直接运行深度学习模型，因此无 GPU 需求。支持多种输出格式适配器（如 Rasa, Flair, LUIS, Snips NLU）。Flair 适配器仅适用于 NodeJS NPM CLI 包，不适用于在线 IDE。建议使用 npm 或 yarn 安装，并通过命令行生成数据集。",[105,106,107],"Node.js >= v8.11","npm","yarn",[34,15],[110,111,112,113,114,115,116,117,118,119],"chatito","nlu","dataset","nlp","text-classification","named-entity-recognition","nlg","dataset-generation","chatbot","chatbots","2026-03-27T02:49:30.150509","2026-04-06T08:40:52.828901",[123,128,133,138,143,148,153],{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},6391,"为什么在新版本的在线编辑器中无法生成同义词（synonyms）？","这通常是由于版本更新导致的临时问题或配置误解。首先请尝试重新训练 Rasa NLU 管道，因为实体识别模型会先标记单词，同义词替换是后处理步骤，通常能正常工作。如果命令行生成的同义词为空而在线编辑器正常，请确保已升级到最新版本（如 v2.0.0+），该问题已在后续版本中修复。此外，Rasa 文档指出，添加同义词不会提高模型的分类能力，实体必须先被正确分类才能被替换为同义词值。","https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F21",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},6392,"如何控制生成训练数据时的句子概率分布？","Chatito 支持加权概率功能。您可以使用 `*[数字]` 操作符来指定相对权重。例如，`*[2] ~[alias1]` 表示该句型的权重是默认句型的两倍（即 2:1 的比例）。在 v2.3.0 及更高版本中，所有句子默认权重为 1，您可以通过此操作符轻松调整不同句型在训练数据中的占比，而无需手动计算百分比总和。","https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F72",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},6393,"下载数据集时得到的 JSON 文件是空的（{}），但预览显示正常，怎么办？","这通常是因为浏览器同时下载了两个文件（训练集和测试集），而您打开的是测试集文件。如果定义的测试样本数量不足或未定义，测试集文件可能为空。请检查下载文件夹，确认是否有一个包含实际数据的训练文件（通常包含 100 个示例）。建议检查浏览器的下载历史记录以区分这两个文件。","https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F43",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},6394,"如何在 Chatito v2 中为实体定义自定义属性（如 Snips 的 datetime 类型）？","在 Chatito v2.1.0 及更高版本中，支持为意图和槽位添加自定义实体参数。您可以尝试使用双下划线语法（如 `@[city__date]`）并在适配器或后处理脚本中解析它。或者，您可以编写自定义的后处理函数（只需几行代码）来适配您的模型需求。社区也建议使用类似 `@[dateFrom](entity=snips\u002Fdatetime)` 的语法（需适配器支持）来直接附加属性。","https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F26",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},6395,"如何让 Chatito 自动生成最大可能数量的训练样本，而不是指定固定数量？","如果您希望生成所有可能的组合而不设置上限，可以在定义意图时不指定 `training` 参数。例如，直接使用 `%[intent]` 而不是 `%[intent](training=100)`。如果不指定该参数，系统将尝试生成该意图下所有可能的变体。这在 v2.3.0 中已得到优化，避免了因请求数量超过最大可能数而报错的情况。","https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F62",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},6396,"是否可以将槽位（slots）或实体声明放在独立的文件中以便复用？","是的，从 Chatito v2.2.0 开始，已经实现了文件导入和实体声明复用功能。您可以将通用的实体（如城市、日期等）定义在单独的文件中，然后在其他文件中通过导入机制引用它们。这使得在大型项目中模块化地管理语料库变得更加容易。","https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F44",{"id":154,"question_zh":155,"answer_zh":156,"source_url":157},6397,"为什么命令行生成的同义词为空，而在线编辑器却能正常生成？","这是一个在旧版本中存在的不一致问题。维护者确认该问题已在 v2.0.0 版本中修复。如果您遇到此问题，请务必将本地安装的 Chatito 升级到最新版本（`npm install -g chatito` 或更新 package.json 依赖），以确保命令行工具与在线编辑器的行为保持一致。","https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F18",[159,164,169,174,179,184,189,194,199,204,209,214,219,224,229,234,239,244,249,254],{"id":160,"version":161,"summary_zh":162,"released_at":163},115658,"2.3.5","- Improve warn message when generating all combinations for an intent. Ref: https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F82","2019-10-03T17:08:25",{"id":165,"version":166,"summary_zh":167,"released_at":168},115659,"2.3.4","- Auto aliases configurable behavior. Ref: #76 ","2019-07-22T17:31:43",{"id":170,"version":171,"summary_zh":172,"released_at":173},115660,"2.3.3","- Failed attempt to fix Google Colab flair adapter. Seems like node's writeStream is not working as expected on that env, needs a revisit.","2019-07-13T14:43:37",{"id":175,"version":176,"summary_zh":177,"released_at":178},115661,"2.3.2","CHANGES:\r\n- Added sequential all examples generation #75\r\n- Improvements to calculate max possible combinations (cardinality) #75\r\n- Improv circular entities references  #75\r\n- Update NPM package dependencies","2019-07-02T18:44:21",{"id":180,"version":181,"summary_zh":182,"released_at":183},115662,"2.3.1","CHANGES:\r\n- Fixed cli argument for `defaultDistribution`\r\n","2019-06-26T02:11:05",{"id":185,"version":186,"summary_zh":187,"released_at":188},115663,"2.3.0","CHANGES:\r\n\r\n- Weighted probability #72 #71\r\n- Regular and even distribution #71\r\n- Snips NLU fix format #73\r\n- Be able to declare when to use aliases #69\r\n- Flair adapter\r\n\r\nBREAKING CHANGES:\r\n- Rasa adapter entity aliases now require the alias argument defined as 'true'.","2019-06-26T01:22:43",{"id":190,"version":191,"summary_zh":192,"released_at":193},115664,"2.2.2","- Fix rasa synonyms generation bug. Ref: https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F69","2019-05-28T13:22:42",{"id":195,"version":196,"summary_zh":197,"released_at":198},115665,"2.2.1","- fix bug single sentence with probs reducer exception https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fcommit\u002F792e0aebaa4be18401d3203805e99743fd2b1ad1","2019-05-13T14:20:39",{"id":200,"version":201,"summary_zh":202,"released_at":203},115666,"2.2.0","- Probability operator to have more control of the generator paths\r\n- Comments can start with `#` and `\u002F\u002F`\r\n- Importing of chatito files and sharing definitions\r\n- Add LUIS adapter\r\n- Add note on overfitting and improve docs\r\n- Fix Rasa synonims handling bug https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F58\r\n","2019-05-10T05:41:58",{"id":205,"version":206,"summary_zh":207,"released_at":208},115667,"2.1.5","- Update spec to allow 'slot' entities inside 'aliases'\r\n- Implement slot inside aliases\r\n- Prevent loop references and slots inside slots references\r\n- Update dependencies","2018-09-18T19:09:12",{"id":210,"version":211,"summary_zh":212,"released_at":213},115668,"2.1.4","- Fix rasa deep merge issue when bulk generating (https:\u002F\u002Fgithub.com\u002Frodrigopivi\u002FChatito\u002Fissues\u002F31)\r\n- Improve docs about testing dataset\r\n- Update spec to allow international languages characters","2018-08-28T12:23:07",{"id":215,"version":216,"summary_zh":217,"released_at":218},115669,"2.1.3","- Npm CLI will now bulk process all .chatito files if the first argument is a directory\r\n- Fix issue with the online ide\r\n- Improve docs for adapters","2018-08-25T18:36:48",{"id":220,"version":221,"summary_zh":222,"released_at":223},115670,"2.1.1","Add support for international alphabets and characters","2018-08-23T19:51:33",{"id":225,"version":226,"summary_zh":227,"released_at":228},115671,"2.1.0","- Add comments to DSL spec\r\n- Add entity arguments for slots and intents\r\n- Improve IDE with gatsby static site generator\r\n- Add aliases for snips and rasa\r\n- Create training and testing dataset\r\n- Add warnings to prevent large datasets long times","2018-08-21T22:59:03",{"id":230,"version":231,"summary_zh":232,"released_at":233},115672,"2.0.0","Better faster stronger.","2018-06-11T18:16:49",{"id":235,"version":236,"summary_zh":237,"released_at":238},115673,"1.2.2","fix cache issue","2018-04-03T14:31:44",{"id":240,"version":241,"summary_zh":242,"released_at":243},115674,"1.2.1","caching entities bugfix","2018-04-02T19:53:08",{"id":245,"version":246,"summary_zh":247,"released_at":248},115675,"1.2.0","### New Features\r\n- Snips nlu support\r\n- Generate examples on demand with min and max, and split into training and testing shuffled datasets using the npm package.\r\n\r\n### Breaking Changes\r\n- Optional operators changed from `~[optional]?` to `~[optional?]` to allow adding question marks at the end.","2018-03-26T17:31:43",{"id":250,"version":251,"summary_zh":252,"released_at":253},115676,"1.1.2","Added windows support","2018-03-23T19:28:05",{"id":255,"version":256,"summary_zh":80,"released_at":257},115677,"1.1.1","2018-03-16T17:54:45"]