@gird/ccli 2.12.0 → 2.13.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/README.md CHANGED
@@ -37,11 +37,13 @@ ccli --role coder "review 这段代码" # 使用 coding 角色单次调用
37
37
  进入对话后:
38
38
 
39
39
  - 直接输入即与 AI 对话,模型会记住上文(多轮对话)。
40
- - 模型可调用的工具:读文件、列目录、搜索代码、写文件、局部编辑文件、执行 shell 命令(写入/编辑/执行操作会请你确认,确认时可「始终允许」同类——bash 按命令首词、写/编辑按路径首段目录,本会话内自动放行;bash 也可 `background: true` 放后台长跑,用 `bash_output` 查看、`kill_bash` 终止)。
40
+ - 模型可调用的工具:读文件、列目录、搜索代码、写文件、局部编辑文件、执行 shell 命令(写入/编辑/执行操作会请你确认,确认时可「始终允许」同类——bash 按命令首词、写/编辑按路径首段目录,本会话内自动放行;bash 也可 `background: true` 放后台长跑,用 `bash_output` 查看、`kill_bash` 终止)。前台 bash 的 stdout/stderr 会**实时流式打印**(保留命令自身颜色),长命令不再干等结束;输出超过 40 行自动折叠、按 ctrl+o 展开。
41
41
  - 工具调用和结果都以**一行摘要**实时展示(如 `⚙ write_file index.html (85 行)` 接 ` → 已写入 …`);`write_file` 还会在落盘前把内容**带行号**逐行铺出,`edit_file` 则展示 `-` / `+` 的逐行 diff(红删绿增),长 content 不刷屏,每个工具逐步出现。
42
42
  - 对接支持思考(reasoning)的模型(如 DeepSeek-R1、Kimi、Qwen3-thinking)时,会在正文前用灰色流式展示「思考中…」;不支持的模型(如默认的 `qwen-plus`)自动跳过,不影响使用。
43
- - `write` / `edit` 的内容超过 40 行会自动折叠为「…(还有 N 行,按 ctrl+o 展开)」;在提示符下按 `ctrl+o` 即可展开查看全部(展开为追加补打,非原地重绘)。
44
- - `write_file` 的内容会随模型生成**逐行实时流式**显示(`⚙ write_file …(生成中…)` 后一行行长出来,像看着模型写代码),不再等参数到齐才一次性铺出;`edit_file` 等工具仍走「摘要 + 折叠」。
43
+ - `write` / `edit` 的内容超过 40 行会自动折叠为「…(还有 N 行,按 ctrl+o 展开)」;在空闲提示符下按 `ctrl+o` 会进入**全屏可滚动查看器**(alternate screen,类 `less`)查看完整内容,↑/↓/PgUp/PgDn/Home/End 滚动,`q` / `Enter` / `Esc` 退出后回到原提示符(未提交输入原样保留)。
44
+ - `write_file` 的内容会随模型生成**逐行实时流式**显示(`⚙ write_file …(生成中…)` 后一行行长出来,像看着模型写代码),不再等参数到齐才一次性铺出;`edit_file` 等工具仍走「摘要 + 折叠」。流式超过 40 行也会**自动停打**并显示「…(后续内容已折叠,按 ctrl+o 展开)」,在空闲提示符下按 `ctrl+o` 同样进入全屏可滚动查看器查看被隐藏的剩余行(主 / 子代理共用同一套,阈值与第 57 步折叠一致)。
45
+ - 多步骤任务时模型可用 `todo` 工具把任务拆成**待办清单**实时展示(`[x]` 完成 / `[>]` 进行中 / `[ ]` 待办,按状态上色),一眼看到总共几步、走到哪;无副作用、不需确认。回合结束时还会在**提示符上方渲染待办面板**(含完成计数,随每回合刷新);子代理的待办与主会话隔离,各自展示。
46
+ - 模型可调用 `task` 工具把**独立子任务委派给子代理**:子代理用独立上下文 + 全套工具(读/写/编辑/搜索/bash)自行完成,完成后只把结论返回主代理,避免中间过程污染主对话;子代理共享主会话的确认/「始终允许」/token 统计,且**不可再调用 task 继续委派**(防递归);子代理的 `write_file` 同样**逐行实时流式**展示,与主代理观感一致;可用 `subagent_type` 选 `explore`(只读探索,仅 `read_file`/`list_dir`/`grep`/`bash_output`,执行层硬边界保证不能改文件)或 `code`(编码,除 `task` 外全套工具),省略则为通用子代理;子代理运行时的工具调用 / 结果 / 流式写入 / 结论都会**缩进成 ` │ ` 嵌套块**(开始 / 结束横幅顶格作边界),与主代理输出区分开,折叠块按 `ctrl+o` 展开时同样带缩进。
45
47
  - `/help` 查看可用命令,`/clear` 清空历史,`/undo [n]` 撤销最近 n 轮对话。
