thatgfsj-code 0.3.0 → 0.3.1
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.
- package/CHANGELOG.md +229 -0
- package/DEVELOPMENT.md +286 -0
- package/README.md +144 -79
- package/dist/agent/core.d.ts +56 -0
- package/dist/agent/core.d.ts.map +1 -0
- package/dist/agent/core.js +142 -0
- package/dist/agent/core.js.map +1 -0
- package/dist/agent/index.d.ts +8 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +8 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/intent.d.ts +36 -0
- package/dist/agent/intent.d.ts.map +1 -0
- package/dist/agent/intent.js +146 -0
- package/dist/agent/intent.js.map +1 -0
- package/dist/agent/streaming.d.ts +50 -0
- package/dist/agent/streaming.d.ts.map +1 -0
- package/dist/agent/streaming.js +110 -0
- package/dist/agent/streaming.js.map +1 -0
- package/dist/core/ai-engine.d.ts +76 -0
- package/dist/core/ai-engine.d.ts.map +1 -0
- package/dist/core/ai-engine.js +394 -0
- package/dist/core/ai-engine.js.map +1 -0
- package/dist/core/cli.d.ts +21 -0
- package/dist/core/cli.d.ts.map +1 -0
- package/dist/core/cli.js +143 -0
- package/dist/core/cli.js.map +1 -0
- package/dist/core/config.d.ts +55 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +162 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context-compactor.d.ts +54 -0
- package/dist/core/context-compactor.d.ts.map +1 -0
- package/dist/core/context-compactor.js +197 -0
- package/dist/core/context-compactor.js.map +1 -0
- package/dist/core/hooks.d.ts +75 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +146 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/permissions.d.ts +52 -0
- package/dist/core/permissions.d.ts.map +1 -0
- package/dist/core/permissions.js +237 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/session.d.ts +54 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +147 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +175 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/state.d.ts +60 -0
- package/dist/core/state.d.ts.map +1 -0
- package/dist/core/state.js +106 -0
- package/dist/core/state.js.map +1 -0
- package/dist/core/subagent.d.ts +68 -0
- package/dist/core/subagent.d.ts.map +1 -0
- package/dist/core/subagent.js +142 -0
- package/dist/core/subagent.js.map +1 -0
- package/dist/core/system-prompt.d.ts +40 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +138 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/tool-registry.d.ts +53 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js +138 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/core/types.d.ts +206 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +127 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/{cmd/index.d.ts.map → index.d.ts.map} +1 -1
- package/dist/index.js +472 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +1 -1
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/repl/index.d.ts +8 -0
- package/dist/repl/index.d.ts.map +1 -0
- package/dist/repl/index.js +8 -0
- package/dist/repl/index.js.map +1 -0
- package/dist/repl/input.d.ts +69 -0
- package/dist/repl/input.d.ts.map +1 -0
- package/dist/repl/input.js +139 -0
- package/dist/repl/input.js.map +1 -0
- package/dist/repl/loop.d.ts +184 -0
- package/dist/repl/loop.d.ts.map +1 -0
- package/dist/repl/loop.js +932 -0
- package/dist/repl/loop.js.map +1 -0
- package/dist/repl/output.d.ts +105 -0
- package/dist/repl/output.d.ts.map +1 -0
- package/dist/repl/output.js +199 -0
- package/dist/repl/output.js.map +1 -0
- package/dist/repl/welcome.d.ts +68 -0
- package/dist/repl/welcome.d.ts.map +1 -0
- package/dist/repl/welcome.js +254 -0
- package/dist/repl/welcome.js.map +1 -0
- package/dist/tools/file.d.ts +1 -1
- package/dist/tools/file.d.ts.map +1 -1
- package/dist/tools/git.d.ts +1 -1
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/index.d.ts +15 -35
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +31 -80
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/search.d.ts +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/shell.d.ts +11 -4
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +78 -42
- package/dist/tools/shell.js.map +1 -1
- package/dist/utils/diff-preview.d.ts +42 -0
- package/dist/utils/diff-preview.d.ts.map +1 -0
- package/dist/utils/diff-preview.js +174 -0
- package/dist/utils/diff-preview.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/memory.d.ts +81 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +186 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/project-context.d.ts +62 -0
- package/dist/utils/project-context.d.ts.map +1 -0
- package/dist/utils/project-context.js +197 -0
- package/dist/utils/project-context.js.map +1 -0
- package/docs/API_KEY_GUIDE.md +6 -0
- package/docs/FAQ.md +25 -3
- package/package.json +41 -9
- package/ROADMAP.md +0 -61
- package/dist/app/agent.d.ts +0 -31
- package/dist/app/agent.d.ts.map +0 -1
- package/dist/app/agent.js +0 -106
- package/dist/app/agent.js.map +0 -1
- package/dist/app/index.d.ts +0 -39
- package/dist/app/index.d.ts.map +0 -1
- package/dist/app/index.js +0 -80
- package/dist/app/index.js.map +0 -1
- package/dist/cmd/index.d.ts +0 -12
- package/dist/cmd/index.js +0 -85
- package/dist/cmd/index.js.map +0 -1
- package/dist/config/index.d.ts +0 -39
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -110
- package/dist/config/index.js.map +0 -1
- package/dist/config/providers.d.ts +0 -23
- package/dist/config/providers.d.ts.map +0 -1
- package/dist/config/providers.js +0 -152
- package/dist/config/providers.js.map +0 -1
- package/dist/config/types.d.ts +0 -33
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -5
- package/dist/config/types.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -31
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -71
- package/dist/hooks/index.js.map +0 -1
- package/dist/llm/anthropic.d.ts +0 -17
- package/dist/llm/anthropic.d.ts.map +0 -1
- package/dist/llm/anthropic.js +0 -126
- package/dist/llm/anthropic.js.map +0 -1
- package/dist/llm/gemini.d.ts +0 -16
- package/dist/llm/gemini.d.ts.map +0 -1
- package/dist/llm/gemini.js +0 -107
- package/dist/llm/gemini.js.map +0 -1
- package/dist/llm/index.d.ts +0 -48
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js +0 -174
- package/dist/llm/index.js.map +0 -1
- package/dist/llm/openai.d.ts +0 -17
- package/dist/llm/openai.d.ts.map +0 -1
- package/dist/llm/openai.js +0 -113
- package/dist/llm/openai.js.map +0 -1
- package/dist/llm/provider.d.ts +0 -33
- package/dist/llm/provider.d.ts.map +0 -1
- package/dist/llm/provider.js +0 -6
- package/dist/llm/provider.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -27
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js +0 -102
- package/dist/prompts/index.js.map +0 -1
- package/dist/session/compactor.d.ts +0 -48
- package/dist/session/compactor.d.ts.map +0 -1
- package/dist/session/compactor.js +0 -77
- package/dist/session/compactor.js.map +0 -1
- package/dist/session/index.d.ts +0 -48
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -69
- package/dist/session/index.js.map +0 -1
- package/dist/session/message.d.ts +0 -26
- package/dist/session/message.d.ts.map +0 -1
- package/dist/session/message.js +0 -34
- package/dist/session/message.js.map +0 -1
- package/dist/tools/types.d.ts +0 -68
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -57
- package/dist/tools/types.js.map +0 -1
- package/dist/tui/index.d.ts +0 -8
- package/dist/tui/index.d.ts.map +0 -1
- package/dist/tui/index.js +0 -8
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/input.d.ts +0 -14
- package/dist/tui/input.d.ts.map +0 -1
- package/dist/tui/input.js +0 -50
- package/dist/tui/input.js.map +0 -1
- package/dist/tui/output.d.ts +0 -20
- package/dist/tui/output.d.ts.map +0 -1
- package/dist/tui/output.js +0 -70
- package/dist/tui/output.js.map +0 -1
- package/dist/tui/repl.d.ts +0 -25
- package/dist/tui/repl.d.ts.map +0 -1
- package/dist/tui/repl.js +0 -114
- package/dist/tui/repl.js.map +0 -1
- package/dist/tui/welcome.d.ts +0 -15
- package/dist/tui/welcome.d.ts.map +0 -1
- package/dist/tui/welcome.js +0 -86
- package/dist/tui/welcome.js.map +0 -1
- package/dist/types.d.ts +0 -38
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -6
- package/dist/types.js.map +0 -1
- package/dist/utils/diff.d.ts +0 -22
- package/dist/utils/diff.d.ts.map +0 -1
- package/dist/utils/diff.js +0 -60
- package/dist/utils/diff.js.map +0 -1
- package/dist/utils/project.d.ts +0 -32
- package/dist/utils/project.d.ts.map +0 -1
- package/dist/utils/project.js +0 -89
- package/dist/utils/project.js.map +0 -1
- package/src/app/agent.ts +0 -140
- package/src/app/index.ts +0 -101
- package/src/cmd/index.ts +0 -96
- package/src/config/index.ts +0 -130
- package/src/config/providers.ts +0 -160
- package/src/config/types.ts +0 -46
- package/src/hooks/index.ts +0 -111
- package/src/llm/anthropic.ts +0 -146
- package/src/llm/gemini.ts +0 -127
- package/src/llm/index.ts +0 -209
- package/src/llm/openai.ts +0 -132
- package/src/llm/provider.ts +0 -38
- package/src/mcp/client.ts +0 -330
- package/src/prompts/index.ts +0 -123
- package/src/session/compactor.ts +0 -103
- package/src/session/index.ts +0 -81
- package/src/session/message.ts +0 -42
- package/src/tools/file.ts +0 -117
- package/src/tools/git.ts +0 -132
- package/src/tools/index.ts +0 -108
- package/src/tools/search.ts +0 -263
- package/src/tools/shell.ts +0 -136
- package/src/tools/types.ts +0 -122
- package/src/tui/index.ts +0 -8
- package/src/tui/input.ts +0 -56
- package/src/tui/output.ts +0 -83
- package/src/tui/repl.ts +0 -131
- package/src/tui/welcome.ts +0 -101
- package/src/types.ts +0 -42
- package/src/utils/diff.ts +0 -71
- package/src/utils/project.ts +0 -99
- package/tsconfig.json +0 -19
package/README.md
CHANGED
|
@@ -1,136 +1,201 @@
|
|
|
1
1
|
# Thatgfsj Code 🤖
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
你的 CLI 工具 - 像 Claude Code 一样使用 AI 编程。
|
|
4
|
+
|
|
5
|
+
> 当前版本: **0.2.2** · Node.js ≥ 18 · MIT 许可证
|
|
4
6
|
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
## ⭐ 特性
|
|
8
10
|
|
|
9
|
-
- 🤖 **AI 对话**
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
11
|
+
- 🤖 **AI 对话** — 用自然语言让 AI 帮你写代码
|
|
12
|
+
- 📖 **代码解释** — 通俗易懂地解释代码含义
|
|
13
|
+
- 🔧 **代码调试** — 找出 bug 并给出修复方案
|
|
14
|
+
- 📦 **代码模板** — 快速生成项目代码
|
|
15
|
+
- 💬 **交互模式** — 持续对话,像聊天一样编程
|
|
16
|
+
- 🧰 **内置工具** — 文件读写 / Shell 执行 / Git 操作 / 代码搜索
|
|
17
|
+
- 🚫 **抗污染防御** — `SessionManager` 自动过滤 `[已中断]` 等历史污染
|
|
14
18
|
|
|
15
19
|
---
|
|
16
20
|
|
|
17
21
|
## 🚀 快速开始
|
|
18
22
|
|
|
19
|
-
###
|
|
23
|
+
### 🎯 一键安装(推荐)
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
git clone https://github.com/Thatgfsj/thatgfsj-code.git
|
|
24
|
-
cd thatgfsj-code
|
|
25
|
+
安装脚本全部托管在 GitHub 上、`install.sh` / `install.ps1` / `install.bat`
|
|
26
|
+
可直接 curl / iwr:
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
npm install
|
|
28
|
-
|
|
29
|
-
# 编译
|
|
30
|
-
npm run build
|
|
28
|
+
**macOS / Linux**:
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
```bash
|
|
31
|
+
curl -L https://raw.githubusercontent.com/Thatgfsj/thatgfsj-code/main/install.sh | bash
|
|
34
32
|
```
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
**Windows (PowerShell)**:
|
|
37
35
|
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
```powershell
|
|
37
|
+
irm https://raw.githubusercontent.com/Thatgfsj/thatgfsj-code/main/install.ps1 | iex
|
|
38
|
+
```
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
**Windows (CMD)**:
|
|
41
|
+
|
|
42
|
+
```cmd
|
|
43
|
+
curl -L https://raw.githubusercontent.com/Thatgfsj/thatgfsj-code/main/install.bat -o install.bat && install.bat
|
|
45
44
|
```
|
|
46
45
|
|
|
46
|
+
> ⚠️ 旧版本 README 里出现的 `https://git.io/thatgfsj` 短链已失效(GitHub 在 2022
|
|
47
|
+
> 年下线了 `git.io`),请使用上面的原始 GitHub 链接。
|
|
48
|
+
|
|
49
|
+
安装过程会自动完成:
|
|
50
|
+
1. 检查/安装 Node.js(≥ 18)
|
|
51
|
+
2. 下载代码 / 链接 npm 全局命令
|
|
52
|
+
3. 安装依赖并构建 `dist/`
|
|
53
|
+
4. 引导你设置 API Key
|
|
54
|
+
|
|
47
55
|
---
|
|
48
56
|
|
|
49
57
|
## 📖 使用方法
|
|
50
58
|
|
|
59
|
+
安装完成后,在终端里直接用 `gfcode`(或 `thatgfsj`,两个 bin 都指向同一入口):
|
|
60
|
+
|
|
51
61
|
```bash
|
|
52
62
|
# 交互模式(推荐)
|
|
53
63
|
gfcode
|
|
54
64
|
|
|
55
|
-
#
|
|
56
|
-
gfcode "
|
|
65
|
+
# 让 AI 帮你写代码(单命令模式,自动流式输出)
|
|
66
|
+
gfcode "写一个 Python 的 Hello World"
|
|
67
|
+
gfcode -m Qwen/Qwen2.5-32B-Instruct "重构 src/index.ts"
|
|
68
|
+
|
|
69
|
+
# 解释代码:直接传字符串,或 -f 指定文件
|
|
70
|
+
gfcode explain "const add = (a, b) => a + b;"
|
|
71
|
+
gfcode explain -f src/index.ts
|
|
57
72
|
|
|
58
|
-
#
|
|
59
|
-
gfcode
|
|
73
|
+
# 调试代码:可附加 -e 错误信息
|
|
74
|
+
gfcode debug "你的代码"
|
|
75
|
+
gfcode debug -f src/foo.ts -e "TypeError: x is not a function"
|
|
60
76
|
|
|
61
|
-
#
|
|
62
|
-
gfcode
|
|
77
|
+
# 问答(带当前项目上下文)
|
|
78
|
+
gfcode chat "怎么用 Node.js 写 API?"
|
|
79
|
+
|
|
80
|
+
# 生成代码模板
|
|
81
|
+
gfcode template react -n MyButton -o ./components
|
|
63
82
|
```
|
|
64
83
|
|
|
65
|
-
|
|
84
|
+
> `--stream` / `--no-auto` / `-m` 接受任意命令并对当次调用生效;`-i` 强制进入 REPL。
|
|
85
|
+
> 详细 flag 见 [`DEVELOPMENT.md`](./DEVELOPMENT.md) 第 5 节。
|
|
66
86
|
|
|
67
|
-
|
|
68
|
-
|------|------|
|
|
69
|
-
| `help` | 显示帮助 |
|
|
70
|
-
| `tools` | 列出可用工具 |
|
|
71
|
-
| `model` | 显示当前模型 |
|
|
72
|
-
| `clear` | 清屏 |
|
|
73
|
-
| `exit` | 退出 |
|
|
87
|
+
### REPL 内置命令
|
|
74
88
|
|
|
75
|
-
|
|
89
|
+
进入交互模式(直接运行 `gfcode`)后,可以输入下列命令(带或不带前导 `/` 都行):
|
|
76
90
|
|
|
77
|
-
|
|
91
|
+
| 命令 | 作用 |
|
|
92
|
+
| -------------- | --------------------------------------------------- |
|
|
93
|
+
| `help` | 显示所有内置命令 |
|
|
94
|
+
| `exit` | 退出 REPL |
|
|
95
|
+
| `clear` | 清屏 |
|
|
96
|
+
| `context` | 显示当前项目上下文 |
|
|
97
|
+
| `history` | 显示本次会话的命令历史 |
|
|
98
|
+
| `tools` | 列出已注册的工具(file / shell / git / search) |
|
|
99
|
+
| `models` | 只读地列出当前 provider 的可用模型 |
|
|
100
|
+
| `providers` | 只读地列出支持的 provider |
|
|
101
|
+
| `/model` | **交互式切换当前 provider 下的模型**,立即生效并持久化到 `~/.thatgfsj/config.json` |
|
|
102
|
+
| `/provider` | **交互式切换 provider**,切换后自动跟进选模型 |
|
|
103
|
+
| `Ctrl+C` | 单次:停止当前流式生成;空输入连续两次退出 REPL |
|
|
104
|
+
|
|
105
|
+
#### `/model` / `/provider` 示例
|
|
78
106
|
|
|
79
107
|
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
108
|
+
> /model
|
|
109
|
+
🤖 /model — 切换模型 (provider: siliconflow)
|
|
110
|
+
|
|
111
|
+
最近使用:
|
|
112
|
+
r1. Qwen/Qwen2.5-32B-Instruct
|
|
113
|
+
r2. Pro/moonshotai/Kimi-K2.5
|
|
114
|
+
|
|
115
|
+
内置模型:
|
|
116
|
+
1. Qwen2.5-7B (推荐) Qwen/Qwen2.5-7B-Instruct ✓
|
|
117
|
+
2. Qwen2.5-32B Qwen/Qwen2.5-32B-Instruct
|
|
118
|
+
3. Qwen2.5-72B Qwen/Qwen2.5-72B-Instruct
|
|
119
|
+
4. Kimi-K2.5 (私有) Pro/moonshotai/Kimi-K2.5
|
|
120
|
+
5. DeepSeek-V3 Pro/deepseek-ai/DeepSeek-V3
|
|
121
|
+
…
|
|
122
|
+
|
|
123
|
+
输入编号 (r1-r2 / 1-10)、完整 model id、或任意自定义 id。回车保持当前。
|
|
124
|
+
model > r2
|
|
125
|
+
✅ 模型已切换为: Pro/moonshotai/Kimi-K2.5 (Pro/moonshotai/Kimi-K2.5)
|
|
126
|
+
|
|
127
|
+
# 也可以直接粘一个自定义 model id(适合 OpenAI-compatible 中转/Ollama):
|
|
128
|
+
model > my-custom-fine-tune
|
|
129
|
+
✅ 模型已切换为: my-custom-fine-tune (自定义)
|
|
96
130
|
```
|
|
97
131
|
|
|
132
|
+
`/provider` 的工作流类似,但会让你先选 9 个提供商之一(SiliconFlow /
|
|
133
|
+
MiniMax / OpenAI / Anthropic / Gemini / Kimi / DeepSeek / ERNIE / Ollama),
|
|
134
|
+
然后自动跟进模型选择。如果新 provider 缺少对应的环境变量,会提示先
|
|
135
|
+
`gfcode init` 或手动 `export`。
|
|
136
|
+
|
|
137
|
+
切换过的 model 会写入 `~/.thatgfsj/models.json` 历史文件,下次打开
|
|
138
|
+
`/model` 时按时间倒序展示在「最近使用」段。
|
|
139
|
+
|
|
98
140
|
---
|
|
99
141
|
|
|
100
|
-
##
|
|
142
|
+
## ❓ 常见问题
|
|
101
143
|
|
|
102
|
-
|
|
103
|
-
|----------|------|----------|
|
|
104
|
-
| SiliconFlow | OpenAI | Qwen2.5-7B |
|
|
105
|
-
| MiniMax | Anthropic | MiniMax-M2.5 |
|
|
106
|
-
| OpenAI | OpenAI | gpt-4o-mini |
|
|
107
|
-
| Anthropic | Anthropic | claude-3-haiku |
|
|
108
|
-
| Gemini | Gemini | gemini-1.5-flash |
|
|
109
|
-
| DeepSeek | OpenAI | deepseek-chat |
|
|
110
|
-
| Kimi | OpenAI | moonshot-v1-8k |
|
|
111
|
-
| ERNIE | OpenAI | ernie-4.0-8k |
|
|
112
|
-
| Ollama | OpenAI | llama2 |
|
|
144
|
+
### Q: 安装后命令找不到?
|
|
113
145
|
|
|
114
|
-
|
|
146
|
+
**A**: 重启终端,然后运行 `gfcode`。Windows 上确认 PowerShell / CMD 已重新加载 `%PATH%`。
|
|
147
|
+
|
|
148
|
+
### Q: 怎么配置 API Key?
|
|
115
149
|
|
|
116
|
-
|
|
150
|
+
**A**: 运行 `gfcode init`,按提示选择提供商、粘贴 key、挑选模型。也可以直接设置环境变量
|
|
151
|
+
(`SILICONFLOW_API_KEY` / `OPENAI_API_KEY` / `MINIMAX_API_KEY` /
|
|
152
|
+
`ANTHROPIC_API_KEY` / `GEMINI_API_KEY` / `KIMI_API_KEY` / `DEEPSEEK_API_KEY` /
|
|
153
|
+
`ERNIE_API_KEY`),或者把配置写到 `~/.thatgfsj/config.json`。
|
|
117
154
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
155
|
+
### Q: 哪个 Provider 最好?
|
|
156
|
+
|
|
157
|
+
**A**: 新手推荐 **SiliconFlow**(性价比高,国产),可选用 Qwen2.5 / Kimi-K2.5 / DeepSeek-V3 等模型。
|
|
158
|
+
|
|
159
|
+
### Q: `--version` 显示老版本号?
|
|
160
|
+
|
|
161
|
+
**A**: 升级到 0.2.2+,版本号现在从 `package.json` 动态读取,CI / re-install 都会自动同步。
|
|
162
|
+
|
|
163
|
+
### Q: 启动瞬间报错 `ReferenceError: require is not defined`?
|
|
164
|
+
|
|
165
|
+
**A**: 那是 0.2.1 之前的 bug,0.2.2 已经修复(使用 `createRequire(import.meta.url)` 兼容)。
|
|
166
|
+
|
|
167
|
+
更多问题 → [`docs/FAQ.md`](./docs/FAQ.md)。
|
|
124
168
|
|
|
125
169
|
---
|
|
126
170
|
|
|
127
171
|
## 📚 文档
|
|
128
172
|
|
|
129
|
-
- [
|
|
130
|
-
- [
|
|
173
|
+
- [DEVELOPMENT.md](./DEVELOPMENT.md) — 架构 / 构建 / 扩展 / 发布(贡献者必读)
|
|
174
|
+
- [CHANGELOG.md](./CHANGELOG.md) — 每次版本的变更说明
|
|
175
|
+
- [docs/API_KEY_GUIDE.md](./docs/API_KEY_GUIDE.md) — 9 个 Provider 的 API Key 获取教程
|
|
176
|
+
- [docs/FAQ.md](./docs/FAQ.md) — 详细 FAQ
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 🧪 本地自检
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
npm install
|
|
184
|
+
npm test # node --test tests/
|
|
185
|
+
npm run build
|
|
186
|
+
node dist/index.js --version
|
|
187
|
+
```
|
|
131
188
|
|
|
132
189
|
---
|
|
133
190
|
|
|
134
191
|
## 🤝 问题反馈
|
|
135
192
|
|
|
193
|
+
有问题?去 GitHub 提 Issue:
|
|
194
|
+
|
|
136
195
|
https://github.com/Thatgfsj/thatgfsj-code/issues
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 📜 License
|
|
200
|
+
|
|
201
|
+
MIT © Thatgfsj
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Module
|
|
3
|
+
* Core agent logic with intent recognition, task planning, and streaming
|
|
4
|
+
*/
|
|
5
|
+
import { AIEngine } from '../core/ai-engine.js';
|
|
6
|
+
import { SessionManager } from '../core/session.js';
|
|
7
|
+
export interface AgentConfig {
|
|
8
|
+
maxIterations?: number;
|
|
9
|
+
streaming?: boolean;
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class Agent {
|
|
13
|
+
private ai;
|
|
14
|
+
private session;
|
|
15
|
+
private intentRecognizer;
|
|
16
|
+
private config;
|
|
17
|
+
private streaming;
|
|
18
|
+
constructor(ai: AIEngine, session: SessionManager, config?: AgentConfig);
|
|
19
|
+
/**
|
|
20
|
+
* Process user input through the agent
|
|
21
|
+
*/
|
|
22
|
+
process(input: string): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Handle complex multi-step tasks
|
|
25
|
+
*/
|
|
26
|
+
private handleComplexTask;
|
|
27
|
+
/**
|
|
28
|
+
* Handle command intent
|
|
29
|
+
*/
|
|
30
|
+
private handleCommand;
|
|
31
|
+
/**
|
|
32
|
+
* Handle query intent
|
|
33
|
+
*/
|
|
34
|
+
private handleQuery;
|
|
35
|
+
/**
|
|
36
|
+
* Handle general/code/chat intents
|
|
37
|
+
*/
|
|
38
|
+
private handleGeneral;
|
|
39
|
+
/**
|
|
40
|
+
* Process with streaming output
|
|
41
|
+
*/
|
|
42
|
+
processStream(input: string, onChunk: (chunk: string) => void): Promise<string>;
|
|
43
|
+
/**
|
|
44
|
+
* Get session
|
|
45
|
+
*/
|
|
46
|
+
getSession(): SessionManager;
|
|
47
|
+
/**
|
|
48
|
+
* Clear session
|
|
49
|
+
*/
|
|
50
|
+
clearSession(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Interrupt ongoing operation
|
|
53
|
+
*/
|
|
54
|
+
interrupt(): void;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/agent/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAkB;gBAEvB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW;IAavE;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B7C;;OAEG;YACW,iBAAiB;IAuB/B;;OAEG;YACW,aAAa;IAgB3B;;OAEG;YACW,WAAW;IAUzB;;OAEG;YACW,aAAa;IAU3B;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBrF;;OAEG;IACH,UAAU,IAAI,cAAc;IAI5B;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,SAAS,IAAI,IAAI;CAGlB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Module
|
|
3
|
+
* Core agent logic with intent recognition, task planning, and streaming
|
|
4
|
+
*/
|
|
5
|
+
import { IntentRecognizer } from './intent.js';
|
|
6
|
+
import { StreamingOutput } from './streaming.js';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
export class Agent {
|
|
9
|
+
ai;
|
|
10
|
+
session;
|
|
11
|
+
intentRecognizer;
|
|
12
|
+
config;
|
|
13
|
+
streaming;
|
|
14
|
+
constructor(ai, session, config) {
|
|
15
|
+
this.ai = ai;
|
|
16
|
+
this.session = session;
|
|
17
|
+
this.intentRecognizer = new IntentRecognizer(ai);
|
|
18
|
+
this.config = {
|
|
19
|
+
maxIterations: 5,
|
|
20
|
+
streaming: false,
|
|
21
|
+
verbose: false,
|
|
22
|
+
...config
|
|
23
|
+
};
|
|
24
|
+
this.streaming = new StreamingOutput();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Process user input through the agent
|
|
28
|
+
*/
|
|
29
|
+
async process(input) {
|
|
30
|
+
// Step 1: Recognize intent
|
|
31
|
+
const intent = await this.intentRecognizer.recognize(input);
|
|
32
|
+
if (this.config.verbose) {
|
|
33
|
+
console.log(chalk.gray(`\n📍 Intent: ${intent.type} (${intent.confidence}) - ${intent.reason}`));
|
|
34
|
+
}
|
|
35
|
+
// Step 2: Handle complex tasks
|
|
36
|
+
if (intent.type === 'complex') {
|
|
37
|
+
return await this.handleComplexTask(input, intent);
|
|
38
|
+
}
|
|
39
|
+
// Step 3: Route to appropriate handler
|
|
40
|
+
switch (intent.type) {
|
|
41
|
+
case 'command':
|
|
42
|
+
return await this.handleCommand(input);
|
|
43
|
+
case 'query':
|
|
44
|
+
return await this.handleQuery(input);
|
|
45
|
+
case 'code':
|
|
46
|
+
case 'chat':
|
|
47
|
+
default:
|
|
48
|
+
return await this.handleGeneral(input);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Handle complex multi-step tasks
|
|
53
|
+
*/
|
|
54
|
+
async handleComplexTask(input, intent) {
|
|
55
|
+
const subtasks = await this.intentRecognizer.breakIntoSubtasks(input);
|
|
56
|
+
if (this.config.verbose) {
|
|
57
|
+
console.log(chalk.cyan(`\n📋 Breaking into ${subtasks.length} subtasks:`));
|
|
58
|
+
subtasks.forEach((task, i) => {
|
|
59
|
+
console.log(chalk.gray(` ${i + 1}. ${task.description} [${task.action}]`));
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
let results = [];
|
|
63
|
+
for (let i = 0; i < subtasks.length; i++) {
|
|
64
|
+
const task = subtasks[i];
|
|
65
|
+
console.log(chalk.cyan(`\n[${i + 1}/${subtasks.length}] ${task.description}...`));
|
|
66
|
+
const result = await this.process(task.description);
|
|
67
|
+
results.push(result);
|
|
68
|
+
}
|
|
69
|
+
return results.join('\n\n');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Handle command intent
|
|
73
|
+
*/
|
|
74
|
+
async handleCommand(input) {
|
|
75
|
+
// Extract command from input
|
|
76
|
+
const command = input
|
|
77
|
+
.replace(/^(run|execute|exec)\s+/i, '')
|
|
78
|
+
.trim();
|
|
79
|
+
// Add to session and get response
|
|
80
|
+
this.session.addMessage('user', input);
|
|
81
|
+
const response = await this.ai.chat(this.session.getMessages(), this.config.maxIterations);
|
|
82
|
+
this.session.addMessage('assistant', response.content);
|
|
83
|
+
return response.content;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Handle query intent
|
|
87
|
+
*/
|
|
88
|
+
async handleQuery(input) {
|
|
89
|
+
this.session.addMessage('user', input);
|
|
90
|
+
const response = await this.ai.chat(this.session.getMessages(), this.config.maxIterations);
|
|
91
|
+
this.session.addMessage('assistant', response.content);
|
|
92
|
+
return response.content;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Handle general/code/chat intents
|
|
96
|
+
*/
|
|
97
|
+
async handleGeneral(input) {
|
|
98
|
+
this.session.addMessage('user', input);
|
|
99
|
+
const response = await this.ai.chat(this.session.getMessages(), this.config.maxIterations);
|
|
100
|
+
this.session.addMessage('assistant', response.content);
|
|
101
|
+
return response.content;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Process with streaming output
|
|
105
|
+
*/
|
|
106
|
+
async processStream(input, onChunk) {
|
|
107
|
+
const wasStreaming = this.config.streaming;
|
|
108
|
+
this.config.streaming = true;
|
|
109
|
+
this.streaming.start({ onChunk });
|
|
110
|
+
try {
|
|
111
|
+
const result = await this.process(input);
|
|
112
|
+
this.streaming.end();
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
this.streaming.stop();
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
this.config.streaming = wasStreaming;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get session
|
|
125
|
+
*/
|
|
126
|
+
getSession() {
|
|
127
|
+
return this.session;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Clear session
|
|
131
|
+
*/
|
|
132
|
+
clearSession() {
|
|
133
|
+
this.session.clear();
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Interrupt ongoing operation
|
|
137
|
+
*/
|
|
138
|
+
interrupt() {
|
|
139
|
+
this.streaming.stop();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/agent/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Module
|
|
3
|
+
* Core agent logic with intent recognition and task planning
|
|
4
|
+
*/
|
|
5
|
+
export { Agent, type AgentConfig } from './core.js';
|
|
6
|
+
export { IntentRecognizer, type Intent, type SubTask } from './intent.js';
|
|
7
|
+
export { StreamingOutput } from './streaming.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAoB,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAA6B,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Recognition
|
|
3
|
+
* Identifies user intent: chat, code, command, or query
|
|
4
|
+
*/
|
|
5
|
+
export interface Intent {
|
|
6
|
+
type: 'chat' | 'code' | 'command' | 'query' | 'complex';
|
|
7
|
+
confidence: number;
|
|
8
|
+
reason?: string;
|
|
9
|
+
subTasks?: SubTask[];
|
|
10
|
+
}
|
|
11
|
+
export interface SubTask {
|
|
12
|
+
description: string;
|
|
13
|
+
action: string;
|
|
14
|
+
target?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare class IntentRecognizer {
|
|
17
|
+
private ai;
|
|
18
|
+
constructor(aiEngine: any);
|
|
19
|
+
/**
|
|
20
|
+
* Recognize intent from user message
|
|
21
|
+
*/
|
|
22
|
+
recognize(message: string): Promise<Intent>;
|
|
23
|
+
/**
|
|
24
|
+
* Fast keyword-based recognition
|
|
25
|
+
*/
|
|
26
|
+
private fastRecognize;
|
|
27
|
+
/**
|
|
28
|
+
* AI-powered recognition for ambiguous cases
|
|
29
|
+
*/
|
|
30
|
+
private aiRecognize;
|
|
31
|
+
/**
|
|
32
|
+
* Break complex task into subtasks
|
|
33
|
+
*/
|
|
34
|
+
breakIntoSubtasks(message: string): Promise<SubTask[]>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/agent/intent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAM;gBAEJ,QAAQ,EAAE,GAAG;IAIzB;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjD;;OAEG;IACH,OAAO,CAAC,aAAa;IAwErB;;OAEG;YACW,WAAW;IAMzB;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAgC7D"}
|