@yanzc/claude-pro 0.5.6 → 0.5.8

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
@@ -161,7 +161,8 @@ claude-pro config set ANTHROPIC_MODEL deepseek-pro --project
161
161
  ## 终端标题、页脚与窗口缩放
162
162
 
163
163
  - **终端标题**:标签/窗口标题显示 `✳ <会话标题> | <目录> · <模型> · <effort>`(会话标题是**当前话题**:每次发消息后,后台让小模型(haiku)判断是否换了话题,换了就生成一个简短标题,和官方客户端一样;"继续"之类的消息不会改标题。话题记在会话文件里,`/resume`、重启后仍在,`/resume` 列表也显示它。旧会话没有话题时,恢复时按最近一条提问生成。还没生成时显示第一条提问。最多 40 字,保证模型和 effort 不被窄标签截掉。`CLAUDE_PRO_DISABLE_TOPIC_TITLE=1` 关闭,省掉每条消息一次的小请求)。忙碌时前缀在 `⠂`/`⠐` 之间闪动,限流暂停时变 `⏸`,退出时恢复进入前的标题。`/model`、`/effort`、`/clear`、`/resume` 后自动更新。**VS Code**(1.140 起)只对它认得的 AI 命令行(claude/codex/copilot/gemini)把程序设置的标题显示在标签上(`terminal.integrated.tabs.allowAgentCliTitle`,默认开),其余一律显示进程名 `node`;它在 Windows 上靠 `node.exe` 命令行里的 `\claude-code\` 路径段识别 Claude Code,所以监督进程用 `bin\claude-code\..\claude-pro.js` 启动会话(目录不必存在,Node 自己化简 `..`)。不经过监督进程的启动方式(`CLAUDE_PRO_NO_SUPERVISOR=1`)或 Linux/macOS 上,要在 VS Code 设置里把 `terminal.integrated.tabs.title` 改成 `${sequence}` 才能看到标题。
164
- - **页脚**:输入框下方右侧常驻当前模型和 effort(如 `sonnet-5-5 · high`);没发送 effort(auto)或该模型不支持时只显示模型;窄窗口放不下时先让位给"上下文快满"等提示,再不行就不显示。模型前面是**当前对话累计花费**(如 `$1.23 · opus-5-5 · effort high`):按官方价(和网关扣费同一张价目表,含 5 分钟/1 小时缓存写入、长上下文价)把每个请求算进去,子 agent、压缩、话题标题、WebFetch 都算,按 Esc 中断的请求按已读入的输入和估算的已输出部分算;记在会话文件里,重启、`/resume` 后接着累计,`/clear` 从零开始。`/cost` 第一行也显示它,`-p --output-format json` 的结果带本次运行的 `total_cost_usd`。不认识价格的模型(第三方端点的自定义模型)不计;网关上游分组倍率不是 1 的账户以网关流水为准。
164
+ - **用户的提问**:带一条深灰色背景(横跨整个窗口宽度),和回复一眼就能分开。背景条是用当前背景色清除行尾(`\x1b[K`)画出来的,不靠补空格,窗口变宽变窄都正好铺满。
165
+ - **页脚**:输入框下方右侧常驻当前模型和 effort(如 `sonnet-5-5 · high`);没发送 effort(auto)或该模型不支持时只显示模型;窄窗口放不下时先让位给"上下文快满"等提示,再不行就不显示。模型前面是**当前对话累计花费**(如 `$1.23 · opus-5-5 · effort high`):按官方价(和网关扣费同一张价目表,含 5 分钟/1 小时缓存写入、长上下文价)把每个请求算进去,子 agent、压缩、话题标题、WebFetch 都算,按 Esc 中断的请求按已读入的输入和估算的已输出部分算;记在会话文件里,重启、`/resume` 后接着累计,`/clear` 从零开始。`/cost` 第一行也显示它,`-p --output-format json` 的结果带本次运行的 `total_cost_usd`。不认识价格的模型(第三方端点的自定义模型)不计;网关上游分组倍率不是 1 的账户以网关流水为准。花费前面是**提示词缓存时钟**(和官方 VS Code 扩展的 prompt cache clock 一致):`◷ 12m` 表示对话的缓存估计还能保留 12 分钟(按 5 分钟或 1 小时 TTL 倒数,每次用到缓存的回复重新开始计时);倒数结束后分钟数消失、图标变红,直到下一次回复——这时发下一条消息会把整个对话重新写入缓存,更慢也更贵;压缩之后到下一次回复之前也是红色,因为压缩后的对话还没进缓存。时钟记在会话文件里,重启、`/resume` 后接着显示(压缩后关掉的会话恢复时是冷的);还没有回复报告过缓存用量时不显示。窄窗口先省掉花费,再省掉时钟。
165
166
  - **缩放窗口**:拖动期间不重绘,停下约 80ms 后从左上角整屏绝对重绘一次,输入框不会再留下残影。注意:很短的会话里这次重绘会覆盖终端上方 shell 的内容。
166
167
 
167
168
  ## 自动重启:改了自己的代码马上生效
@@ -304,6 +305,7 @@ claude-pro -p --plan "给出重构方案" # 只调研、只
304
305
  | `ctrl+l` | 清屏重绘 |
305
306
  | `alt+v` | 粘贴剪贴板图片 |
306
307
  | `PgUp` / `PgDn`、滚轮、`Ctrl+Home` / `Ctrl+End` | 全屏模式下滚动对话 / 到开头 / 回到最新 |
308
+ | `ctrl+f` | 全屏模式下在对话里查找(像 VS Code):输入框的位置换成查找框,边输入边高亮所有匹配(不分大小写,当前这个橙色、其余黄色),右上角显示"第几个/共几个"(`No results` 表示没有)。先跳到视图底部往上最近的一个;`Enter` 或 `↑` 跳到更早的一个,`Shift+Enter` 或 `↓` 跳到更新的一个,到头后绕回;`PgUp`/`PgDn`、滚轮照常滚动;`Esc` 关闭,画面停在当前位置(`Ctrl+End` 回到底部)。再按 `ctrl+f` 会带上上次的关键字(已选中,直接输入就替换);先用鼠标选中文字再按,会搜选中的文字。查找时有新输出,匹配会跟着更新。经典模式(`/tui default`)的对话在终端自己的滚动缓冲里,请用终端自带的查找 |
307
309
  | `↑` / `↓` | 在多行输入(包括自动折行的长文字)里上下移动光标;光标在第一行时 `↑` 先移到开头、再按才翻到上一条历史消息,`↓` 在最后一行同理 |
308
310
  | `Tab` | 补全命令 / 文件 |
309
311
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yanzc/claude-pro",
3
- "version": "0.5.6",
3
+ "version": "0.5.8",
4
4
  "description": "claude-pro: a self-implemented coding agent for Anthropic-compatible APIs or local Claude Code subscription login. Full access with no permission prompts; file edits are checkpointed and can be rewound.",
5
5
  "type": "module",
6
6
  "repository": {
package/src/agent.js CHANGED
@@ -780,6 +780,7 @@ export class Agent {
780
780
  }
781
781
  const note = { role: 'user', content: [{ type: 'text', text: partialSummaryMessage(part, summary) }] };
782
782
  this.replaceMessages(part === 'before' ? [note, ...after] : [...before, note]);
783
+ if (part === 'before') this.cache.noteCompacted(); // from its first message on: nothing of it is cached (the start of "after" still is)
783
784
  if (part === 'after') this.todos = []; // what they were about may be summarized away; the model keeps them in the summary
784
785
  this.lastContextTokens = estimateTokens(this.messages) + estimateTokens(this.toolSchemas()) + 2000;
785
786
  this.tokensSinceUsage = 0;
@@ -809,6 +810,7 @@ export class Agent {
809
810
  }
810
811
  const todoNote = this.todos.length ? `\n\n<system-reminder>Current todo list:\n${this.todos.map((t) => `- [${t.status}] ${t.content}`).join('\n')}</system-reminder>` : '';
811
812
  this.replaceMessages([{ role: 'user', content: [{ type: 'text', text: continuationMessage(summary, { auto }) + todoNote }] }]);
813
+ this.cache.noteCompacted();
812
814
  this.refreshSystemPrompt?.(); // the conversation starts over: it may start from a freshly built system prompt
813
815
  this.fileState.clear();
814
816
  if (!this.isSubagent) this.checkpoints?.markConversationStale(); // the checkpoints are the main conversation's: a sub-agent's own compaction does not end them