46
48
  - `/compact` 把对话历史压缩成一段摘要,释放上下文(长对话逼近上限时用;仅在确有收益时替换)。上下文占比达到约 80% 时也会**自动压缩**。
47
49
  - `/model [id]` 查看当前模型或切换到新模型(输入空参数只查看)。
@@ -152,6 +154,18 @@ export ANTHROPIC_MODEL=claude-sonnet-4-5
152
154
 
153
155
  交互时用 `/role` 列出、`/role reviewer` 切换;非交互时用 `ccli --role reviewer "..."`。
154
156
 
157
+ **工具轮数上限**
158
+
159
+ 单个用户回合内,模型连续调用工具的最大轮数可在 config 里用 `maxStepsPerTurn` 调整(默认 50):
160
+
161
+ ```json
162
+ {
163
+ "maxStepsPerTurn": 100
164
+ }
165
+ ```
166
+
167
+ 设为 `0` 表示不限(直到模型自己停止)。长任务(连续改多文件、跑测试再修)容易触顶时调高即可;触顶会提示如何设置、不会崩会话。子代理(`task`)默认仍保持 8 轮,只有显式设正整数时才跟随。
168
+
155
169
  **项目级配置**
156
170
 
157
171
  你也可以在当前项目下创建 `.ccli/config.json`,它会覆盖全局配置中的同名字段:
package/dist/agent/ai.js CHANGED
@@ -60,7 +60,7 @@ class OpenAIClient {
60
60
  stream_options: { include_usage: true },
61
61
  };
