jinzd-ai-cli 0.4.81 → 0.4.83

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/README.zh-CN.md CHANGED
@@ -20,7 +20,9 @@
20
20
  - **Unified Diff Patch 编辑**(v0.4.72+)— `edit_file` 支持标准 `@@ -a,b +c,d @@` hunk,大文件多处小改最省 token;容忍 ±200 行漂移与空白差异
21
21
  - **Anthropic Batches API**(v0.4.73+)— `aicli batch submit/list/status/results/cancel` 包 Message Batches(50% 折扣 + 24 小时窗口),适合离线分析和批量 eval
22
22
  - **Web UI 会话回放**(v0.4.71+)— 会话列表每项 🎬 按钮打开时间轴回放:消息、工具调用、推理内容、cache-aware token 用量一目了然
23
- - **对话分支**(v0.4.74+)— REPL 内 `/branch list/new/switch/delete/rename`,Web UI 回放面板每条消息旁 🌿 "fork here" 按钮,任意位置开辟新分支探索不同方向,原对话保持不变
23
+ - **对话分支**(v0.4.74+)— REPL 内 `/branch list/new/switch/delete/rename/diff/cherry-pick`,Web UI 回放面板每条消息旁 🌿 "fork here" 按钮,任意位置开辟新分支探索不同方向,原对话保持不变;v0.4.81 起所有子命令支持 id / title / 唯一前缀
24
+ - **符号索引**(v0.4.76+,C1)— tree-sitter 持久化索引(TS/JS/TSX/JSX/Python)+ 3 个只读 AI 工具(`find_symbol` / `get_outline` / `find_references`)+ `/index status/rebuild/clear`;启动后台增量刷新,`write_file` 后自动 upsert
25
+ - **语义代码搜索**(v0.4.77+,C2)— `search_code` AI 工具 + 本地 sentence embedding(`paraphrase-multilingual-MiniLM-L12-v2`,117 MB 一次性下载,384 维,CPU 运行);支持中英文自然语言查询代码;`/index semantic-rebuild/semantic-clear` 管理
24
26
  - **流式工具调用** — 实时流式展示 AI 推理过程和工具调用
25
27
  - **子代理系统** — 将复杂子任务委派给独立子代理执行
26
28
  - **深度推理** — Claude Extended Thinking,`/think` 一键切换
@@ -137,7 +139,7 @@ aicli
137
139
 
138
140
  ## 内置工具(Agentic 能力)
139
141
 
140
- AI 在对话中可自主调用 24 个工具:
142
+ AI 在对话中可自主调用 28 个工具:
141
143
 
142
144
  | 工具 | 安全级别 | 说明 |
143
145
  |------|---------|------|
@@ -165,9 +167,20 @@ AI 在对话中可自主调用 24 个工具:
165
167
  | `git_log` | 安全 | 显示提交历史(单行/完整,按文件/作者过滤) |
166
168
  | `git_commit` | 写入 | 创建 git 提交(暂存文件、提交信息) |
167
169
  | `notebook_edit` | 写入 | 编辑 Jupyter notebook 单元格(增/改/删/移动) |
170
+ | `find_symbol` | 安全 | 按名称精确查找函数/类/方法定义(C1,tree-sitter 索引) |
171
+ | `get_outline` | 安全 | 获取文件的符号大纲(类 → 方法树)(C1) |
172
+ | `find_references` | 安全 | 查找符号的所有引用(C1) |
173
+ | `search_code` | 安全 | 语义代码搜索(C2,自然语言查询,中英文均可) |
168
174
 
169
175
  **安全级别**:`安全` = 自动执行,`写入` = diff 预览 + 确认,`破坏性` = 醒目警告 + 确认。
170
176
 
