✨ feat(vscode): 新增「了解一块代码」:AI 找功能代码占一栏,对话里接着改
主栏标题栏的放大镜问要了解哪一块,占一个栏位建一栏(和收藏共用 30 个栏位,视图改名 slot1..30,按 slotKindN 分收藏 / 功能挂标题栏按钮),同时开对话页让 Claude 只读地在全部工作区文件夹里找,按 --json-schema 交回环节 → 文件 + 符号 + 一句话。 对话复用预览顶部的聊天(CodeQa.askTop:会话续接、进行中的一轮、记录存 workspaceState);结构不合格算这一轮没答成、留着能再画出来。 条目每次画、点时按眼下的代码找:有语言插件的解析成代码块按「类名.方法名」找,没有的问 VS Code 文档符号;找不到画成灰的。
This commit is contained in:
1 parent
16d27004d8
commit
880bf7fc57
38 files changed
+3386
-378
No files matched your search
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* 预览顶部的问答:按「工作区文件夹 + 相对路径」记在这个窗口的 workspaceState 里。
|
||||
* 文件和文件夹各用各的路径;不写进按块存的 `.spx/code-qa.json`。
|
||||
* 预览顶部的问答:文件、文件夹按「工作区文件夹 + 相对路径」,「了解一块代码」的功能对话页按功能的 id,记在这个窗口的 workspaceState 里。
|
||||
* 不写进按块存的 `.spx/code-qa.json`。
|
||||
*/
|
||||
|
||||
import type { QaEntry } from './qaMap'
|
||||
@@ -32,6 +32,11 @@ export function pathQaKey(folderUri: string, relativePath: string): string {
|
||||
return `${folderUri}\n${relativePath}`
|
||||
}
|
||||
|
||||
/** 「了解一块代码」一个功能的对话记录的键。工作区文件夹的 Uri 带协议名(`file://`),和它撞不上。 */
|
||||
export function featureQaKey(id: string): string {
|
||||
return `feature\n${id}`
|
||||
}
|
||||
|
||||
/** 给人看的相对路径;工作区根写成 `.`。 */
|
||||
export function displayRelativePath(relativePath: string): string {
|
||||
return relativePath === '' ? '.' : relativePath
|
||||
@@ -60,6 +65,15 @@ export function withoutPathQa(map: PathQaMap, key: string, entryId: string): Pat
|
||||
return { ...map, [key]: kept }
|
||||
}
|
||||
|
||||
/** 去掉这个键下的全部问答;没有这个键时原样返回。 */
|
||||
export function withoutPathQaKey(map: PathQaMap, key: string): PathQaMap {
|
||||
if (!(key in map))
|
||||
return map
|
||||
const next = { ...map }
|
||||
delete next[key]
|
||||
return next
|
||||
}
|
||||
|
||||
/** 读 workspaceState 里存的表;认不出的丢掉,不让一条坏数据把整份弄丢。 */
|
||||
export function parsePathQa(value: unknown): PathQaMap {
|
||||
if (!isRecord(value))
|
||||
|
||||
Reference in new issue
Block a user