jarvis-ai-assistant 0.2.2__tar.gz → 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jarvis_ai_assistant-0.2.2/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.2.3}/PKG-INFO +82 -9
- jarvis_ai_assistant-0.2.3/README.md +217 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/pyproject.toml +7 -3
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/setup.py +4 -3
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/__init__.py +1 -1
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/prompts.py +26 -4
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_data/config_schema.json +67 -12
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/tongyi.py +9 -9
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_rag/cli.py +79 -23
- jarvis_ai_assistant-0.2.3/src/jarvis/jarvis_rag/query_rewriter.py +111 -0
- jarvis_ai_assistant-0.2.3/src/jarvis/jarvis_rag/rag_pipeline.py +283 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_rag/retriever.py +5 -5
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/generate_new_tool.py +22 -1
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/config.py +92 -11
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/globals.py +29 -8
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/input.py +114 -121
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/utils.py +3 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3/src/jarvis_ai_assistant.egg-info}/PKG-INFO +82 -9
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis_ai_assistant.egg-info/requires.txt +2 -1
- jarvis_ai_assistant-0.2.2/README.md +0 -145
- jarvis_ai_assistant-0.2.2/src/jarvis/jarvis_rag/query_rewriter.py +0 -62
- jarvis_ai_assistant-0.2.2/src/jarvis/jarvis_rag/rag_pipeline.py +0 -174
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/LICENSE +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/MANIFEST.in +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/jarvis.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/main.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/output_handler.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/protocols.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/session_manager.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_agent/code_agent.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_agent/lint.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_git_squash/main.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_mcp/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_methodology/main.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_multi_agent/main.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/ai8.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/base.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/human.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/kimi.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/openai.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/registry.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform_manager/main.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_platform_manager/service.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_rag/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_rag/cache.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_rag/reranker.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_smart_shell/main.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/ask_user.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/base.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/cli/main.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/edit_file.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/execute_script.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/methodology.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/read_code.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/registry.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/search_web.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/__init__.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/embedding.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/file_processors.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/git_utils.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/http.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/methodology.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/output.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_utils/tag.py +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
{jarvis_ai_assistant-0.2.2/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.2.3}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: jarvis-ai-assistant
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.3
|
4
4
|
Summary: Jarvis: An AI assistant that uses tools to interact with the system
|
5
5
|
Home-page: https://github.com/skyfireitdiy/Jarvis
|
6
6
|
Author: skyfire
|
@@ -37,7 +37,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
37
37
|
Classifier: Programming Language :: Python :: 3.10
|
38
38
|
Classifier: Programming Language :: Python :: 3.11
|
39
39
|
Classifier: Programming Language :: Python :: 3.12
|
40
|
-
Requires-Python: >=3.9
|
40
|
+
Requires-Python: >=3.9,<3.13
|
41
41
|
Description-Content-Type: text/markdown
|
42
42
|
License-File: LICENSE
|
43
43
|
Requires-Dist: requests==2.32.3
|
@@ -58,6 +58,8 @@ Requires-Dist: pyyaml>=5.3.1
|
|
58
58
|
Requires-Dist: ddgs==9.0.2
|
59
59
|
Requires-Dist: lxml==6.0.0
|
60
60
|
Requires-Dist: markdownify>=1.1.0
|
61
|
+
Requires-Dist: typer
|
62
|
+
Requires-Dist: pathspec
|
61
63
|
Provides-Extra: dev
|
62
64
|
Requires-Dist: pytest; extra == "dev"
|
63
65
|
Requires-Dist: black; extra == "dev"
|
@@ -73,7 +75,6 @@ Requires-Dist: chromadb; extra == "rag"
|
|
73
75
|
Requires-Dist: diskcache; extra == "rag"
|
74
76
|
Requires-Dist: sentence-transformers==2.7.0; extra == "rag"
|
75
77
|
Requires-Dist: torch>=2.6; extra == "rag"
|
76
|
-
Requires-Dist: typer; extra == "rag"
|
77
78
|
Requires-Dist: unstructured[md]; extra == "rag"
|
78
79
|
Requires-Dist: rank-bm25; extra == "rag"
|
79
80
|
Dynamic: author
|
@@ -87,15 +88,78 @@ Dynamic: requires-python
|
|
87
88
|
</p>
|
88
89
|
<div align="center">
|
89
90
|
|
90
|
-
[](https://www.python.org/downloads/)[](https://opensource.org/licenses/MIT)
|
91
92
|
|
92
93
|
*您的智能开发和系统交互助手*
|
93
94
|
|
94
|
-
[快速开始](#quick-start) • [核心功能](#core-features) • [配置说明](#configuration) • [Jarvis Book](#jarvis-book) • [技术细节](docs/technical_documentation.md) • [Wiki文档](
|
95
|
+
[快速开始](#quick-start) • [核心功能](#core-features) • [配置说明](#configuration) • [Jarvis Book](#jarvis-book) • [技术细节](docs/technical_documentation.md) • [Wiki文档](docs/jarvis_book/1.项目介绍.md) • [贡献指南](#contributing) • [许可证](#license)
|
95
96
|
</div>
|
96
97
|
|
97
98
|
---
|
98
99
|
|
100
|
+
## 🎯 定位与优势
|
101
|
+
|
102
|
+
Jarvis 的定位是**个人开发者的高效助理**,旨在将研发流程中一次性、碎片化的工作变得更加流畅和高效。这与 `workflow` 形式的 `Agent` 平台(如 Dify)有着本质区别,专注于提升个人生产力。
|
103
|
+
|
104
|
+
### Jarvis 的核心优势
|
105
|
+
|
106
|
+
1. **访问本地资源**: Jarvis 能够直接与您的本地环境交互,执行诸如**软件开发、代码修复、环境搭建**等需要本地文件系统和工具链的复杂任务。
|
107
|
+
2. **纯粹的命令行体验**: 作为一款纯命令行工具,Jarvis 可以无缝集成到您喜爱的任何IDE、终端或SSH会话中,不干扰您现有的工作流程。
|
108
|
+
3. **Python包形式提供**: Jarvis 以标准的Python包形式分发,可以轻松地作为依赖项集成到您自己构建的AI应用或自动化脚本中。
|
109
|
+
|
110
|
+
### 💡 Jarvis 的价值:工作流对比
|
111
|
+
|
112
|
+
#### 示例一:开发新功能
|
113
|
+
|
114
|
+
**传统工作流 (没有 Jarvis):**
|
115
|
+
|
116
|
+
1. **理解需求**: 阅读需求文档,在代码库中全局搜索,定位可能需要修改的文件和函数。
|
117
|
+
2. **切换上下文**: 在IDE、浏览器(查资料)、终端(执行命令)之间反复切换。
|
118
|
+
3. **编写代码**: 手动编写新功能、单元测试和相关文档。
|
119
|
+
4. **调试**: 反复运行、打印日志、设置断点来定位和修复bug。
|
120
|
+
5. **代码提交**: 手动检查代码变更,撰写符合团队规范的 Git Commit Message。
|
121
|
+
> 这个过程不仅耗时,而且频繁的上下文切换极易打断心流,消耗大量精力。
|
122
|
+
|
123
|
+
**Jarvis 增强工作流:**
|
124
|
+
|
125
|
+
1. **任务启动**: 在项目根目录,用自然语言向 `jca` (代码助理) 描述需求:`jca "为 'user' 模块增加 'profile' 接口,需要包含用户信息查询和更新功能"`。
|
126
|
+
2. **AI 分析与编码**:
|
127
|
+
* Jarvis 自动分析代码结构,定位相关文件 (`user/service.py`, `user/controller.py`, `tests/test_user.py`)。
|
128
|
+
* 自动生成新接口的代码、必要的单元测试,并提出修改方案。
|
129
|
+
3. **人机协作与迭代**:
|
130
|
+
* 你审查 AI 生成的代码,并提出修改意见:`"字段名需要用驼峰式"` 或 `"增加一个输入校验"`。
|
131
|
+
* Jarvis 根据反馈快速迭代,更新代码。
|
132
|
+
4. **自动化提交**:
|
133
|
+
* 完成开发后,执行 `jgc` (Git 提交助理)。
|
134
|
+
* Jarvis 自动分析代码变更,生成一条规范的 Git Commit Message (例如: `feat(user): add user profile api with query and update`)。
|
135
|
+
> 通过 Jarvis,整个流程从“手动执行”变为了“监督和指导”,开发者可以将精力集中在**架构设计和代码审查**等高价值活动上,而不是繁琐的编码和调试细节。
|
136
|
+
|
137
|
+
#### 示例二:用 Jarvis 完善本文档
|
138
|
+
|
139
|
+
您正在阅读的这部分文档,其诞生过程本身就是 Jarvis 价值的体现。
|
140
|
+
|
141
|
+
1. **初始指令**: `“在README.md中补充jarvis的用户群体和应用场景等信息”`
|
142
|
+
2. **探索与学习**: Jarvis 使用 `fd` 和 `read_code` 工具,分析了 `docs/` 目录下的说明文档,快速学习了项目的核心定位和功能。
|
143
|
+
3. **迭代完善**: 根据 “补充用户群体”、“增加工作流对比”、“再增加一个例子” 等一系列追加指令,Jarvis 通过多次 `PATCH` 操作,逐步、精确地将新内容添加到本文档的指定位置。
|
144
|
+
4. **人机协作**: 在整个过程中,人类提供高层次的目标和方向,Jarvis 负责具体的探索、总结和代码(文档)修改任务,将一个模糊的想法快速落地为结构清晰的文档。
|
145
|
+
|
146
|
+
### 👥 目标用户
|
147
|
+
|
148
|
+
**谁适合使用 Jarvis?**
|
149
|
+
|
150
|
+
* **个人开发者和极客**: 希望通过AI提升个人开发、学习和探索效率的用户。
|
151
|
+
* **需要处理碎片化任务的工程师**: 面对各种一次性、非标准化的技术任务,例如快速编写脚本、调试代码、搭建新环境等。
|
152
|
+
* **AI应用探索者**: 希望有一个灵活的本地框架来实验和集成不同的大语言模型和工具。
|
153
|
+
|
154
|
+
**谁可能不适合?**
|
155
|
+
|
156
|
+
* **寻求固定工作流自动化的人**: 如果您的需求是高度固定和重复的,例如“每天定时抓取数据并生成报告”,那么编写一个专门的、功能单一的脚本可能是更直接、更高效的解决方案。Jarvis 更擅长处理多变和探索性的任务。
|
157
|
+
* **企业级团队协作者**: Jarvis 被设计为个人工具,不包含团队管理、权限控制等面向企业级协作的功能。
|
158
|
+
|
159
|
+
总之,Jarvis 是为每一位开发者量身打造的个人助手,而非用于团队协作的集中式平台。
|
160
|
+
|
161
|
+
---
|
162
|
+
|
99
163
|
## 🚀 快速开始 <a id="quick-start"></a>
|
100
164
|
|
101
165
|
### 系统要求
|
@@ -134,7 +198,7 @@ Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及
|
|
134
198
|
| `jarvis-rag` | `jrg` | 构建和查询本地化的RAG知识库 |
|
135
199
|
| `jarvis-smart-shell` | `jss` | 实验性的智能Shell功能 |
|
136
200
|
|
137
|
-
更多详细用法和参数,请查阅我们的 [
|
201
|
+
更多详细用法和参数,请查阅我们的 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
|
138
202
|
|
139
203
|
---
|
140
204
|
|
@@ -174,7 +238,9 @@ ENV:
|
|
174
238
|
YUANBAO_COOKIES: "在此处粘贴您的元宝Cookies"
|
175
239
|
```
|
176
240
|
|
177
|
-
Jarvis 支持多种平台,包括 **Kimi**, **通义千问**, **OpenAI** 等。详细的配置选项、模型组设置以及所有可用参数,请参阅 [
|
241
|
+
Jarvis 支持多种平台,包括 **Kimi**, **通义千问**, **OpenAI** 等。详细的配置选项、模型组设置以及所有可用参数,请参阅 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
|
242
|
+
|
243
|
+
> **模型推荐**: 目前效果最好的模型是 `gemini-1.5-pro`,可以通过国内代理商购买,例如 [FoxiAI](https://foxi-ai.top)。
|
178
244
|
|
179
245
|
---
|
180
246
|
|
@@ -185,7 +251,7 @@ Jarvis 被设计为高度可扩展的框架。您可以轻松地:
|
|
185
251
|
- **集成新LLM平台**: 在 `~/.jarvis/platforms/` 目录下添加新的平台适配器。
|
186
252
|
- **定义MCP**: 通过配置文件集成外部或自定义的命令协议。
|
187
253
|
|
188
|
-
有关扩展开发的详细指南和[**技术细节**](docs/technical_documentation.md),请访问我们的 [**开发者文档**](
|
254
|
+
有关扩展开发的详细指南和[**技术细节**](docs/technical_documentation.md),请访问我们的 [**开发者文档**](docs/jarvis_book/5.功能扩展.md)。
|
189
255
|
|
190
256
|
---
|
191
257
|
|
@@ -197,7 +263,7 @@ Jarvis 被设计为高度可扩展的框架。您可以轻松地:
|
|
197
263
|
- **[第二章:快速开始](docs/jarvis_book/2.快速开始.md)**
|
198
264
|
- **[第三章:核心概念与架构](docs/jarvis_book/3.核心概念与架构.md)**
|
199
265
|
- **[第四章:使用指南](docs/jarvis_book/4.使用指南.md)**
|
200
|
-
- **[
|
266
|
+
- **[第五章:功能扩展](docs/jarvis_book/5.功能扩展.md)**
|
201
267
|
- **[第六章:高级主题](docs/jarvis_book/6.高级主题.md)**
|
202
268
|
- **[第七章:参与贡献](docs/jarvis_book/7.参与贡献.md)**
|
203
269
|
- **[第八章:常见问题](docs/jarvis_book/8.常见问题.md)**
|
@@ -216,6 +282,13 @@ Jarvis 被设计为高度可扩展的框架。您可以轻松地:
|
|
216
282
|
|
217
283
|
---
|
218
284
|
|
285
|
+
## ⚠️ 免责声明 <a id="disclaimer"></a>
|
286
|
+
|
287
|
+
- **模型使用风险**: 频繁使用通过非官方API(如腾讯元宝、Kimi、通义千问等)接入的模型可能会导致您的账户被平台封禁。请合理使用,并自行承担相应风险。
|
288
|
+
- **命令执行风险**: Jarvis具备执行系统命令的能力。请确保您了解将要执行的命令,并避免输入可能导致系统风险的指令。为了增强安全性,您可以在配置文件中启用工具执行确认(`JARVIS_EXECUTE_TOOL_CONFIRM: true`),以便在执行每个工具前进行手动确认。
|
289
|
+
|
290
|
+
---
|
291
|
+
|
219
292
|
## 📄 许可证 <a id="license"></a>
|
220
293
|
|
221
294
|
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。
|
@@ -0,0 +1,217 @@
|
|
1
|
+
# 🤖 Jarvis AI 助手
|
2
|
+
<p align="center">
|
3
|
+
<img src="docs/images/jarvis-logo.png" alt="Jarvis Logo" width="200"/>
|
4
|
+
</p>
|
5
|
+
<div align="center">
|
6
|
+
|
7
|
+
[](https://www.python.org/downloads/)[](https://opensource.org/licenses/MIT)
|
8
|
+
|
9
|
+
*您的智能开发和系统交互助手*
|
10
|
+
|
11
|
+
[快速开始](#quick-start) • [核心功能](#core-features) • [配置说明](#configuration) • [Jarvis Book](#jarvis-book) • [技术细节](docs/technical_documentation.md) • [Wiki文档](docs/jarvis_book/1.项目介绍.md) • [贡献指南](#contributing) • [许可证](#license)
|
12
|
+
</div>
|
13
|
+
|
14
|
+
---
|
15
|
+
|
16
|
+
## 🎯 定位与优势
|
17
|
+
|
18
|
+
Jarvis 的定位是**个人开发者的高效助理**,旨在将研发流程中一次性、碎片化的工作变得更加流畅和高效。这与 `workflow` 形式的 `Agent` 平台(如 Dify)有着本质区别,专注于提升个人生产力。
|
19
|
+
|
20
|
+
### Jarvis 的核心优势
|
21
|
+
|
22
|
+
1. **访问本地资源**: Jarvis 能够直接与您的本地环境交互,执行诸如**软件开发、代码修复、环境搭建**等需要本地文件系统和工具链的复杂任务。
|
23
|
+
2. **纯粹的命令行体验**: 作为一款纯命令行工具,Jarvis 可以无缝集成到您喜爱的任何IDE、终端或SSH会话中,不干扰您现有的工作流程。
|
24
|
+
3. **Python包形式提供**: Jarvis 以标准的Python包形式分发,可以轻松地作为依赖项集成到您自己构建的AI应用或自动化脚本中。
|
25
|
+
|
26
|
+
### 💡 Jarvis 的价值:工作流对比
|
27
|
+
|
28
|
+
#### 示例一:开发新功能
|
29
|
+
|
30
|
+
**传统工作流 (没有 Jarvis):**
|
31
|
+
|
32
|
+
1. **理解需求**: 阅读需求文档,在代码库中全局搜索,定位可能需要修改的文件和函数。
|
33
|
+
2. **切换上下文**: 在IDE、浏览器(查资料)、终端(执行命令)之间反复切换。
|
34
|
+
3. **编写代码**: 手动编写新功能、单元测试和相关文档。
|
35
|
+
4. **调试**: 反复运行、打印日志、设置断点来定位和修复bug。
|
36
|
+
5. **代码提交**: 手动检查代码变更,撰写符合团队规范的 Git Commit Message。
|
37
|
+
> 这个过程不仅耗时,而且频繁的上下文切换极易打断心流,消耗大量精力。
|
38
|
+
|
39
|
+
**Jarvis 增强工作流:**
|
40
|
+
|
41
|
+
1. **任务启动**: 在项目根目录,用自然语言向 `jca` (代码助理) 描述需求:`jca "为 'user' 模块增加 'profile' 接口,需要包含用户信息查询和更新功能"`。
|
42
|
+
2. **AI 分析与编码**:
|
43
|
+
* Jarvis 自动分析代码结构,定位相关文件 (`user/service.py`, `user/controller.py`, `tests/test_user.py`)。
|
44
|
+
* 自动生成新接口的代码、必要的单元测试,并提出修改方案。
|
45
|
+
3. **人机协作与迭代**:
|
46
|
+
* 你审查 AI 生成的代码,并提出修改意见:`"字段名需要用驼峰式"` 或 `"增加一个输入校验"`。
|
47
|
+
* Jarvis 根据反馈快速迭代,更新代码。
|
48
|
+
4. **自动化提交**:
|
49
|
+
* 完成开发后,执行 `jgc` (Git 提交助理)。
|
50
|
+
* Jarvis 自动分析代码变更,生成一条规范的 Git Commit Message (例如: `feat(user): add user profile api with query and update`)。
|
51
|
+
> 通过 Jarvis,整个流程从“手动执行”变为了“监督和指导”,开发者可以将精力集中在**架构设计和代码审查**等高价值活动上,而不是繁琐的编码和调试细节。
|
52
|
+
|
53
|
+
#### 示例二:用 Jarvis 完善本文档
|
54
|
+
|
55
|
+
您正在阅读的这部分文档,其诞生过程本身就是 Jarvis 价值的体现。
|
56
|
+
|
57
|
+
1. **初始指令**: `“在README.md中补充jarvis的用户群体和应用场景等信息”`
|
58
|
+
2. **探索与学习**: Jarvis 使用 `fd` 和 `read_code` 工具,分析了 `docs/` 目录下的说明文档,快速学习了项目的核心定位和功能。
|
59
|
+
3. **迭代完善**: 根据 “补充用户群体”、“增加工作流对比”、“再增加一个例子” 等一系列追加指令,Jarvis 通过多次 `PATCH` 操作,逐步、精确地将新内容添加到本文档的指定位置。
|
60
|
+
4. **人机协作**: 在整个过程中,人类提供高层次的目标和方向,Jarvis 负责具体的探索、总结和代码(文档)修改任务,将一个模糊的想法快速落地为结构清晰的文档。
|
61
|
+
|
62
|
+
### 👥 目标用户
|
63
|
+
|
64
|
+
**谁适合使用 Jarvis?**
|
65
|
+
|
66
|
+
* **个人开发者和极客**: 希望通过AI提升个人开发、学习和探索效率的用户。
|
67
|
+
* **需要处理碎片化任务的工程师**: 面对各种一次性、非标准化的技术任务,例如快速编写脚本、调试代码、搭建新环境等。
|
68
|
+
* **AI应用探索者**: 希望有一个灵活的本地框架来实验和集成不同的大语言模型和工具。
|
69
|
+
|
70
|
+
**谁可能不适合?**
|
71
|
+
|
72
|
+
* **寻求固定工作流自动化的人**: 如果您的需求是高度固定和重复的,例如“每天定时抓取数据并生成报告”,那么编写一个专门的、功能单一的脚本可能是更直接、更高效的解决方案。Jarvis 更擅长处理多变和探索性的任务。
|
73
|
+
* **企业级团队协作者**: Jarvis 被设计为个人工具,不包含团队管理、权限控制等面向企业级协作的功能。
|
74
|
+
|
75
|
+
总之,Jarvis 是为每一位开发者量身打造的个人助手,而非用于团队协作的集中式平台。
|
76
|
+
|
77
|
+
---
|
78
|
+
|
79
|
+
## 🚀 快速开始 <a id="quick-start"></a>
|
80
|
+
|
81
|
+
### 系统要求
|
82
|
+
- **Linux**: 完全支持。
|
83
|
+
- **Windows**: 未经充分测试,建议在 [WSL](https://docs.microsoft.com/en-us/windows/wsl/install) 中使用。
|
84
|
+
|
85
|
+
### 安装
|
86
|
+
|
87
|
+
#### 一键安装 (推荐)
|
88
|
+
只需一行命令即可完成所有安装和配置:
|
89
|
+
```bash
|
90
|
+
bash -c "$(curl -fsSL https://raw.githubusercontent.com/skyfireitdiy/Jarvis/main/scripts/install.sh)"
|
91
|
+
```
|
92
|
+
> 该脚本会自动检测Python环境、克隆项目、安装依赖并设置好路径。
|
93
|
+
|
94
|
+
#### 手动安装
|
95
|
+
```bash
|
96
|
+
git clone https://github.com/skyfireitdiy/Jarvis
|
97
|
+
cd Jarvis
|
98
|
+
pip3 install -e .
|
99
|
+
```
|
100
|
+
或者从PyPI安装 (可能不是最新版):
|
101
|
+
```bash
|
102
|
+
pip3 install jarvis-ai-assistant
|
103
|
+
```
|
104
|
+
|
105
|
+
### 基本使用
|
106
|
+
Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及其快捷方式:
|
107
|
+
|
108
|
+
| 命令 | 快捷方式 | 功能描述 |
|
109
|
+
|------|----------|----------|
|
110
|
+
| `jarvis` | `jvs` | 通用AI代理,适用于多种任务 |
|
111
|
+
| `jarvis-code-agent` | `jca` | 专注于代码分析、修改和生成的代码代理 |
|
112
|
+
| `jarvis-git-commit` | `jgc` | 自动化分析代码变更并生成规范的Git提交信息 |
|
113
|
+
| `jarvis-platform-manager` | `jpm` | 管理和测试不同的大语言模型平台 |
|
114
|
+
| `jarvis-rag` | `jrg` | 构建和查询本地化的RAG知识库 |
|
115
|
+
| `jarvis-smart-shell` | `jss` | 实验性的智能Shell功能 |
|
116
|
+
|
117
|
+
更多详细用法和参数,请查阅我们的 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
|
118
|
+
|
119
|
+
---
|
120
|
+
|
121
|
+
## 🌟 核心功能 <a id="core-features"></a>
|
122
|
+
|
123
|
+
- **🆓 零成本接入**: 无缝集成腾讯元宝、Kimi等优质模型,无需支付API费用。
|
124
|
+
- **🛠️ 工具驱动**: 内置丰富工具集,涵盖脚本执行、代码开发、网页搜索、终端操作等。
|
125
|
+
- **🤖 人机协作**: 支持实时交互,用户可随时介入指导,确保AI行为符合预期。
|
126
|
+
- **🔌 高度可扩展**: 支持自定义工具、模型平台和MCP,轻松打造个性化工作流。
|
127
|
+
- **🧠 RAG 增强**: 内置RAG功能,可将本地文档作为知识库,实现精准问答。
|
128
|
+
|
129
|
+
### 视频演示
|
130
|
+
- [使用`jca`为Jarvis快速扩展功能](https://www.bilibili.com/video/BV1TCgLzvE6Q/)
|
131
|
+
- [10分钟搭建aarch64容器化Rust开发环境](https://www.bilibili.com/video/BV1K3ghzkEzZ/)
|
132
|
+
- [`jarvis-code-agent` 功能演示](https://www.bilibili.com/video/BV1KugbzKE6U/)
|
133
|
+
|
134
|
+
---
|
135
|
+
|
136
|
+
## ⚙️ 配置说明 <a id="configuration"></a>
|
137
|
+
|
138
|
+
Jarvis 的主要配置文件位于 `~/.jarvis/config.yaml`。您可以在此文件中配置模型、平台和其他行为。
|
139
|
+
|
140
|
+
**基本配置示例 (腾讯元宝):**
|
141
|
+
```yaml
|
142
|
+
# ~/.jarvis/config.yaml
|
143
|
+
|
144
|
+
# 使用的模型平台
|
145
|
+
JARVIS_PLATFORM: yuanbao
|
146
|
+
JARVIS_MODEL: deep_seek_v3
|
147
|
+
|
148
|
+
# 用于“思考”步骤的模型,通常选择能力更强的模型
|
149
|
+
JARVIS_THINKING_PLATFORM: yuanbao
|
150
|
+
JARVIS_THINKING_MODEL: deep_seek
|
151
|
+
|
152
|
+
# 平台所需的环境变量
|
153
|
+
ENV:
|
154
|
+
YUANBAO_COOKIES: "在此处粘贴您的元宝Cookies"
|
155
|
+
```
|
156
|
+
|
157
|
+
Jarvis 支持多种平台,包括 **Kimi**, **通义千问**, **OpenAI** 等。详细的配置选项、模型组设置以及所有可用参数,请参阅 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
|
158
|
+
|
159
|
+
> **模型推荐**: 目前效果最好的模型是 `gemini-1.5-pro`,可以通过国内代理商购买,例如 [FoxiAI](https://foxi-ai.top)。
|
160
|
+
|
161
|
+
---
|
162
|
+
|
163
|
+
## 🛠️ 扩展开发 <a id="extensions"></a>
|
164
|
+
|
165
|
+
Jarvis 被设计为高度可扩展的框架。您可以轻松地:
|
166
|
+
- **添加新工具**: 在 `~/.jarvis/tools/` 目录下创建新的工具实现。
|
167
|
+
- **集成新LLM平台**: 在 `~/.jarvis/platforms/` 目录下添加新的平台适配器。
|
168
|
+
- **定义MCP**: 通过配置文件集成外部或自定义的命令协议。
|
169
|
+
|
170
|
+
有关扩展开发的详细指南和[**技术细节**](docs/technical_documentation.md),请访问我们的 [**开发者文档**](docs/jarvis_book/5.功能扩展.md)。
|
171
|
+
|
172
|
+
---
|
173
|
+
|
174
|
+
## 📖 Jarvis Book <a id="jarvis-book"></a>
|
175
|
+
|
176
|
+
欢迎阅读 Jarvis 的官方文档,这本开源书籍旨在为您提供从入门到精通的全方位指南。
|
177
|
+
|
178
|
+
- **[第一章:项目介绍](docs/jarvis_book/1.项目介绍.md)**
|
179
|
+
- **[第二章:快速开始](docs/jarvis_book/2.快速开始.md)**
|
180
|
+
- **[第三章:核心概念与架构](docs/jarvis_book/3.核心概念与架构.md)**
|
181
|
+
- **[第四章:使用指南](docs/jarvis_book/4.使用指南.md)**
|
182
|
+
- **[第五章:功能扩展](docs/jarvis_book/5.功能扩展.md)**
|
183
|
+
- **[第六章:高级主题](docs/jarvis_book/6.高级主题.md)**
|
184
|
+
- **[第七章:参与贡献](docs/jarvis_book/7.参与贡献.md)**
|
185
|
+
- **[第八章:常见问题](docs/jarvis_book/8.常见问题.md)**
|
186
|
+
- **[第九章:附录](docs/jarvis_book/9.附录.md)**
|
187
|
+
|
188
|
+
---
|
189
|
+
|
190
|
+
## 🤝 贡献指南 <a id="contributing"></a>
|
191
|
+
|
192
|
+
我们欢迎任何形式的贡献!
|
193
|
+
1. Fork 本仓库
|
194
|
+
2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)
|
195
|
+
3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)
|
196
|
+
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
197
|
+
5. 开启一个 Pull Request
|
198
|
+
|
199
|
+
---
|
200
|
+
|
201
|
+
## ⚠️ 免责声明 <a id="disclaimer"></a>
|
202
|
+
|
203
|
+
- **模型使用风险**: 频繁使用通过非官方API(如腾讯元宝、Kimi、通义千问等)接入的模型可能会导致您的账户被平台封禁。请合理使用,并自行承担相应风险。
|
204
|
+
- **命令执行风险**: Jarvis具备执行系统命令的能力。请确保您了解将要执行的命令,并避免输入可能导致系统风险的指令。为了增强安全性,您可以在配置文件中启用工具执行确认(`JARVIS_EXECUTE_TOOL_CONFIRM: true`),以便在执行每个工具前进行手动确认。
|
205
|
+
|
206
|
+
---
|
207
|
+
|
208
|
+
## 📄 许可证 <a id="license"></a>
|
209
|
+
|
210
|
+
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。
|
211
|
+
|
212
|
+
---
|
213
|
+
<div align="center">
|
214
|
+
由 Jarvis 团队用 ❤️ 制作
|
215
|
+
</div>
|
216
|
+
|
217
|
+

|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "jarvis-ai-assistant"
|
7
|
-
version = "0.2.
|
7
|
+
version = "0.2.3"
|
8
8
|
description = "Jarvis: An AI assistant that uses tools to interact with the system"
|
9
9
|
readme = "README.md"
|
10
10
|
authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
|
@@ -40,8 +40,10 @@ dependencies = [
|
|
40
40
|
"ddgs==9.0.2",
|
41
41
|
"lxml==6.0.0",
|
42
42
|
"markdownify>=1.1.0",
|
43
|
+
"typer",
|
44
|
+
"pathspec",
|
43
45
|
]
|
44
|
-
requires-python = ">=3.9"
|
46
|
+
requires-python = ">=3.9,<3.13"
|
45
47
|
|
46
48
|
[project.optional-dependencies]
|
47
49
|
dev = ["pytest", "black", "isort", "mypy", "build", "twine"]
|
@@ -53,7 +55,6 @@ rag = [
|
|
53
55
|
"diskcache",
|
54
56
|
"sentence-transformers==2.7.0",
|
55
57
|
"torch>=2.6",
|
56
|
-
"typer",
|
57
58
|
"unstructured[md]",
|
58
59
|
"rank-bm25",
|
59
60
|
]
|
@@ -61,6 +62,9 @@ rag = [
|
|
61
62
|
[project.urls]
|
62
63
|
Homepage = "https://github.com/skyfireitdiy/Jarvis"
|
63
64
|
|
65
|
+
[tool.isort]
|
66
|
+
profile = "black"
|
67
|
+
|
64
68
|
[project.scripts]
|
65
69
|
jarvis = "jarvis.jarvis_agent.jarvis:main"
|
66
70
|
jvs = "jarvis.jarvis_agent.jarvis:main"
|
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages # type: ignore
|
|
3
3
|
|
4
4
|
setup(
|
5
5
|
name="jarvis-ai-assistant",
|
6
|
-
version="0.2.
|
6
|
+
version="0.2.3",
|
7
7
|
author="skyfire",
|
8
8
|
author_email="skyfireitdiy@hotmail.com",
|
9
9
|
description="An AI assistant that uses various tools to interact with the system",
|
@@ -35,6 +35,7 @@ setup(
|
|
35
35
|
"ddgs==9.0.2",
|
36
36
|
"lxml==6.0.0",
|
37
37
|
"markdownify>=1.1.0",
|
38
|
+
"typer",
|
38
39
|
],
|
39
40
|
extras_require={
|
40
41
|
"dev": ["pytest", "black", "isort", "mypy", "build", "twine"],
|
@@ -46,9 +47,9 @@ setup(
|
|
46
47
|
"diskcache",
|
47
48
|
"sentence-transformers==2.7.0",
|
48
49
|
"torch>=2.6",
|
49
|
-
"typer",
|
50
50
|
"unstructured[md]",
|
51
51
|
"rank-bm25",
|
52
|
+
"pathspec",
|
52
53
|
],
|
53
54
|
},
|
54
55
|
entry_points={
|
@@ -79,7 +80,7 @@ setup(
|
|
79
80
|
"jrg=jarvis.jarvis_rag.cli:main",
|
80
81
|
],
|
81
82
|
},
|
82
|
-
python_requires=">=3.9",
|
83
|
+
python_requires=">=3.9,<3.13",
|
83
84
|
classifiers=[
|
84
85
|
"Development Status :: 3 - Alpha",
|
85
86
|
"Intended Audience :: Developers",
|
@@ -113,6 +113,31 @@ TASK_ANALYSIS_PROMPT = f"""<task_analysis>
|
|
113
113
|
"stderr": f"操作失败: {{str(e)}}"
|
114
114
|
}}
|
115
115
|
```
|
116
|
+
4. **在工具中调用大模型**:如果工具需要调用大模型来完成子任务(例如,生成代码、分析文本等),为了避免干扰主对话流程,建议创建一个独立的大模型实例。
|
117
|
+
```python
|
118
|
+
# 通过 agent 实例获取模型配置
|
119
|
+
agent = args.get("agent")
|
120
|
+
if not agent:
|
121
|
+
return {{"success": False, "stderr": "Agent not found."}}
|
122
|
+
|
123
|
+
current_model = agent.model
|
124
|
+
platform_name = current_model.platform_name()
|
125
|
+
model_name = current_model.name()
|
126
|
+
|
127
|
+
# 创建独立的模型实例
|
128
|
+
from jarvis.jarvis_platform.registry import PlatformRegistry
|
129
|
+
llm = PlatformRegistry().create_platform(platform_name)
|
130
|
+
if not llm:
|
131
|
+
return {{"success": False, "stderr": f"Platform {{platform_name}} not found."}}
|
132
|
+
|
133
|
+
llm.set_model_name(model_name)
|
134
|
+
llm.set_suppress_output(True) # 工具内的调用通常不需要流式输出
|
135
|
+
|
136
|
+
# 使用新实例调用大模型
|
137
|
+
PrettyOutput.print("正在执行子任务...", OutputType.INFO)
|
138
|
+
response = llm.chat_until_success("你的提示词")
|
139
|
+
PrettyOutput.print("子任务完成", OutputType.SUCCESS)
|
140
|
+
```
|
116
141
|
</tool_requirements>
|
117
142
|
<methodology_requirements>
|
118
143
|
方法论格式要求:
|
@@ -139,10 +164,7 @@ arguments:
|
|
139
164
|
from jarvis.jarvis_utils.output import PrettyOutput, OutputType
|
140
165
|
class 工具名称:
|
141
166
|
name = "工具名称"
|
142
|
-
description = "Tool
|
143
|
-
Tool description
|
144
|
-
适用场景:1. 格式化文本; 2. 处理标题; 3. 标准化输出
|
145
|
-
\"\"\"
|
167
|
+
description = "Tool description"
|
146
168
|
parameters = {{
|
147
169
|
"type": "object",
|
148
170
|
"properties": {{
|
{jarvis_ai_assistant-0.2.2 → jarvis_ai_assistant-0.2.3}/src/jarvis/jarvis_data/config_schema.json
RENAMED
@@ -141,38 +141,47 @@
|
|
141
141
|
"description": "思考操作模型名称",
|
142
142
|
"default": "deep_seek"
|
143
143
|
},
|
144
|
-
"
|
144
|
+
"JARVIS_LLM_GROUP": {
|
145
145
|
"type": "string",
|
146
|
-
"description": "选择一个预定义的模型组"
|
146
|
+
"description": "选择一个预定义的模型组",
|
147
|
+
"default": ""
|
147
148
|
},
|
148
|
-
"
|
149
|
+
"JARVIS_LLM_GROUPS": {
|
149
150
|
"type": "array",
|
150
151
|
"description": "预定义的模型配置组",
|
152
|
+
"default": [],
|
151
153
|
"items": {
|
152
154
|
"type": "object",
|
153
155
|
"additionalProperties": {
|
154
156
|
"type": "object",
|
155
157
|
"properties": {
|
156
158
|
"JARVIS_PLATFORM": {
|
157
|
-
"type": "string"
|
159
|
+
"type": "string",
|
160
|
+
"default": "yuanbao"
|
158
161
|
},
|
159
162
|
"JARVIS_MODEL": {
|
160
|
-
"type": "string"
|
163
|
+
"type": "string",
|
164
|
+
"default": "deep_seek_v3"
|
161
165
|
},
|
162
166
|
"JARVIS_THINKING_PLATFORM": {
|
163
|
-
"type": "string"
|
167
|
+
"type": "string",
|
168
|
+
"default": "yuanbao"
|
164
169
|
},
|
165
170
|
"JARVIS_THINKING_MODEL": {
|
166
|
-
"type": "string"
|
171
|
+
"type": "string",
|
172
|
+
"default": "deep_seek"
|
167
173
|
},
|
168
174
|
"JARVIS_MAX_TOKEN_COUNT": {
|
169
|
-
"type": "number"
|
175
|
+
"type": "number",
|
176
|
+
"default": 960000
|
170
177
|
},
|
171
178
|
"JARVIS_MAX_INPUT_TOKEN_COUNT": {
|
172
|
-
"type": "number"
|
179
|
+
"type": "number",
|
180
|
+
"default": 32000
|
173
181
|
},
|
174
182
|
"JARVIS_MAX_BIG_CONTENT_SIZE": {
|
175
|
-
"type": "number"
|
183
|
+
"type": "number",
|
184
|
+
"default": 160000
|
176
185
|
}
|
177
186
|
},
|
178
187
|
"required": [
|
@@ -235,9 +244,43 @@
|
|
235
244
|
"description": "是否启用静态代码分析",
|
236
245
|
"default": true
|
237
246
|
},
|
247
|
+
"JARVIS_RAG_GROUP": {
|
248
|
+
"type": "string",
|
249
|
+
"description": "选择一个预定义的RAG配置组",
|
250
|
+
"default": ""
|
251
|
+
},
|
252
|
+
"JARVIS_RAG_GROUPS": {
|
253
|
+
"type": "array",
|
254
|
+
"description": "预定义的RAG配置组",
|
255
|
+
"default": [],
|
256
|
+
"items": {
|
257
|
+
"type": "object",
|
258
|
+
"additionalProperties": {
|
259
|
+
"type": "object",
|
260
|
+
"properties": {
|
261
|
+
"embedding_model": {
|
262
|
+
"type": "string",
|
263
|
+
"default": "BAAI/bge-base-zh-v1.5"
|
264
|
+
},
|
265
|
+
"rerank_model": {
|
266
|
+
"type": "string",
|
267
|
+
"default": "BAAI/bge-reranker-base"
|
268
|
+
},
|
269
|
+
"use_bm25": {
|
270
|
+
"type": "boolean",
|
271
|
+
"default": true
|
272
|
+
},
|
273
|
+
"use_rerank": {
|
274
|
+
"type": "boolean",
|
275
|
+
"default": true
|
276
|
+
}
|
277
|
+
}
|
278
|
+
}
|
279
|
+
}
|
280
|
+
},
|
238
281
|
"JARVIS_RAG": {
|
239
282
|
"type": "object",
|
240
|
-
"description": "RAG
|
283
|
+
"description": "RAG框架的顶层配置。注意:此处的设置将覆盖任何由JARVIS_RAG_GROUP选择的组配置。",
|
241
284
|
"properties": {
|
242
285
|
"embedding_model": {
|
243
286
|
"type": "string",
|
@@ -248,11 +291,23 @@
|
|
248
291
|
"type": "string",
|
249
292
|
"default": "BAAI/bge-reranker-base",
|
250
293
|
"description": "用于RAG的rerank模型的名称, 默认为 'BAAI/bge-reranker-base'"
|
294
|
+
},
|
295
|
+
"use_bm25": {
|
296
|
+
"type": "boolean",
|
297
|
+
"default": true,
|
298
|
+
"description": "是否在RAG中为检索使用BM25, 默认为 true"
|
299
|
+
},
|
300
|
+
"use_rerank": {
|
301
|
+
"type": "boolean",
|
302
|
+
"default": true,
|
303
|
+
"description": "是否在RAG中为检索使用rerank, 默认为 true"
|
251
304
|
}
|
252
305
|
},
|
253
306
|
"default": {
|
254
307
|
"embedding_model": "BAAI/bge-base-zh-v1.5",
|
255
|
-
"rerank_model": "BAAI/bge-reranker-base"
|
308
|
+
"rerank_model": "BAAI/bge-reranker-base",
|
309
|
+
"use_bm25": true,
|
310
|
+
"use_rerank": true
|
256
311
|
}
|
257
312
|
},
|
258
313
|
"JARVIS_REPLACE_MAP": {
|