177
+ ### 文档深入阅读
178
+
179
+ - [`docs/TUTORIAL.zh-CN.md`](docs/TUTORIAL.zh-CN.md) — **10 节动手教程**,1 小时从零到熟练
180
+ - [`docs/USAGE.zh-CN.md`](docs/USAGE.zh-CN.md) — 完整参考手册(所有命令、工具、配置)
181
+ - [`docs/ADVANCED.zh-CN.md`](docs/ADVANCED.zh-CN.md) — 架构与内部原理(开发者向)
182
+ - [`docs/RECIPES.zh-CN.md`](docs/RECIPES.zh-CN.md) — 实战配方(按场景查)
183
+
171
184
  ## 主要 REPL 命令
172
185
 
173
186
  | 命令 | 说明 |
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-JWE53S2U.js";
4
+ } from "./chunk-AQDUA2NT.js";
5
5
  import "./chunk-2ZD3YTVM.js";
6
- import "./chunk-BPIKBXGZ.js";
6
+ import "./chunk-MNL53XPD.js";
7
7
 
8
8
  // src/cli/batch.ts
9
9
  import Anthropic from "@anthropic-ai/sdk";
@@ -8,7 +8,7 @@ import {
8
8
  CONFIG_FILE_NAME,
9
9
  HISTORY_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-BPIKBXGZ.js";
11
+ } from "./chunk-MNL53XPD.js";
12
12
 
13
13
  // src/config/config-manager.ts
14
14
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-BPIKBXGZ.js";
4
+ } from "./chunk-MNL53XPD.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync } from "child_process";
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-6VRJGH25.js";
20
20
  import {
21
21
  runTestsTool
22
- } from "./chunk-44MKM6OO.js";
22
+ } from "./chunk-BXN2BJAI.js";
23
23
  import {
24
24
  CONFIG_DIR_NAME,
25
25
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
@@ -27,7 +27,7 @@ import {
27
27
  SUBAGENT_ALLOWED_TOOLS,
28
28
  SUBAGENT_DEFAULT_MAX_ROUNDS,
29
29
  SUBAGENT_MAX_ROUNDS_LIMIT
30
- } from "./chunk-BPIKBXGZ.js";
30
+ } from "./chunk-MNL53XPD.js";
31
31
 
32
32
  // src/tools/builtin/bash.ts
33
33
  import { execSync } from "child_process";
@@ -6,7 +6,7 @@ import { platform } from "os";
6
6
  import chalk from "chalk";
7
7
 
8
8
  // src/core/constants.ts
9
- var VERSION = "0.4.81";
9
+ var VERSION = "0.4.83";
10
10
  var APP_NAME = "ai-cli";
11
11
  var CONFIG_DIR_NAME = ".aicli";
12
12
  var CONFIG_FILE_NAME = "config.json";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.81";
4
+ var VERSION = "0.4.83";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  schemaToJsonSchema,
4
4
  truncateForPersist
5
- } from "./chunk-HFSSDFQN.js";
5
+ } from "./chunk-H3CIS4XQ.js";
6
6
  import {
7
7
  AuthError,
8
8
  ProviderError,
@@ -18,7 +18,7 @@ import {
18
18
  MCP_PROTOCOL_VERSION,
19
19
  MCP_TOOL_PREFIX,
20
20
  VERSION
21
- } from "./chunk-BPIKBXGZ.js";
21
+ } from "./chunk-MNL53XPD.js";
22
22
 
23
23
  // src/providers/claude.ts
24
24
  import Anthropic from "@anthropic-ai/sdk";
