Skip to content

Commit a993515

Browse files
committed
2 parents ee3e984 + 790d040 commit a993515

File tree

7 files changed

+253
-36
lines changed

7 files changed

+253
-36
lines changed

.github/workflows/release.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,45 @@ on:
66
workflow_dispatch: # 允许手动触发
77

88
jobs:
9+
build-python-exe:
10+
runs-on: windows-latest
11+
steps:
12+
- name: Checkout code
13+
uses: actions/checkout@v4
14+
15+
- name: Set up Python
16+
uses: actions/setup-python@v4
17+
with:
18+
python-version: '3.10'
19+
20+
- name: Install PyInstaller
21+
run: pip install pyinstaller
22+
23+
- name: Install Python dependencies
24+
run: pip install -r src/python/requirements.txt
25+
26+
- name: Build EXE
27+
run: pyinstaller --onefile --clean --noconsole --distpath dist src/python/rag.py
28+
29+
- name: Upload EXE artifact
30+
uses: actions/upload-artifact@v4
31+
with:
32+
name: rag.exe
33+
path: dist/rag.exe
34+
935
build-and-publish:
1036
runs-on: ubuntu-latest
37+
needs: build-python-exe
1138
steps:
1239
- name: Checkout code
1340
uses: actions/checkout@v4
1441

