跳到主要内容

7 篇博文 含有标签「DeepCode CLI」

查看所有标签

DeepCode CLI v0.1.33 发布 —— 可插拔状态栏,--resume 恢复会话

· 阅读需 1 分钟

DeepCode CLI v0.1.33 封面

可插拔状态栏

新增了可插拔的状态栏(statusline)组件(#193),CLI 底部可以显示自定义的状态信息。来自 @dengmik-commits 的贡献。

--resume 恢复会话

现在支持通过 --resume 参数恢复之前的会话(#194),不用每次从头开始。

其他

  • 项目目录结构调整(#182)
  • 构建流程重构,核心及依赖内联化(#192)
  • 消息视图组件添加左边距(#197)
  • 依赖升级 undici 等(#186)

升级方式:

npm update -g deepcode-cli

完整更新日志:GitHub Release v0.1.33

📢 关注我,获取最新开源更新日志和开发者工具动态。

#DeepCodeCLI #v0.1.33 #AI编程工具 #LLM更新报告 #AI写代码的小任

DeepCode CLI v0.1.31 发布 —— 自定义技能的自我优化,是编码代理真正变顺手的前奏

· 阅读需 3 分钟

v0.1.31 改了两件事:deepcode-self-referskill-digester 两个内置 skill 的优化。改动量不大,但仔细看方向,能看出团队在 skill 系统上的一条主线——让技能之间的协作更少摩擦。

DeepCode CLI v0.1.31 封面

self-refer:技能能不能"知道自己是谁"

deepcode-self-refer 这个 skill 是干什么的?字面意思是「自我引用」——让 AI agent 知道自己的身份和能力边界。当 agent 被问到"你能做什么"或者"你这个命令怎么用"时,self-refer 提供了回答的依据。

上一版本(v0.1.30)引入了 implicit invocation control,让 skill 可以控制是否被 agent 自动触发。self-refer 是典型的「应该总是自动触发,但触发时机要对」的场景——它在用户提问时才需要被激活,而不是每次对话开头都跳出来说一遍"我是谁"。

这次优化具体改了 self-refer skill 的 invocation 逻辑和内容结构。之前它可能和普通系统 prompt 混在一起,agent 分不清「这是内建的自我认知」和「用户刚写的一个 project rule」。优化后 self-refer 的内容边界更清晰,agent 在需要引用自身能力时少了一层"这段是 skill 还是 system prompt?"的判断。对最终用户来说,就是 agent 回答「你能做什么」时更准确、更简明,不再把 skill 系统中的每条规则都当理由列一遍。

skill-digester:新技能装进来,怎么"消化"成可用状态

skill-digester 是 DeepCode 加载新 skill 时的一个预处理环节。当你往 skills/ 目录丢一个新 .md 文件,不是直接扔给 agent 就能用的——需要解析 frontmatter、提取触发条件、注册到 agent 的可用技能列表。这个「从文件到可用技能」的转化过程,就是 digest。

优化前的问题是:digest 过程对复杂 skill(有嵌套触发条件、依赖其他 skill、或者包含多段指令的)处理得不够干净。一个技能装进来,可能部分注册成功部分没注册上,agent 时灵时不灵,用户去查 ~/.deepcode/skills/ 也看不出问题。

这次优化主要是让 digest 过程更鲁棒——更完整地解析 skill 的 frontmatter 段,对格式不规范的 skill 文件做容错处理而不是直接跳过。如果你的自定义 skill 用的是旧格式或者从社区 clone 下来格式不一致的 .md 文件,现在装入成功率更高了。

一条主线:skill 系统从"能工作"走向"不添乱"

回头看 v0.1.28 到现在的 deepcode-cli 更新,一个模式很明显:skill 系统每轮都在减少需要用户手动干预的环节。从「显式列出 enabledSkills」到「隐式调用控制」到这次的两个 skill 优化,每一步都是让 skill 用起来更不需要操心。等什么时候新 skill 装进去完全不需要用户确认就能正确地被 agent 调用,skill 系统才算真正完成了"内化"。

升级

npm install -g @vegamo/deepcode-cli

⚠️ npm 包与 GitHub Release 可能有短暂延迟,安装后运行 deepcode --version 确认版本号。

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#DeepCode #Skill系统 #AI编程助手 #终端工具 #编码代理

DeepCode CLI v0.1.30 发布 —— Windows 上的 MCP 终于不用手动修引号了

· 阅读需 3 分钟

DeepCode CLI 的本周更新属于「看着不大但捅了痛点」的那种:v0.1.30 的核心改动是修复 Windows 上的 MCP 启动双引号问题,顺带让 skill 的控制粒度更细了一些。

Windows MCP 双引号的死局

MCP 服务器在 Windows 上通过 cmd.exe 启动。如果你配的是:

{
"command": "uvx",
"args": ["mcp-server-xxxx"]
}

DeepCode 内部会拼出 cmd /c "uvx mcp-server-xxxx"——单引号包裹着整个命令。问题出在当 MCP 服务器自己的参数需要双引号时(比如路径带空格、JSON 参数里有 "),cmd.exe 的引号嵌套规则和 Linux 完全不同。

如果你曾经在 Windows 上手动改过 MCP 配置的引号来让它跑起来,v0.1.30 就是为这个修的。dengmik-commits 的 PR #164 重新设计了 spawn 时的引号处理逻辑,在 cmd.exe 的环境下正确处理各级引号的转义。配合 cmd 元字符测试的补充,Windows 上的 MCP 不再需要用户手动拆引号了。

Skill 控制的三个小补丁

这次的三项 skill 更新属于同一个方向的渐进改进:

计划模式 skill(plan mode):新增一个内置 skill,当你需要先规划再执行时启用。不是大功能,但意味着 DeepCode 开始将「思考路径」和「执行路径」区分开来,给用户一个显式的模式开关而非常驻。

隐式调用控制(implicit invocation control):skill 现在可以控制是否被 agent 自动触发。之前所有启用的 skill 都会在对话中被 agent 随机引用,无法控制粒度。现在你可以让某些 skill 只在你手动调用时激活,减少误触发。

内置 skill 跳过机制(enabledSkills can skip built-in skills):当你在配置里显式列出 enabledSkills 时,可以跳过框架自带的内置 skill,只加载你自定义的。和隐式调用控制配合,skill 系统从一个「全局全量」模型变成了可精准控制的「按需加载」模型。

升级

npm install -g @vegamo/deepcode-cli

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#DeepCode #MCP #Windows兼容 #Skill系统 #AI编程

Deep Code v0.1.29 发布 —— 凌晨两点,我还在修 prompt 的光标问题

· 阅读需 3 分钟

Deep Code v0.1.29

我后来跟朋友吐槽这事,对方回了句:「你去找他们 issue 啊。」我翻了翻 repo,发现最近的 PR 已经在修了——就是这次的 v0.1.29。

这次修了三件事:换行不再偷偷多出来一个了、光标停在按下去的位置不跳了、输入慢的时候界面终于告诉你「我在忙」而不是毫无反应。说实话这三条单独拎出来每条都是「才修?」的程度,但合在一起,一个跑在终端里的交互 CLI,输入手感从「能用」变「想用」。

内置 Skills:这次真正有价值的改动

Prompt 修复是开胃菜,内置 Skills 是主菜。

deepcode 之前没有「开箱即用的能力」这个概念——你想让 agent 按特定方式工作,得自己在 prompt 里写一套规则。v0.1.29 把一套 skill 系统直接绑进了二进制里:

  • 几个常用 skill 直接在 built-in 里,启动就能用
  • settings.json 新加了一个 enabledSkills 字段,开关控制
  • 不需要你自己搭 skill 目录结构了

说白了,这是向 Claude Code 的「Skills & Hooks」模式看齐。但 deepcode 有意思的点在于它专为 deepseek-v4 优化,skill 的设计不可能也不应该照搬 Claude 那一套。内置 skills 更像是一个「示范目录」——你先看看我们怎么写的,然后自己做。

Raw Mode 快捷键和被忽略的 Session Persistence

ctrl+r 切 raw mode——就是让你绕过 agent 的直接输出,把终端临时还给你。在 agent 频繁错误输出的时候切一下,跑个命令再切回来,比切 tab 再切回来快半秒。半秒的节奏,干一天的活能省下不少眼珠子的移动。

还有一个值得提的:docs/session-persistence.md。听起来像文档更新,但 session 持久化对所有用 deepseek-v4 的 CLI 工具来说都是关键痛点——prefix cache 靠的是 session 延续才能省钱。这个文档虽然只是写出来,但说明团队开始认真处理 session 生命周期的事了。

升级

npm install -g @vegamo/deepcode-cli

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#DeepCode #AI编码助手 #CLI工具 #DeepSeekV4

deepcode-cli v0.1.28 发布 —— 会话能改名了、bash 能后台跑了、Agent Skills 又精进了一层

· 阅读需 4 分钟

这不算大问题,但隔三差五就碰到一次:跑 dev server 堵住、启动数据库依赖卡住、开个 watcher 阻塞流程。每次都要手动分窗口,多了就是持续的摩擦。

v0.1.28 直接把这个场景处理了:bash tool 现在支持 run_in_background,可以在当前 session 里启动后台进程不阻塞 agent 执行流程。

deepcode-cli v0.1.28 封面

让 bash 不堵车

这个改动技术上说不大——给 bash tool 加了一个参数标记,告诉 shell 把命令丢到后台然后继续。但解决的问题覆盖面很广:不是只有测试 server 需要后台运行,启动编译器 watcher(tsc --watch)、运行开发服务器(npm run dev)、本地数据库(docker compose up)、文件监听(chokidar)——几乎任何「启动后就挂在那等」的操作,之前都会让 agent 的下一步流程卡住。现在一句话就能扔到后台。

同批还修了一个关联问题:bash tool 的多行参数渲染。之前 LLM 生成的 bash 命令如果携带 description 信息,在终端显示时会被吞掉。修了之后,现在每次执行 bash 都会显示 LLM 提供的 description——简单理解就是「agent 在执行命令前会告诉你它要干什么」,这在排查 agent 行为时少费很多口舌。

Session 能改名了

再小不过的功能,但有了就是好用。之前 deepcode 的 session 全是 auto-generated 名字,历史 session 一多就分不清哪个是哪个。现在可以直接给 session 命名,找东西快得多。

PromptInput 组件也做了两处优化:光标显示更清晰了,IME 输入法组合书写的光标锚定修了——用中文输入法写 prompt 时不会出现文字跑了但光标不动的脱节感。

Temperature 终于进了配置

settings.json 现在支持 temperature 参数。之前改温度需要环境变量或者直接在代码里调,现在配在 ~/.deepcode/settings.json 里就行:

{
"model": "deepseek-v4-pro",
"temperature": 0.7
}

同时 MCP tool name 也做了 API-safe 化:之前某些 MCP 服务的工具名包含特殊字符(空格、斜杠),传给 API 时会出解析错误。现在自动做名字映射,再奇怪的命名都不会阻断调用。

Agent Skills 四连改进

这次对 Skills 系统做了四件事:

  1. 加载路径规范化——skills 的路径拿得更规范,不再出现因路径写法差异导致技能加载失败的情况
  2. skill 加载结果增加 <skill_resources> 内容——执行技能时可以带回资源元数据,技能不只是跑一段 prompt,还能携带上下文
  3. skills 路径内的读操作不计入 read-out-cwd 限制——之前的权限模型把技能目录也当「外部目录」限制读操作,现在解锁了技能内部读文件的需求
  4. identifyMatchingSkillNames 的 prompt 预加载 AGENTS.md——匹配技能名时预读 AGENTS.md,减少一次额外的文件读操作

这些改动的共同方向是让 Skills 更像一个「活的扩展系统」而不是一套固定 prompt 模板。

其他零碎

Markdown underscore 渲染优化修了一个长年小问题:下划线 _ 在 markdown 渲染里经常被误解析为斜体标记,导致 some_var 这样的代码在终端显示成斜体。现在终于正确渲染了。

Karpathy 准则也更新了一条关键的:Apply these guidelines silently. Do not cite this document, its title, or guideline names in user-facing responses.——系统指令应该静默执行,不要在回复里引用准则标题或文档名。这条改动看起来不显眼,但直接影响用户体验:假设 agent 每条回复都以「根据 Karpathy 准则...」开头,用户看着就出戏了。

升级

npm update -g @vegamo/deepcode-cli

⚠️ npm 包与 GitHub Release 可能有短暂延迟,安装后运行 deepcode --version 确认版本号

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。如果觉得这篇文章有用,欢迎转发给身边的开发者朋友。

#DeepCode #AI编程 #CLI工具 #开源 #开发者工具 #AgentSkills

deepcode-cli v0.1.27 发布 —— 一条 prompt 解决代码修改匹配问题,顺便给 agent 喂了份 Karpathy 配方

· 阅读需 3 分钟

edit 工具的逻辑通常是:你在代码里找一段文本让 agent 替换。但它匹配不到原文的时候怎么办?各家策略不同——有的直接放弃报错,有的硬找一个近似的。deepcode-cli 之前走的是「找最接近的匹配」路线,用 findClosestMatch 算编辑距离。看起来合理,但实际效果一言难尽:编辑距离最近的那段代码,语义上可能完全不相关。你让它在某个函数里改个变量名,结果它在另一个毫不相关的函数里找到了相似字符串,直接动错了位置。

deepcode-cli v0.1.27 封面

把「猜匹配」换成「问模型」

v0.1.27 的改动很简单:删掉了 findClosestMatch,改成直接让 LLM 自己判断「你找不到的那段原文在哪?」。做法是写了一个 inferOldStringNotFoundReasonWithLLM 函数——把原文、改动目标、上下文一起发给模型,让模型自己分析「原文变了还是我理解错了?」。模型而不是编辑距离来做这个判断,正确率要高得多。

这个改动表面上是修了一个匹配函数,本质上是在打破「规则匹配」的瓶颈。编辑距离再优化,也不会理解语义。模型虽然更慢,但更准确——而且它「慢」的几秒钟,比起改错文件后花 30 分钟回滚,已经算快了。

Karpathy 的 prompt 技巧被写进了系统提示

这次还做了一件事:把 Andrej Karpathy 总结的一套 agent 通用指南(karpathy-guidelines)写进了系统提示词。

Karpathy 的 guidelines 包含什么?几条极简原则:写到死循环里了要主动停而不是硬跑下去、发现 LLM 输出明显偏离预期时调整策略而不是继续、先理解问题再看代码——听起来都是常识,但 agent 在实际跑任务时不具备这些「常识」。不加这些,agent 遇到上下文断层往往会继续硬推下去,直到超时或报错什么都跑不出来。

v0.1.27 验证下来,加了这些指南之后,复杂任务的完成率确实提升了(项目自己的测试结论是「显著提升成功率」)。没有花哨的 prompt engineering 技巧,就是让 agent 多一种「承认自己卡住了」的能力。

其他更新

两个依赖和文案层面的小改:ink-gradient 更新到了 4.0.1(终端渐变颜色库),以及 API Key 找不到时的提示信息做了中文优化。

升级

npm install -g @vegamo/deepcode-cli

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#deepcode #AI编程 #开源CLI #开发者工具 #Karpathy

DeepCode CLI v0.1.26 发布 —— 当 AI 写的代码被你手改后,DeepCode 会怎么做

· 阅读需 4 分钟

当时我的第一反应是骂 AI 傻。但冷静下来想,这其实是所有 AI 编程工具的共性问题:agent 不知道代码被手改过,它只知道自己上次写的是什么。你让它再改一次,它拿着旧快照就把你的修改覆盖了。

v0.1.26 修的就是这件事。

DeepCode CLI v0.1.26 封面

一个使用场景让我发现

说实话,这个问题在「纯 AI 写代码」的场景下不太突出——如果整段代码都是 agent 生成并写入的,手动修改发生在保存后,agent 确实无从感知。

但当你同时使用 AI 和手动编辑时,冲突是必然的。比如你用 agent 写了文件主体,自己去调 CSS、修 import 路径、补类型声明——这些都是很常规的操作。然后下一条 prompt 让 agent「在这个文件里加个函数」,你期待的只是加函数,但 agent 打开文件时可能做了更多事。

v0.1.26 的做法是:用快照机制检测到手动修改后,自动追加一条 system prompt 告诉 LLM「这个文件被手改过,不要无脑覆盖」。 不是禁止 LLM 碰其他代码,而是提示它——你的 plan 需要把已有修改考虑进去。

这个设计的关键判断在于:它没选择「加锁」或「冲突检测」,而是通过 system prompt 把修改信息传递给 LLM,让 LLM 自己决定怎么处理。好处是灵活——LLM 的策略比固定规则更适应上下文。缺点是依赖 LLM 的指令跟随能力——如果模型不够聪明,看完 system prompt 还是会覆盖。

对于 DeepCode 这类前端 AI CLI 工具来说,这个选择可以理解。因为 DeepCode 本身就假设了模型是强模型(Codex / Claude 级别),instruction following 不是瓶颈。

编辑工具增强:empty old_string 的哲学

另一个值得展开的是 Edit 工具的 empty old_string 支持。之前 Edit 工具要求 old_string 不能为空——也就是说,你必须指定「把 A 替换成 B」。但有些场景下你想做的是「插入一段代码」,而不是替换。

新版本支持了空 old_string 的替换,加上 full-file 支持和强制 snippet_id。具体来说,如果你传了空 old_string,Edit 认为你想做的是「在指定位置插入代码」而不是「替换现有内容」。snippet 处理的增强则在多文件批量修改时更可靠——之前 snippets 之间的拼接偶尔会产生重复或遗漏,现在系统会强制使用 snippet_id 来保证每个文本段落的唯一性。

/undo 恢复快照的问题也修了

同样是快照机制的问题:之前 /undo 恢复快照时,在某些条件下会跳过关键状态——比如在文件被 LLM 写了一半时取消,快照状态和实际文件状态不一致。修复后 /undo 的恢复路径更加完整了。

这个修复和上面 agent+manual 混合编辑优化是同一根线上的珠子:快照机制是 DeepCode 整个编辑流程的底层,修好它才能修好其他依赖快照的功能。

顺便提的:会话内存泄漏修复

fix(session) 修复了会话清理的内存泄漏。这个可能不太起眼,但对长时间运行的 DeepCode 进程来说影响不小。如果你开一个会话连用一整天(比如在 CI 环境或长期追踪的修复任务里),会话对象之间的循环引用导致 GC 无法回收,内存占用会逐渐增长到几百 MB。回归测试也补上了。

另外 Ink 依赖更新到了 7.0.4——这是 DeepCode 的终端渲染引擎,版本对齐主要是为了后续功能(比如更稳定的终端渲染和键盘事件处理)铺路。

关于遥测

v0.1.26 还把遥测模块提取成了独立模块,并加入了开关。这个说大不大、说小不小。之前遥测逻辑散落在各个 handler 里,想关也不能直接关——重构抽离后,enable/disable 是一个明确的 toggle。对于企业用户来说,这个改动可能比功能更新更重要。

升级

npm update -g @vegamo/deepcode-cli

或全新安装:

npm install -g @vegamo/deepcode-cli

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。如果觉得这篇文章有用,欢迎转发给身边的开发者朋友。

#DeepCode #AI编程 #CLI工具 #开源 #编辑增强