@@ -36,7 +36,7 @@ import {
36
36
  VERSION,
37
37
  buildUserIdentityPrompt,
38
38
  runTestsTool
39
- } from "./chunk-VEWRTIMX.js";
39
+ } from "./chunk-HF47VUGH.js";
40
40
  import {
41
41
  hasSemanticIndex,
42
42
  semanticSearch
@@ -11070,7 +11070,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
11070
11070
  case "test": {
11071
11071
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
11072
11072
  try {
11073
- const { executeTests } = await import("./run-tests-Q2GGLRK6.js");
11073
+ const { executeTests } = await import("./run-tests-P2OZOWXA.js");
11074
11074
  const argStr = args.join(" ").trim();
11075
11075
  let testArgs = {};
11076
11076
  if (argStr) {
@@ -385,7 +385,7 @@ ${content}`);
385
385
  }
386
386
  }
387
387
  async function runTaskMode(config, providers, configManager, topic) {
388
- const { TaskOrchestrator } = await import("./task-orchestrator-2GGIA6EG.js");
388
+ const { TaskOrchestrator } = await import("./task-orchestrator-TT5F2OBH.js");
389
389
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
390
390
  let interrupted = false;
391
391
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -30,10 +30,10 @@ import {
30
30
  saveDevState,
31
31
  sessionHasMeaningfulContent,
32
32
  setupProxy
33
- } from "./chunk-U7ZSIOKV.js";
33
+ } from "./chunk-SEUAEDAI.js";
34
34
  import {
35
35
  ConfigManager
36
- } from "./chunk-JWE53S2U.js";
36
+ } from "./chunk-AQDUA2NT.js";
37
37
  import {
38
38
  ToolExecutor,
39
39
  ToolRegistry,
@@ -49,7 +49,7 @@ import {
49
49
  spawnAgentContext,
50
50
  theme,
51
51
  undoStack
52
- } from "./chunk-HFSSDFQN.js";
52
+ } from "./chunk-H3CIS4XQ.js";
53
53
  import "./chunk-2ZD3YTVM.js";
54
54
  import {
55
55
  fileCheckpoints
@@ -58,7 +58,7 @@ import "./chunk-NHNWUBXB.js";
58
58
  import "./chunk-CQQQFNND.js";
59
59
  import "./chunk-6VRJGH25.js";
60
60
  import "./chunk-PFYAAX2S.js";
61
- import "./chunk-44MKM6OO.js";
61
+ import "./chunk-BXN2BJAI.js";
62
62
  import {
63
63
  AGENTIC_BEHAVIOR_GUIDELINE,
64
64
  AUTHOR,
@@ -80,7 +80,7 @@ import {
80
80
  SKILLS_DIR_NAME,
81
81
  VERSION,
82
82
  buildUserIdentityPrompt
83
- } from "./chunk-BPIKBXGZ.js";
83
+ } from "./chunk-MNL53XPD.js";
84
84
 
85
85
  // src/index.ts
86
86
  import { program } from "commander";
@@ -2592,7 +2592,7 @@ ${hint}` : "")
2592
2592
  usage: "/test [command|filter]",
2593
2593
  async execute(args, ctx) {
2594
2594
  try {
2595
- const { executeTests } = await import("./run-tests-UX6KNA4R.js");
2595
+ const { executeTests } = await import("./run-tests-6ABISSWK.js");
2596
2596
  const argStr = args.join(" ").trim();
2597
2597
  let testArgs = {};
2598
2598
  if (argStr) {
@@ -6485,7 +6485,7 @@ program.command("web").description("Start Web UI server with browser-based chat
6485
6485
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
6486
6486
  process.exit(1);
6487
6487
  }
6488
- const { startWebServer } = await import("./server-LXE5HXOQ.js");
6488
+ const { startWebServer } = await import("./server-J2G6B6LP.js");
6489
6489
  await startWebServer({ port, host: options.host });
6490
6490
  });
6491
6491
  program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | migrate <name>)").action(async (action, username) => {
@@ -6608,7 +6608,7 @@ program.command("sessions").description("List recent conversation sessions").act
6608
6608
  });
6609
6609
  program.command("batch <action> [arg] [arg2]").description("Anthropic Message Batches: submit | list | status <id> | results <id> [out] | cancel <id>").option("--dry-run", "Parse and validate input without submitting (submit only)").action(async (action, arg, arg2, options) => {
6610
6610
  try {
6611
- const batch = await import("./batch-JOYUXWBK.js");
6611
+ const batch = await import("./batch-KMEDSLFU.js");
6612
6612
  switch (action) {
6613
6613
  case "submit":
6614
6614
  if (!arg) {
@@ -6768,7 +6768,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
6768
6768
  }),
6769
6769
  config.get("customProviders")
6770
6770
  );
6771
- const { startHub } = await import("./hub-WLBLPBT2.js");
6771
+ const { startHub } = await import("./hub-DZMTUFKU.js");
6772
6772
  await startHub(
6773
6773
  {
6774
6774
  topic: topic ?? "",
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-44MKM6OO.js";
6
- import "./chunk-BPIKBXGZ.js";
5
+ } from "./chunk-BXN2BJAI.js";
6
+ import "./chunk-MNL53XPD.js";
7
7
  export {
8
8
  executeTests,
9
9
  runTestsTool
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-VEWRTIMX.js";
4
+ } from "./chunk-HF47VUGH.js";
5
5
  export {
6
6
  executeTests,
7
7
  runTestsTool
@@ -20,10 +20,10 @@ import {
20
20
  persistToolRound,
21
21
  rebuildExtraMessages,
22
22
  setupProxy
23
- } from "./chunk-U7ZSIOKV.js";
23
+ } from "./chunk-SEUAEDAI.js";
24
24
  import {
25
25
  ConfigManager
26
- } from "./chunk-JWE53S2U.js";
26
+ } from "./chunk-AQDUA2NT.js";
27
27
  import {
28
28
  ToolExecutor,
29
29
  ToolRegistry,
@@ -41,14 +41,14 @@ import {
41
41
  spawnAgentContext,
42
42
  truncateOutput,
43
43
  undoStack
44
- } from "./chunk-HFSSDFQN.js";
44
+ } from "./chunk-H3CIS4XQ.js";
45
45
  import "./chunk-2ZD3YTVM.js";
46
46
  import "./chunk-4BKXL7SM.js";
47
47
  import "./chunk-NHNWUBXB.js";
48
48
  import "./chunk-CQQQFNND.js";
49
49
  import "./chunk-6VRJGH25.js";
50
50
  import "./chunk-PFYAAX2S.js";
51
- import "./chunk-44MKM6OO.js";
51
+ import "./chunk-BXN2BJAI.js";
52
52
  import {
53
53
  AGENTIC_BEHAVIOR_GUIDELINE,
54
54
  AUTHOR,
@@ -67,7 +67,7 @@ import {
67
67
  SKILLS_DIR_NAME,
68
68
  VERSION,
69
69
  buildUserIdentityPrompt
70
- } from "./chunk-BPIKBXGZ.js";
70
+ } from "./chunk-MNL53XPD.js";
71
71
  import {
72
72
  AuthManager
73
73
  } from "./chunk-BYNY5JPB.js";
@@ -2229,7 +2229,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
2229
2229
  case "test": {
2230
2230
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
2231
2231
  try {
2232
- const { executeTests } = await import("./run-tests-UX6KNA4R.js");
2232
+ const { executeTests } = await import("./run-tests-6ABISSWK.js");
2233
2233
  const argStr = args.join(" ").trim();
2234
2234
  let testArgs = {};
2235
2235
  if (argStr) {
@@ -4,17 +4,17 @@ import {
4
4
  getDangerLevel,
5
5
  googleSearchContext,
6
6
  truncateOutput
7
- } from "./chunk-HFSSDFQN.js";
7
+ } from "./chunk-H3CIS4XQ.js";
8
8
  import "./chunk-2ZD3YTVM.js";
9
9
  import "./chunk-4BKXL7SM.js";
10
10
  import "./chunk-NHNWUBXB.js";
11
11
  import "./chunk-CQQQFNND.js";
12
12
  import "./chunk-6VRJGH25.js";
13
13
  import "./chunk-PFYAAX2S.js";
14
- import "./chunk-44MKM6OO.js";
14
+ import "./chunk-BXN2BJAI.js";
15
15
  import {
16
16
  SUBAGENT_ALLOWED_TOOLS
17
- } from "./chunk-BPIKBXGZ.js";
17
+ } from "./chunk-MNL53XPD.js";
18
18
 
19
19
  // src/hub/task-orchestrator.ts
20
20
  import { createInterface } from "readline";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.81",
3
+ "version": "0.4.83",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",