42+
- name: Download EXE artifact
43+
uses: actions/download-artifact@v4
44+
with:
45+
name: rag.exe
46+
path: dist # 下载到 dist 目录
47+
1548
- name: Setup Node.js
1649
uses: actions/setup-node@v4
1750
with:

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
### 0.0.144 (2025-04-26)
6+
7+
8+
### Bug Fixes
9+
10+
* 修正打包编译python的流程 ([90641be](https://github.com/yefansky/CodeReDesign/commit/90641be5e585d803a158d1a00565c2bb969da686))
11+
12+
### 0.0.143 (2025-04-26)
13+
14+
15+
### Bug Fixes
16+
17+
* 增加提示词 ([9a71cd6](https://github.com/yefansky/CodeReDesign/commit/9a71cd6e4f3e8327b417dd7f1169c624cc47d42c))
18+
19+
### 0.0.142 (2025-04-26)
20+
521
### 0.0.141 (2025-04-26)
622

723
### 0.0.140 (2025-04-26)

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"description": "A VSCode extension for code refactoring and redesign by DeepSeek API.",
55
"publisher": "shellingye",
66
"icon": "images/icon.png",
7-
"version": "0.0.141",
7+
"version": "0.0.144",
88
"engines": {
99
"vscode": "^1.70.0"
1010
},

src/apiTools.ts

Lines changed: 155 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import * as mysql from 'mysql2/promise';
1414
import * as childProcess from 'child_process';
1515
import { exec } from 'child_process';
1616
import { promisify } from 'util';
17-
import { ragService, CONFIG as RAG_CONFIG } from './ragService';
17+
import { CONFIG as RAG_CONFIG } from './ragService';
1818
import { parseString } from 'xml2js';
1919

2020

@@ -290,7 +290,23 @@ async function fetchPageContent(url: string): Promise<string> {
290290
// 1. 搜索网络
291291
export const searchTool: Tool = {
292292
name: 'web_search',
293-
description: '执行网络搜索并返回前5个结果的摘要,用户提供这个工具一般是不信任你自己的判断,先上网搜索总结后再下结论。',
293+
description: `执行网络搜索并返回前5个结果的摘要。适用于需要获取外部信息、验证数据或了解最新动态的情况。
294+
用户提供这个工具通常是对你的知识储备或判断持怀疑态度,希望通过网络搜索获取更权威或更新的信息。
295+
你可以用它来补充自己的回答,确保回答准确且有据可依。
296+
当问到你依稀技术名词的时候,你没有把握就不要乱说,先联网搜索。因为大模型很容易产生幻觉,以为自己什么都懂。
297+
298+
使用场景:
299+
- 获取最新信息: 例如,用户询问“2023年最好的编程语言是什么?”
300+
- 验证事实: 例如,确认“Python的最新版本是什么?”
301+
- 收集多种观点: 例如,了解“AI在医疗领域的应用有哪些?”
302+
303+
具体示例:
304+
用户问:“最新的AI编程工具是什么?”
305+
你可以使用 web_search,输入参数 query: "latest AI programming tools 2023",然后回答:
306+
“根据网络搜索结果,当前流行的AI编程工具包括:1. GitHub Copilot(代码自动补全),2. Tabnine(多语言支持),...”。
307+
308+
如何使用:
309+
- 参数 query: 输入搜索关键词,支持英文双引号精确匹配。例如 "AI tools site:github.com" 会限定搜索范围到 GitHub。`,
294310
parameters: {
295311
type: 'object',
296312
properties: {
@@ -329,7 +345,21 @@ registerTool(searchTool);
329345
// 2. 获取当前日期时间
330346
export const getCurrentDateTime: Tool = {
331347
name: 'get_current_datetime',
332-
description: '获取当前的日期和时间。',
348+
description: `获取当前的日期和时间。适用于任何需要实时时间信息的情况。
349+
它简单高效,没有参数,直接返回本地时间。可以用它来回答时间相关的问题,或在任务中提供时间上下文。
350+
351+
使用场景:
352+
- 回答时间问题: 例如,用户直接问“现在几点了?”或“今天是星期几?”
353+
- 任务安排: 例如,用户说“请在明天上午10点提醒我开会”,你可以用它确认当前时间并计算提醒时间。
354+
- 记录时间戳: 例如,在日志或事件记录中添加当前时间。
355+
356+
具体示例:
357+
用户问:“现在是几点?”
358+
你调用 get_current_datetime,返回:
359+
“当前时间是 2023年10月15日 14:30(本地时间)。”
360+
361+
如何使用:
362+
- 无参数,直接调用即可,返回格式为本地时间的字符串。`,
333363
parameters: {
334364
type: 'object',
335365
properties: {},
@@ -346,7 +376,24 @@ registerTool(getCurrentDateTime);
346376
// 3. 读取指定路径文本
347377
export const readTextFile: Tool = {
348378
name: 'read_text_file',
349-
description: '读取指定路径的文本文件内容。',
379+
description: `读取指定路径的文本文件内容。适用于需要访问本地文件信息的情况。
380+
它可以帮助你提取文件中的数据、配置或日志,适合处理静态文本内容。
381+
比如我让你解析一个代码里的内容,找出里面的某个引用函数,你就可以用这个工具加载文件文本内容然后再进行分析。
382+
有些时候我会让你解释代码。或者问你代码里的某一段内容的意思,或者查找相关代码,你就应该重新加载最可能的那个代码文件,然后重新回答我的问题。
383+
我让你解释代码的时候你一定要用这个工具去读取,而不是凭文件名猜测他的内容,切记!
384+
385+
使用场景:
386+
- 读取文件内容: 例如,用户说“请告诉我 C:\\notes.txt 里写了什么”。
387+
- 处理配置: 例如,在调试时读取配置文件“读取 config.txt 的设置”。
388+
- 分析日志: 例如,查看日志文件中的错误信息“读取 error.log 的最后一行”。
389+
390+
具体示例:
391+
用户说:“请读取 C:\\data.py 的内容。”
392+
你调用 read_text_file,参数 filePath: "C:\\data.tpy",返回:
393+
“文件内容是:'这是一个测试文件,包含重要信息。'”
394+
395+
如何使用:
396+
- 参数 filePath: 输入完整的文件路径(如 "C:\\data.py"),支持 UTF-8 编码的文本文件。`,
350397
parameters: {
351398
type: 'object',
352399
properties: {
@@ -371,7 +418,17 @@ registerTool(readTextFile);
371418
// 4. 连接 MySQL 查表
372419
export const queryMySQL: Tool = {
373420
name: 'query_mysql',
374-
description: '连接 MySQL 数据库并执行查询。',
421+
description: `连接 MySQL 数据库并执行 SQL 查询,返回 JSON 格式结果。适合数据查询或管理。
422+
423+
使用场景:
424+
425+
数据查询:用户问“用户表里有多少人?”
426+
生成报告:统计“所有订单的总金额”。
427+
数据管理:更新“用户 ID 为 1 的状态”。
428+
具体示例:
429+
用户说:“查询用户表中的所有用户。”
430+
调用 query_mysql,参数:host: "localhost", user: "root", password: "123456", database: "mydb", query: "SELECT * FROM users",返回:
431+
“结果:[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]`,
375432
parameters: {
376433
type: 'object',
377434
properties: {
@@ -416,14 +473,24 @@ type SVNError = Error & { stderr?: string };
416473
const execAsync = promisify(exec);
417474
export const getSVNLog: Tool = {
418475
name: 'get_svn_log',
419-
description: '获取SVN日志,支持多种查询条件',
476+
description: `获取 SVN 仓库的提交日志,支持筛选路径、作者或时间范围,适合版本管理。
477+
478+
使用场景:
479+
480+
查看历史:用户问“SVN 仓库最近5次提交是什么?”
481+
代码审查:查找“Alice 的所有提交”。
482+
项目跟踪:查看“过去一周的提交”。
483+
具体示例:
484+
用户说:“获取 SVN 仓库最近10条提交记录。”
485+
调用 get_svn_log,参数 path: "http://svn.example.com/repo", limit: 10,返回:
486+
“结果:[{'revision': '100', 'author': 'Alice', 'date': '2023-10-01', 'message': '修复bug'}]`,
420487
parameters: {
421488
type: 'object',
422489
properties: {
423490
path: {
424491
type: 'string',
425492
description: `仓库路径,支持以下格式:
426-
- 本地工作副本路径:'/projects/myapp'
493+
- 本地工作副本路径:'k:\\projects\\myapp'
427494
- 仓库URL:'http://svn.example.com/repo'
428495
- 仓库子目录:'http://svn.example.com/repo/trunk/src'`
429496
},
@@ -569,7 +636,19 @@ registerTool(getSVNLog);
569636
// 6. 比对 SVN 本地差异的 diff
570637
export const getSVNDiff: Tool = {
571638
name: 'get_svn_diff',
572-
description: '获取 SVN 仓库的本地差异。',
639+
description: `显示 SVN 本地工作副本与远程仓库的差异,适合提交前检查。
640+
641+
使用场景:
642+
643+
检查改动:用户问“我对 SVN 做了什么改动?”
644+
提交审查:确认“本地差异”。
645+
调试:对比本地和远程代码。
646+
具体示例:
647+
用户说:“显示 SVN 仓库的本地差异。”
648+
调用 get_svn_diff,参数 repoPath: "C:\\svn_repo",返回:
649+
“差异:'+ 新增一行\n- 删除一行'”
650+
参数说明:
651+
repoPath: 本地仓库路径`,
573652
parameters: {
574653
type: 'object',
575654
properties: {
@@ -593,7 +672,17 @@ registerTool(getSVNDiff);
593672
// 7. 比对 GitHub 本地差异的 diff
594673
export const getGitDiff: Tool = {
595674
name: 'get_git_diff',
596-
description: '获取 Git 仓库的本地差异。',
675+
description: `显示 Git 本地工作目录与已提交内容的差异,适合代码审查或调试。
676+
677+
使用场景:
678+
679+
检查更改:用户问“Git 仓库的本地改动是什么?”
680+
提交确认:查看“Git diff”。
681+
错误排查:对比改动。
682+
具体示例:
683+
用户说:“显示 Git 仓库的本地差异。”
684+
调用 get_git_diff,参数 repoPath: "C:\\git_repo",返回:
685+
“差异:'+ 添加新功能\n- 删除旧代码'`,
597686
parameters: {
598687
type: 'object',
599688
properties: {
@@ -617,7 +706,17 @@ registerTool(getGitDiff);
617706
// 8. Grep 搜索指定目录文本
618707
export const grepSearch: Tool = {
619708
name: 'grep_search',
620-
description: '在指定目录中搜索文本。',
709+
description: `在指定目录中搜索包含特定文本的文件,适合日志分析或代码搜索。
710+
711+
使用场景:
712+
713+
搜索关键词:用户说“在 C:\\logs 里找 'error'”。
714+
代码审查:查找“userId”的使用。
715+
日志分析:定位“timeout”。
716+
具体示例:
717+
用户说:“在 C:\\projects 里搜索 'error'。”
718+
调用 grep_search,参数 directory: "C:\\projects", pattern: "error",返回:
719+
“结果:C:\\projects\\log.txt, C:\\projects\\test.py`,
621720
parameters: {
622721
type: 'object',
623722
properties: {
@@ -642,7 +741,17 @@ registerTool(grepSearch);
642741
// 9. 在路径下递归搜索文件
643742
export const findFiles: Tool = {
644743
name: 'find_files',
645-
description: '在指定路径下递归搜索文件,支持文件名或正则表达式匹配。',
744+
description: `递归搜索指定路径下的文件,支持文件名或正则表达式,适合文件管理。
745+
746+
使用场景:
747+
748+
查找文件:用户说“找 C:\projects 里的 config.json”。
749+
批量搜索:列出“.py 文件”。
750+
项目管理:搜索“test 开头的文件”。
751+
具体示例:
752+
用户说:“找 C:\projects 里所有的 .py 文件。”
753+
调用 find_files,参数 directory: "C:\projects", pattern: ".+\.py", useRegex: true,返回:
754+
“结果:C:\projects\main.py, C:\projects\test.py”`,
646755
parameters: {
647756
type: 'object',
648757
properties: {
@@ -713,7 +822,25 @@ registerTool(findFiles);
713822
// 修改后的writeMemory工具(移除本地嵌入生成和存储)
714823
export const writeMemory: Tool = {
715824
name: 'write_memory',
716-
description: 'Save knowledge or insights to memory.',
825+
description: `将重要信息或见解保存到记忆中,供将来检索。
826+
它适合记录对话中的关键点或学习成果,类似于一个知识库。
827+
一些我要求你记住的东西,或者是联网搜索到的知识,你自己总结出来的感悟。你都可以总结起来存入本地记忆。
828+
一些我们一起讨论得出的结论你也可以存起来。你要做个虚心好学的学生,学到的东西都要做好笔记。
829+
如果一个任务你做了好几个步骤才完成,可以总结一下,写明任务目标,注意事项,一些积累经验,快速执行的方法,存入记忆,下次类似任务可以根据这个经验快速处理。
830+
831+
使用场景:
832+
- 记录新信息: 例如,用户说“我发现了一个新工具叫 X”,你可以保存它。
833+
- 学习过程: 例如,保存一个技巧“Python 的 lambda 函数用法”。
834+
- 任务跟踪: 例如,记录项目更新“项目 A 的截止日期是明天”。
835+
836+
具体示例:
837+
用户说:“我发现了一个新工具叫 CodeAI。”
838+
你调用 write_memory,参数 content: "新工具:CodeAI",
839+
返回:
840+
“记忆已保存:新工具:CodeAI。”
841+
842+
如何使用:
843+
- 参数 content: 输入要保存的内容。`,
717844
parameters: {
718845
type: 'object',
719846
properties: {
@@ -749,7 +876,22 @@ export const writeMemory: Tool = {
749876
// 修改后的readMemory工具(移除本地相似度计算)
750877
export const readMemory: Tool = {
751878
name: 'read_memory',
752-
description: 'Retrieve relevant knowledge from memory.',
879+
description: `从记忆中检索信息,适合回顾保存的内容。
880+
有时候我要你回忆一下,就是要你从这里调取记忆。我们以前进行的对话,我纠正过你的记忆,或者你自己总结的感悟都会在本地记忆里。
881+
你要勤于调取本地记忆,看看是否有和当前任务相关的记忆,帮助你更好的执行任务。
882+
有一些复杂任务你可以预先调取记忆,看以前有没有遇到过类似任务,有没有总结过的经验可以参考,从而高效的完成。
883+
884+
使用场景:
885+
886+
回忆信息:用户问“之前提到的工具是什么?”
887+
引用知识:使用保存的内容。
888+
任务回顾:查看“截止日期”。
889+
具体示例:
890+
用户说:“之前提到的工具是什么?”
891+
调用 read_memory,参数 query: "工具",返回:
892+
“结果:新工具:CodeAI”
893+
参数说明:
894+
query: 搜索关键词。`,
753895
parameters: {
754896
type: 'object',
755897
properties: {

src/chatPanel.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,10 @@ export class ChatPanel {
268268
每次只调用一个工具,然后结束输出等返回。然后再调用下一个工具。
269269
你要先理解任务,搞清楚哪些信息你是不知道的, 用记忆结构查询记忆,如果能查到就采用,
270270
然后指定任务计划,规划好分几个步骤,用tool去逐步去推进。
271-
等你觉得信息获得足够了再开始决策和输出结论。` + normalSystemPrompt
271+
等你觉得信息获得足够了再开始决策和输出结论。
272+
每次任务开始,你要先调取老记忆,看看以前有没有执行过类似任务,吸取经验。
273+
每次对话结束,如果获得了新的知识或者有感悟,或者我纠正了你某些内容,你可以用工具存储这些记忆。
274+
` + normalSystemPrompt
272275
: normalSystemPrompt;
273276

274277
return await callDeepSeekApi(

0 commit comments

Comments
 (0)