62
62
  if (!options?.disableTools) {
63
- body.tools = toolDefs();
63
+ body.tools = toolDefs(options?.allowedTools);
64
64
  if (options?.requireTools) {
65
65
  body.tool_choice = 'required';
66
66
  }
@@ -149,7 +149,7 @@ class AnthropicClient {
149
149
  }
150
150
  async chat(messages, onDelta, options, onReasoning, onToolArgumentDelta) {
151
151
  const { system, messages: anthropicMessages } = toAnthropicMessages(messages);
152
- const tools = toAnthropicTools();
152
+ const tools = toAnthropicTools(options?.allowedTools);
153
153
  const stream = await this.client.messages.create({
154
154
  model: this.model,
155
155
  max_tokens: 4096,
@@ -274,9 +274,10 @@ export function toAnthropicMessages(messages) {
274
274
  }
275
275
  return { system: systemParts.join('\n\n'), messages: anthropicMessages };
276
276
  }
277
- /** 把内部工具定义转成 Anthropic 的 tool 格式。 */
278
- export function toAnthropicTools() {
279
- return toolDefs().map((t) => ({
277
+ /** 把内部工具定义转成 Anthropic 的 tool 格式。
278
+ * 传 allowedNames 时只转换这些工具(与 OpenAI 路径一致)。 */
279
+ export function toAnthropicTools(allowedNames) {
280
+ return toolDefs(allowedNames).map((t) => ({
280
281
  name: t.function.name,
281
282
  description: t.function.description,
282
283
  input_schema: {
@@ -1 +1 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/agent/ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/agent/ai.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { createInterface } from 'node:readline';
9
9
  import { join, relative } from 'node:path';
10
10
  import { NAME, VERSION } from '../../version.js';
11
11
  import { style } from '../style.js';
12
- import { loadConfig, maskKey, DEFAULT_SYSTEM_PROMPT, getRolePrompt, } from '../../config/config.js';
12
+ import { loadConfig, maskKey, DEFAULT_SYSTEM_PROMPT, getRolePrompt, resolveMaxStepsPerTurn, } from '../../config/config.js';
13
13
  import { loadEnvFile } from '../../config/env.js';
14
14
  import { appendMemories, appendProjectMemory, loadMemories, SCOPE_LABEL, } from '../../config/memory.js';
15
15
  import { createAIClient } from '../../agent/ai.js';
@@ -24,11 +24,10 @@ import { registerMcpTools, resetTools } from '../../tools/index.js';
24
24
  import { emptyStats, formatStats, } from '../stats/index.js';
25
25
  import { runAgentTurn } from '../run/index.js';
26
26
  import { consumeFolded } from '../run/fold.js';
27
+ import { openFoldPager } from '../run/pager.js';
27
28
  import { Permission, alwaysLabelFor } from '../run/permissions.js';
28
29
  import { autoCompactIfNeeded } from '../slash/system/compact.js';
29
30
  const PROMPT = '› ';
30
- /** 单个用户回合内,最多允许模型连续调用工具的轮数,防止失控循环。 */
31
- const MAX_TOOL_ROUNDS = 10;
32
31
  export async function startRepl() {
33
32
  // 启动即解析配置:缺失就明确报错退出,不进入循环
34
33
  const result = loadConfig();
@@ -116,8 +115,9 @@ export async function startRepl() {
116
115
  };
117
116
  // 正在等待 AI 回复时置 true,避免这期间的输入被重复处理
118
117
  let busy = false;
119
- // ctrl+o:在空闲提示符下展开最近一次被折叠的长块(write/edit 内容)。
120
- // 清掉当前提示符行补打被隐藏的剩余行重新绘制提示符并恢复未提交输入。
118
+ // ctrl+o:在空闲提示符下查看被折叠的长块(write/edit 内容)。
119
+ // 无折叠块提示「没有可展开的内容」;有折叠块进入全屏可滚动查看器
120
+ // (alternate screen,类 less),退出后还原提示符与未提交输入。
121
121
  process.stdin.on('keypress', (_str, key) => {
122
122
  if (!key || !key.ctrl || key.name !== 'o')
123
123
  return;
@@ -125,17 +125,24 @@ export async function startRepl() {
125
125
  return;
126
126
  const folded = consumeFolded();
127
127
  const pending = rl.line;
128
- process.stdout.write('\r\x1b[K');
129
128
  if (!folded) {
129
+ process.stdout.write('\r\x1b[K');
130
130
  console.log(style.muted('(没有可展开的内容)'));
131
+ rl.prompt(true);
132
+ if (pending)
133
+ rl.write(pending);
134
+ return;
131
135
  }
132
- else {
133
- const rest = folded.lines.slice(folded.shown);
134
- process.stdout.write(rest.join('\n') + '\n');
135
- }
136
- rl.prompt(true);
137
- if (pending)
138
- rl.write(pending);
136
+ rl.pause();
137
+ void openFoldPager({
138
+ lines: folded.lines,
139
+ gutter: folded.gutter,
140
+ }).then(() => {
141
+ rl.resume();
142
+ rl.prompt(true);
143
+ if (pending)
144
+ rl.write(pending);
145
+ });
139
146
  });
140
147
  const INPUT_DEBOUNCE_MS = 80;
141
148
  /** 处理一条已合并好的用户输入(斜杠命令或普通消息)。 */
@@ -213,7 +220,14 @@ export async function startRepl() {
213
220
  const mark = history.length; // 出错时回滚到这里,避免半截上下文
214
221
  history.push({ role: 'user', content: processedInput });
215
222
  try {
216
- await runAgentTurn({ ai, history, confirm, stats, permission });
223
+ await runAgentTurn({
224
+ ai,
225
+ history,
226
+ confirm,
227
+ stats,
228
+ permission,
229
+ configMaxSteps: resolveMaxStepsPerTurn(config),
230
+ });
217
231
  // 本回合结束,显示本次 token 消耗
218
232
  console.log(style.muted(`\n${formatStats(stats, ai.getModel())}`));
219
233
  // 上下文接近上限时自动压缩,避免下一轮溢出
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/repl/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/repl/index.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,10 @@ import { style } from '../style.js';
15
15
  export const FOLD_THRESHOLD = 40;
16
16
  /** 最近一次被折叠的块(展开一次后清空)。 */
17
17
  let last = null;
18
- /** 注册一个被折叠的块(覆盖上一次)。lines 为全量,shown 为已展示行数。 */
19
- export function registerFolded(lines, shown) {
20
- last = { lines, shown };
18
+ /** 注册一个被折叠的块(覆盖上一次)。lines 为全量,shown 为已展示行数;
19
+ * gutter 为展开时每行补打的前缀(子代理缩进用,主代理省略)。 */
20
+ export function registerFolded(lines, shown, gutter) {
21
+ last = { lines, shown, gutter };
21
22
  }
22
23
  /** 取出并清空最近一次折叠(用于 ctrl+o 展开);没有则返回 null。 */
23
24
  export function consumeFolded() {
@@ -32,17 +33,96 @@ export function resetFoldedForTest() {
32
33
  /**
33
34
  * 把一组已渲染的行打包成「前 FOLD_THRESHOLD 行 + 折叠提示」。
34
35
  * 超过阈值时注册折叠(供后续 ctrl+o 展开);未超过则原样返回。
36
+ * gutter 为子代理缩进前缀:仅记录到折叠块(展开时由 ctrl+o 补打),
37
+ * 返回的「前 N 行」本身不含 gutter——由调用方 print 统一加,避免直播/展开重复。
35
38
  */
36
- export function renderWithFold(lines) {
39
+ export function renderWithFold(lines, gutter) {
37
40
  if (lines.length <= FOLD_THRESHOLD) {
38
41
  return lines.join('\n') + (lines.length ? '\n' : '');
39
42
  }
40
43
  const head = lines.slice(0, FOLD_THRESHOLD);
41
44
  const rest = lines.length - FOLD_THRESHOLD;
42
- registerFolded(lines, FOLD_THRESHOLD);
45
+ registerFolded(lines, FOLD_THRESHOLD, gutter);
43
46
  return (head.join('\n') +
44
47
  '\n' +
45
48
  style.muted(` …(还有 ${rest} 行,按 ctrl+o 展开)`) +
46
49
  '\n');
47
50
  }
51
+ /* ------------------------------------------------------------------ *
52
+ * 流式输出的统一折叠(bash 等「边执行边打印」的工具)。
53
+ *
54
+ * 工具边执行边 print 输出(如 bash 的 stdout/stderr),这里做「按行折叠」:
55
+ * 前 FOLD_THRESHOLD 行原样透传;第 FOLD_THRESHOLD+1 行起停打、提示一次
56
+ * 「后续输出已折叠,按 ctrl+o 展开」,剩余行只缓冲;finish() 时把全量行
57
+ * 注册到折叠单例,用户在空闲提示符下按 ctrl+o 补打尾巴。
58
+ * 与 WriteFileStreamPrinter 的流式折叠行为一致(共享阈值与 ctrl+o 通道)。
59
+ * ------------------------------------------------------------------ */
60
+ /**
61
+ * 流式输出的按行折叠打印机。write(chunk) 可处理跨 chunk 的半截行;
62
+ * 输出原样透传(不加行号),保留命令自身的 ANSI 颜色。
63
+ */
64
+ export class LineFoldPrinter {
65
+ print;
66
+ gutter;
67
+ lineNo = 1;
68
+ atLineStart = true;
69
+ /** 全量完成行(不含换行),供 ctrl+o 展开。 */
70
+ rendered = [];
71
+ /** 当前未完成行(尚未遇到 \n)。 */
72
+ cur = '';
73
+ folded = false;
74
+ markerPrinted = false;
75
+ /**
76
+ * @param print 实际输出回调(主代理 = print;子代理 = bodyPrint,缩进由其负责)
77
+ * @param gutter 子代理缩进前缀;注册折叠时记录,展开由 ctrl+o 补打(主代理省略)
78
+ */
79
+ constructor(print, gutter) {
80
+ this.print = print;
81
+ this.gutter = gutter;
82
+ }
83
+ /** 喂入一段新输出(可任意大小、可跨行)。 */
84
+ write(chunk) {
85
+ for (const ch of chunk) {
86
+ if (this.atLineStart) {
87
+ this.atLineStart = false;
88
+ if (this.lineNo > FOLD_THRESHOLD && !this.markerPrinted) {
89
+ this.print(style.muted(' …(后续输出已折叠,按 ctrl+o 展开)\n'));
90
+ this.markerPrinted = true;
91
+ this.folded = true;
92
+ }
93
+ }
94
+ if (ch === '\n') {
95
+ // 非折叠区:换行本身也要打出来
96
+ if (this.lineNo <= FOLD_THRESHOLD)
97
+ this.print('\n');
98
+ this.rendered.push(this.cur);
99
+ this.cur = '';
100
+ this.lineNo++;
101
+ this.atLineStart = true;
102
+ }
103
+ else {
104
+ // 折叠区:仅缓冲不打印;非折叠区:照常逐字打印
105
+ if (this.lineNo <= FOLD_THRESHOLD)
106
+ this.print(ch);
107
+ this.cur += ch;
108
+ }
109
+ }
110
+ }
111
+ /** 流结束:收尾最后一行;有折叠则注册全量行供 ctrl+o 展开。 */
112
+ finish() {
113
+ if (this.cur.length > 0) {
114
+ this.rendered.push(this.cur);
115
+ this.cur = '';
116
+ }
117
+ if (this.folded) {
118
+ // 已展示前 FOLD_THRESHOLD 行 → ctrl+o 补打剩余
119
+ registerFolded(this.rendered, FOLD_THRESHOLD, this.gutter);
120
+ }
121
+ else if (!this.atLineStart) {
122
+ // 输出未以换行结尾 → 补换行,让结果摘要另起一行
123
+ this.print('\n');
124
+ this.atLineStart = true;
125
+ }
126
+ }
127
+ }
48
128
  //# sourceMappingURL=fold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fold.js","sourceRoot":"","sources":["../../../src/cli/run/fold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,yCAAyC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AASjC,0BAA0B;AAC1B,IAAI,IAAI,GAAuB,IAAI,CAAC;AAEpC,+CAA+C;AAC/C,MAAM,UAAU,cAAc,CAAC,KAAe,EAAE,KAAa;IACzD,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC;IACjB,IAAI,GAAG,IAAI,CAAC;IACZ,OAAO,GAAG,CAAC;AACf,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,kBAAkB;IAC9B,IAAI,GAAG,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAe;IAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;IAC3C,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACtC,OAAO,CACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACf,IAAI;QACJ,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,iBAAiB,CAAC;QAC5C,IAAI,CACP,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"fold.js","sourceRoot":"","sources":["../../../src/cli/run/fold.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,10 @@ export function formatToolCall(tc) {
50
50
  case 'bash_output':
51
51
  case 'kill_bash':
52
52
  return `${tc.name} ${args.id ?? ''}`;
53
+ case 'todo': {
54
+ const n = Array.isArray(args.items) ? args.items.length : 0;
55
+ return `todo (${n} 项)`;
56
+ }
53
57
  default: {
54
58
  if (tc.name.startsWith('mcp__')) {
55
59
  const [, server, tool] = tc.name.split('__');
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/run/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/run/format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,SAAS,SAAS,CAAC,QAAgB;IAC/B,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,yBAAyB;AACzB,SAAS,OAAO,CAAC,CAAS;IACtB,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,KAAK,CAAC,CAAS,EAAE,CAAS;IAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IACxB,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IACxB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,cAAc,CAAC,EAAY;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACd,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU;YACX,OAAO,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5C,KAAK,MAAM;YACP,OAAO,UAAU,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAClF,KAAK,YAAY,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,eAAe,IAAI,CAAC,IAAI,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;QAC1D,CAAC;QACD,KAAK,WAAW;YACZ,OAAO,cAAc,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAC3C,KAAK,MAAM;YACP,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5D,KAAK,aAAa,CAAC;QACnB,KAAK,WAAW;YACZ,OAAO,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,OAAO,UAAU,CAAC,KAAK,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7C,OAAO,QAAQ,MAAM,IAAI,IAAI,EAAE,CAAC;YACpC,CAAC;YACD,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC;QACpD,CAAC;IACL,CAAC;AACL,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,gBAAgB,CAAC,EAAY,EAAE,MAAc;IACzD,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IAE9C,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI;YAChB,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1F,CAAC,CAAC,OAAO,CAAC;QACd,OAAO,OAAO,IAAI,MAAM,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzG,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9C,CAAC;AAED;;;;;;wEAMwE;AAExE,oCAAoC;AACpC,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,8BAA8B;AAC9B,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,gCAAgC;AAChC,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,sCAAsC;AACtC,SAAS,UAAU,CAAC,CAAS;IACzB,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAChD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,MAAM,GAAG,cAAc;QAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,YAAY;QAC9C,CAAC,CAAC,IAAI,CAAC;AACf,CAAC;AAED,0CAA0C;AAC1C,SAAS,MAAM,CAAC,GAAW,EAAE,KAAa;IACtC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAC9B,OAAe,EACf,IAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,EAAE,QAAQ,IAAI,eAAe,CAAC;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CACjB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAC9D,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CACJ,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,CACxD,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AAOD,2CAA2C;AAC3C,SAAS,SAAS,CAAC,CAAW,EAAE,CAAW;IACvC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;QAClB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,GAAG,CAAC;IACf,CAAC;IACD,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CACtD,IAAI,KAAK,CAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnC,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACT,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;oBACtB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;QACR,CAAC;aAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC,EAAE,CAAC;QACR,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC,EAAE,CAAC;QACR,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC,EAAE,CAAC;IACR,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC,EAAE,CAAC;IACR,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC1B,OAAe,EACf,OAAe,EACf,IAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,EAAE,QAAQ,IAAI,cAAc,CAAC;IAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3E,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACnB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACpB,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACV,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CACJ,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CACxE,CAAC;YACF,KAAK,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,IAAI,CACJ,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAC;YACF,KAAK,EAAE,CAAC;QACZ,CAAC;IACL,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAY;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC1B,OAAO,cAAc,CACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAC9B,CAAC;IACN,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;wEAKwE;AAExE,yCAAyC;AACzC,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,KAAK,CAAC,GAAG,CACZ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAC9D,CAAC;AACN,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAe;IAC1D,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3E,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACnB,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CACJ,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CACxE,CAAC;YACF,KAAK,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,IAAI,CACJ,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAC;YACF,KAAK,EAAE,CAAC;QACZ,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAAY;IACtC,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC3B,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC1B,OAAO,aAAa,CAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAC9B,CAAC;IACN,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -1,12 +1,15 @@
1
1
  import { style } from '../style.js';
2
- import { executeTool, getTool, registerMcpTools } from '../../tools/index.js';
2
+ import { executeTool, getTool, registerMcpTools, registerTool, } from '../../tools/index.js';
3
+ import { createTaskTool } from './task.js';
4
+ import { renderTodoPanel } from '../../tools/todo.js';
3
5
  import { ruleKeyFor } from './permissions.js';
4
6
  import { formatToolCall, formatToolResult, toolCallLines, } from './format.js';
5
- import { renderWithFold } from './fold.js';
6
- import { WriteContentStreamer } from './stream-write.js';
7
+ import { LineFoldPrinter, renderWithFold } from './fold.js';
8
+ import { WriteFileStreamPrinter } from './stream-write.js';
7
9
  import { estimatePromptTokens, estimateTokens, } from '../stats/index.js';
8
- /** 单个用户回合内,最多允许模型连续调用工具的轮数,防止失控循环。 */
9
- const MAX_TOOL_ROUNDS = 10;
10
+ /** 单个用户回合内的默认最大工具调用轮数(未配置 maxStepsPerTurn 时)。
11
+ * 用户可在 config 设 maxStepsPerTurn 调整;0 或负数表示不限。 */
12
+ const DEFAULT_MAX_STEPS = 50;
10
13
  /**
11
14
  * 解析工具参数用于预览;失败则返回空对象(真正执行时 executeTool 会再报错)。
12
15
  */
@@ -23,9 +26,24 @@ function safeParse(argsJson) {
23
26
  * 直到模型不再调用工具(给出最终回答)或达到轮数上限。
24
27
  */
25
28
  export async function runAgentTurn(options) {
26
- const { ai, history, confirm, stats, print = process.stdout.write.bind(process.stdout), maxRounds, requireToolsFirstRound, onToolCall, onToolResult, permission, } = options;
27
- const rounds = maxRounds ?? MAX_TOOL_ROUNDS;
28
- for (let round = 0; round < rounds; round++) {
29
+ const { ai, history, confirm, stats, print = process.stdout.write.bind(process.stdout), maxRounds, requireToolsFirstRound, onToolCall, onToolResult, permission, configMaxSteps, todoPanel = true, } = options;
30
+ // 上限优先级:显式 maxRounds(/agent、/goal)> configMaxSteps(config 解析)> 默认 50。
31
+ // limit <= 0 表示不限(跳过检查),对齐 config maxStepsPerTurn=0 语义。
32
+ const limit = maxRounds ?? configMaxSteps ?? DEFAULT_MAX_STEPS;
33
+ /** 工具执行上下文(供 task 等需要反向调用 AI / 复用会话的工具)。 */
34
+ const toolCtx = {
35
+ ai,
36
+ confirm,
37
+ permission,
38
+ stats,
39
+ print,
40
+ cwd: process.cwd(),
41
+ maxSteps: configMaxSteps,
42
+ todoPanel,
43
+ };
44
+ // 注册 task 子代理工具(每回合注册一次,registerTool 同名替换幂等)。
45
+ registerTool(createTaskTool(toolCtx));
46
+ for (let round = 0; limit <= 0 || round < limit; round++) {
29
47
  let reasoningStarted = false;
30
48
  let reasoningEnded = false;
31
49
  const onReasoningDelta = (text) => {
@@ -44,48 +62,9 @@ export async function runAgentTurn(options) {
44
62
  print(text);
45
63
  };
46
64
  // write_file 内容的流式渲染:边收参数边带行号打印,营造「正在写」观感。
47
- // 每个工具 index 一个 streamer(增量解码)+ 一份行号状态。
48
- const streamers = new Map();
49
- const lineState = new Map();
50
- let streamedAnyWrite = false;
51
- const onToolArgumentDelta = (index, name, argsSoFar) => {
52
- if (name !== 'write_file')
53
- return;
54
- let streamer = streamers.get(index);
55
- if (!streamer) {
56
- streamer = new WriteContentStreamer();
57
- streamers.set(index, streamer);
58
- }
59
- let st = lineState.get(index);
60
- if (!st) {
61
- st = { headerPrinted: false, lineNo: 1, atLineStart: true };
62
- lineState.set(index, st);
63
- }
64
- const r = streamer.feed(argsSoFar);
65
- if (!r.started || r.delta.length === 0)
66
- return;
67
- if (!st.headerPrinted) {
68
- print(style.tool(`\n⚙ write_file ${r.path ?? ''} (生成中…)\n`));
69
- st.headerPrinted = true;
70
- }
71
- for (const ch of r.delta) {
72
- if (st.atLineStart) {
73
- print(style.muted(String(st.lineNo).padStart(2, ' ')) + ' ');
74
- st.atLineStart = false;
75
- }
76
- print(ch);
77
- if (ch === '\n') {
78
- st.lineNo++;
79
- st.atLineStart = true;
80
- }
81
- }
82
- // content 已闭合且末尾不是换行 → 补换行,让结果摘要另起一行
83
- if (r.ended && !st.atLineStart) {
84
- print('\n');
85
- st.atLineStart = true;
86
- }
87
- streamedAnyWrite = true;
88
- };
65
+ // 与子代理共用 WriteFileStreamPrinter,行为一致。
66
+ const writePrinter = new WriteFileStreamPrinter();
67
+ const onToolArgumentDelta = (index, name, argsSoFar) => writePrinter.handleDelta(index, name, argsSoFar, print);
89
68
  const turn = await ai.chat(history, onDelta, round === 0 && requireToolsFirstRound ? { requireTools: true } : undefined, onReasoningDelta, onToolArgumentDelta);
90
69
  // 优先使用后端返回的真实 usage;不支持时降级为字符估算
91
70
  if (turn.usage) {
@@ -103,6 +82,10 @@ export async function runAgentTurn(options) {
103
82
  // 没有工具调用 → 这是最终回答,收尾退出
104
83
  if (turn.toolCalls.length === 0) {
105
84
  print('\n');
85
+ // 回合结束:渲染待办面板(提示符上方常驻),无待办时为空串
86
+ const panel = todoPanel ? renderTodoPanel() : '';
87
+ if (panel)
88
+ print(panel);
106
89
  history.push({ role: 'assistant', content: turn.content });
107
90
  return;
108
91
  }
@@ -122,7 +105,7 @@ export async function runAgentTurn(options) {
122
105
  // 破坏性工具:执行前展示预览并请用户确认
123
106
  if (tool?.needsConfirm) {
124
107
  const args = safeParse(tc.arguments);
125
- const preview = tc.name === 'write_file' && streamedAnyWrite
108
+ const preview = tc.name === 'write_file' && writePrinter.anyStreamed
126
109
  ? `写入文件:${args.path ?? ''}(内容已在上方流式展示)`
127
110
  : tool.preview
128
111
  ? tool.preview(args)
@@ -153,7 +136,7 @@ export async function runAgentTurn(options) {
153
136
  }
154
137
  else {
155
138
  // write_file 内容已在流式中逐行打印过,不再重复输出摘要+完整块
156
- const alreadyStreamed = tc.name === 'write_file' && streamedAnyWrite;
139
+ const alreadyStreamed = tc.name === 'write_file' && writePrinter.anyStreamed;
157
140
  if (!alreadyStreamed) {
158
141
  print(style.tool(`\n⚙ ${formatToolCall(tc)}\n`));
159
142
  const lines = toolCallLines(tc);
@@ -161,7 +144,13 @@ export async function runAgentTurn(options) {
161
144
  print(renderWithFold(lines));
162
145
  }
163
146
  }
164
- const result = await executeTool(tc.name, tc.arguments);
147
+ // bash 输出实时流式打印:包一层按行折叠(超 40 行停打 + ctrl+o 展开)
148
+ const bashFold = tc.name === 'bash' ? new LineFoldPrinter(print) : null;
149
+ const execCtx = bashFold
150
+ ? { ...toolCtx, print: (c) => bashFold.write(c) }
151
+ : toolCtx;
152
+ const result = await executeTool(tc.name, tc.arguments, execCtx);
153
+ bashFold?.finish();
165
154
  if (onToolResult) {
166
155
  onToolResult(tc, result);
167
156
  }
@@ -176,14 +165,21 @@ export async function runAgentTurn(options) {
176
165
  }
177
166
  // 继续下一轮,让模型基于工具结果接着回答
178
167
  }
179
- print(style.warn('\n(已达到工具调用轮数上限)\n'));
168
+ // 仅在上限生效(limit > 0)时才会跑到这里;不限(limit<=0)靠模型自己停止。
169
+ if (limit > 0) {
170
+ print(style.warn(`\n(已达到工具调用轮数上限 ${limit}。如需更高,请在 config 设 maxStepsPerTurn,或设 0 为不限。)\n`));
171
+ }
172
+ // 触顶收尾同样渲染待办面板
173
+ const tailPanel = todoPanel ? renderTodoPanel() : '';
174
+ if (tailPanel)
175
+ print(tailPanel);
180
176
  }
181
177
  /**
182
178
  * 非交互式单次调用。
183
179
  * 以 systemPrompt 开场,把 prompt 作为 user 消息发送,执行一轮后返回。
184
180
  */
185
181
  export async function runOnce(options) {
186
- const { ai, prompt, confirm, print = process.stdout.write.bind(process.stdout), systemPrompt = '你是 CCLI,一个运行在终端里的 AI 助手。回答简洁、准确,使用中文。', mcpManager, } = options;
182
+ const { ai, prompt, confirm, print = process.stdout.write.bind(process.stdout), systemPrompt = '你是 CCLI,一个运行在终端里的 AI 助手。回答简洁、准确,使用中文。', mcpManager, configMaxSteps, } = options;
187
183
  if (mcpManager) {
188
184
  await registerMcpTools(mcpManager);
189
185
  }
@@ -200,6 +196,7 @@ export async function runOnce(options) {
200
196
  confirm,
201
197
  stats: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
202
198
  print: capturePrint,
199
+ configMaxSteps,
203
200
  });
204
201
  return output;
205
202
  }