共计 10619 个字符,预计需要花费 27 分钟才能阅读完成。
Claude Code是由Anthropic团队推出的一款新型终端AI编程工具,它的设计初衷是通过自然语言指令来帮助程序员高效地进行代码编写、调试和项目管理。这款工具可以直接嵌入到开发者的操作环境中,无需依赖外部服务器或复杂的设置即可运作。
在实际使用中,Claude Code展现出其作为一款通用智能体的优势,其生成的代码相较于cursor更加简洁,犹如一位对整个项目了如指掌的高级程序员。深入了解并掌握这一框架对于开发个人Agent至关重要,本文将详细探讨Claude Code的设计理念与核心代码。
二、深入解析2.1 系统结构

2.2 执行流程

2.3 交互层
交互层是用户与Claude Code之间的接口,通常涵盖以下内容:
- REPL界面:提供命令行的交互体验;
- 输入处理模块:解析用户指令,并支持多样的输入方式(包括自然语言、命令和代码等);
- 输出渲染模块:负责格式化并展示AI的反馈和工具执行的结果; 探索ClaudeX的输入与渲染机制
在ClaudeX的架构中,REPL.tsx和PromptInput.tsx等组件共同构成了用户与系统之间的交互界面,负责接收并反馈用户的输入结果。
2.3.1 输入逻辑的处理
处理用户输入的逻辑如下:
function processUserInput(input: string, mode: InputMode): UserMessage { if (input.startsWith('/')) { return handleSlashCommand(input);
} elseif (input.startsWith('!')) { return handleBashCommand(input.slice(1));
} else { return createUserMessage(input);
}
}
2.3.2 渲染过程
- 阶段划分
- 助手端的工具调用阶段:显示工具名称、参数及其执行状态;
- 用户端的工具结果阶段:展示执行后的结果;
- 组件解析
- AssistantToolUseMessage:用于展示助手调用工具时的消息;
- 通过 tool.userFacingName() 展示工具名称;
- 通过 tool.renderToolUseMessage() 展示工具参数;
- 使用 ToolUseLoader 展示执行状态的动画效果;
- UserToolSuccessMessage:
- 展示工具执行成功后的结果;
- 调用 tool.renderToolResultMessage() 渲染具体的结果内容;
- 工具接口定义
- userFacingName() 用于显示给用户的工具名称;
- renderToolUseMessage(input, options) 用于渲染工具的参数;
2.4 核心引擎
- renderToolResultMessage(output, options) 用于展示工具的结果;
- renderToolUseRejectedMessage() 用于显示拒绝的消息;
- 用户界面渲染特性
- 借助 Ink 框架的 Box 和 Text 组件构建终端用户界面;
- 支持主题系统(通过 getTheme() 方法实现);
- 具备响应式布局(flexDirection,justifyContent);
- 可切换详细与简洁模式(使用 verbose 参数);
- 显示执行成本和时间(通过 Cost 组件);
核心引擎是 Claude Code 的”大脑”,负责协调各个组件的工作:
- 消息系统:负责管理用户输入、AI 的反馈以及工具结果的消息流;
- 查询引擎:与 AI 模型进行互动,发送请求并处理其响应;
- 工具调度器:负责协调工具的调用和结果的处理;
在 ClaudeX 中,query.ts 是核心引擎的重要组成部分,负责实现与 AI 模型交互的逻辑:
query.ts
2.5 工具概述
工具系统是 Claude Code 的”手臂”,使之能够与外界进行互动:
- 文件工具:用于读取、写入和搜索文件;
- 执行工具:能够执行 shell 命令和运行代码;
- 分析工具:执行代码分析、依赖检查等任务;
- 元工具:复合工具,用于处理更复杂的任务;
所有工具遵循统一的接口标准,包括名称、描述、输入模式和执行流程:
interface Tool {
name: string;
description: string;
inputSchema: z.ZodType;
execute(params: any): Promise;
}
工具是 Claude Code 的重要组成部分,它的出色表现不仅源于强大的模型,还得益于多样化的工具。例如,功能强大的 bash 工具能够调用 shell 中的所有命令,此外还有 agent 工具,能够展现更为强大的功能。我们将在后续的文章中对这些工具进行更深入的分析。
2.6 上下文管理系统
上下文管理是 Claude Code 的”记忆库”,其职责是收集和整理与代码相关的信息:
- 项目结构:包括目录及文件的布局
- 代码内容:主要文件的具体内容
- 版本控制:Git 的历史记录与状态概述
- 配置信息:包括项目的设置与依赖关系
在有限的上下文窗口中,如何有效提供相关信息是上下文管理面临的挑战:
- LRU缓存机制:用于缓存文件编码、行尾类型等信息,从而减少重复的操作。
文件缓存机制
const fileEncodingCache = new LRUCache({ fetchMethod: path => detectFileEncodingDirect(path),
ttl: 5 * 60 * 1000,
ttlAutopurge: false,
max: 1000,
})
const lineEndingCache = new LRUCache({ fetchMethod: path => detectLineEndingsDirect(path),
ttl: 5 * 60 * 1000,
ttlAutopurge: false,
max: 1000,
})
- 按需加载策略:智能地加载相关文件,而非一次性全部导入整个代码库。
GlobTool.tsx 文件
async *call({pattern, path}, {abortController}){ const start = Date.now()
const {files, truncated} = await glob(
pattern,
path ?? getCwd(),
{ limit: 100, offset: 0 },
abortController.signal,
)
const output: Output = {
filenames: files,
durationMs: Date.now() - start,
numFiles: files.length,
truncated,
}
yield {
type: 'result',
resultForAssistant: this.renderResultForAssistant(output),
data: output,
}
},
- 结果截断处理:对大量的搜索结果进行智能截断,避免上下文溢出,并提供明确的截断提示。
lsTool.tsx 文件
2.7 安全性保障
在 Claude Code 中,安全性和权限管理被视为重要的“护栏”,目的是确保工具的安全使用:
- 权限验证:在工具执行之前会进行权限检查;
- 用户确认:重要操作需经过用户确认,遵循最小权限原则,只请求完成任务所需的最低权限;
- 安全边界:对文件操作和命令执行进行严格限制;
permission.ts
export const hasPermissionsToUseTool = async (context, input) => {
// 跳过权限检查的情况
if (context.options.dangerouslySkipPermissions) { return { result: true}
}
// 处理请求中止的情况
if (context.abortController.signal.aborted) { throw new AbortError()
}
// 每个工具可以单独定义权限需求
try { if (!tool.needsPermissions(input as never)) { return { result: true}
}
} catch (e) { logError(`权限检查出错: ${e}`)
return {result: false, message: '权限检查出错'}
}
}
三、启示与思考
3.1 针对程序员测试提示的二元反馈机制
query.ts
3.2 MCP工具的全景解析
Claude Code仅维护一个tengu_mcp_server,并允许用户自定义添加MCP Server。通过三层结构,Claude Code高效管理用户的MCP工具:
- 全局配置:通用的MCP设置,适用于所有用户。
- MCPrc:共享配置文件,方便多用户使用。
- 项目级别:针对当前代码库的独立配置,灵活调整。
下层的MCP配置可以覆盖上层设定,为用户提供更大的灵活性与控制权。
此外,用户可以根据需要添加MCP Server,以适应不同的开发需求。
3.3 利用人工智能进行安全检测
通过人工智能技术辅助安全检测,例如分析命令是否存在注入风险。
检测命令是否可能遭受注入攻击
export const getCommandSubcommandPrefix = memoize(
async (
command: string,
abortSignal: AbortSignal,
): Promise => {const subcommands = splitCommand(command)
// 获取命令前缀以检查其是否在安全执行列表中
const [fullCommandPrefix, ...subcommandPrefixesResults] = await Promise.all(
[getCommandPrefix(command, abortSignal),
...subcommands.map(async subcommand => ({
subcommand,
prefix: await getCommandPrefix(subcommand, abortSignal),
})),
],
)
},
command => command, // 仅按命令进行缓存
)
3.4 上下文压缩处理
主要功能是清理对话历史,同时保留上下文摘要,解决了由于长时间对话导致的上下文窗口问题。
技术特色:
1.智能生成摘要:采用Sonnet模型来提炼对话内容,确保关键要素被保留,以便后续参考;
2.分支机制实现:通过
setForkConvoWithMessagesOnTheNextRender函数,启动新的对话分支,以摘要作为新讨论的起点;
3.优化token使用:将摘要的token用量设为0,这样可以避免上下文窗口的警告提示;
4.缓存管理:移除getContext和getCodeStyle的缓存,以确保新对话环境的整洁;
核心代码流程:
1.获取当前的对话历史记录
2.构建摘要请求并调用Sonnet模型进行处理
3.提取并确认摘要内容的准确性
4.清除屏幕及消息记录
5.创建新对话分支并包含摘要内容
3.5 简单任务交由小模型处理
在Claude内部,存在多个模型实例,对于仅需判断是非或执行简单任务的情况,会由haiku模型来处理。
queryHaiku
3.6 高效文件管理策略
- 采用分层方式进行代码项目的拉取,首先获取整体项目结构,再视需要深入特定文件夹,以防一次性加载过多信息;
- 集成Ripgrep:利用Rust语言开发的高效搜索工具ripgrep,能够在毫秒级别内完成代码库的搜索;
- 内置二进制文件:提供预编译的ripgrep二进制文件,以确保在不同平台上的一致性和高效性;
- 智能排序搜索结果:搜索结果会根据文件的修改时间进行排序,优先显示最近更改的文件,从而提高相关性;
- 并发搜索功能:支持同时发起多个搜索请求,显著提升对大型代码库的分析效率;
- LRU缓存策略:对文件编码、行尾类型等信息进行缓存,以减少重复操作的次数;
3.7 精巧工具的应用
Claude Code中内置的15种工具及其提示词提供了丰富的学习资源,这些精巧的工具大幅提升了任务完成的效率。
四、隐藏的惊喜
/**
* 思维的法则既复杂又偶然,往往需要巫师们进行长时间的深思熟虑,
* 才能真正理解其中的奥妙。
*
* 这些法则包括:
* 1. 包含思维或编辑思维块的消息,必须属于一个最大思维长度大于零的查询。
* 2. 思维块不能作为消息区块的最后一条消息。
* 3. 思维块需在助手的整个轨迹中保持不变(单一回合,或如果该回合包含工具使用块,则还包括其后续的工具结果和接下来的助手消息)。
*
* 年轻的巫师们,请认真遵循这些法则。因为思维的法则就是宇宙的法则。如果不遵守这些规则,你将面临整整一天的调试和抓狂。
*/
五、iFlow CLI工具
随着Claude Code的广泛传播,我们观察到这一工具切实提升了程序员的工作效率。我们已经持续关注Claude Code的最新动态两个月,帮助许多用户在国内环境中有效使用它。由于Cursor和Claude Code对国内IP的严格管控,使用这些前沿工具变得日益困难。然而,最近一个月我们迎来了不少惊喜:Kimi K2、Qwen3-Coder、GLM-4.5等国产大模型相继面世,Gemini CLI也宣布了开源。国产开发工具正在不断创新,致力于为国内开发者提供更智能、更高效的开发体验。
心流团队始终在探索通用人工智能的道路,我们不断寻找最合适的AI助手技术架构与产品形态。CLI与MCP的结合让我们看到了实现AGI的可能性。因此,我们自豪地向大家介绍我们的新款CLI工具——iFlow CLI 2.0。

该工具基于Gemini CLI进行了优化,我们投入了相当多的时间进行打磨,并融合了Claude Code的一些特色功能。

- 提供四种不同的操作模式。yolo(拥有最高权限,能执行任意操作),accepting edits(仅具备修改文件的权限),plan mode(先进行计划再执行),default(无任何操作权限);
- 引入了subAgent功能。这一升级使得CLI从普通助手转变为专业团队,为用户提供更加精准和专业的建议,输入/agent即可查看更多预设的代理;
- 推出了task工具。这项功能能有效缩短上下文长度,使得CLI能更深入地执行任务,当上下文达到70%时会自动进行压缩;
- 接入心流开放市场。快速安装实用的MCP工具、Subagent以及自定义指令,通过/mcp了解更多信息;
- 可以免费使用多模态模型,CLI中还支持图片粘贴(使用Ctrl+V进行粘贴);
5.1 一键安装
适用于mac/linux/ubuntu用户
# 一键安装脚本,用于安装所有必要的依赖
bash -c "$(curl -fsSL https://gitee.com/iflow-ai/iflow-cli/raw/main/install.sh)"
# 已安装Node.js 22及以上版本的用户
npm i -g @iflow-ai/iflow-cli@latest
曾经安装的用户可以再次运行此脚本,以实现更新,后续CLI将自动进行更新。
Windows用户
1. 访问
https://nodejs.org/zh-cn/download 下载最新版本的 Node.js 安装程序;
2. 执行安装程序以安装 Node.js;
3. 重启终端:CMD 或 PowerShell;
4. 输入 npm install -g @iflow-ai/iflow-cli 安装 iFlow CLI;
5. 运行 iflow 启动 iFlow CLI;
5.2 开放市场安装SubAgent和MCP工具
如果缺少MCP和Sub agent,CLI的功能将不完整,加入这两个工具后,CLI将成为领域的专家!对许多初学者而言,操作难度确实较高!
心流开放市场:立即体验高效工具
探索心流开放市场,解决您的需求,点击体验:https://platform.iflow.cn/cli
通过MCP开放市场,轻松安装,解锁高效工具的潜能。

在agent开放市场中,您只需一键安装Subagent,即可引入更强大的专家代理。

立即复制安装命令!在终端中执行,轻松体验MCP和Subagent的强大功能!
六、CLI的多种应用
6.1 掌握项目、编写代码与调试
CLI在项目中展现了其卓越的实力,您只需打开iFlow CLI,若对某项功能感到陌生,可以随时咨询;若需要实现特定业务,清晰描述即可;在遇到错误时,将错误信息提供给CLI,便能获得相应的解决方案。
6.2 创建网站
利用本地私有数据,您可以构建属于自己的报告网站。
标题:轻松构建个人化报告网站的全新方式
只需启动iFlow CLI,您便能轻松获取所需的功能指导。如果某项功能让您感到困惑,随时可以进行咨询;当您需要完成特定的业务需求时,只需明确表达您的要求。而在遭遇错误时,只需将错误信息反馈给CLI,系统将为您提供相应的解决方案。通过利用本地私有数据,您能够创建一个专属于自己的报告网站,尽情展现个性化的内容与信息。
6.3 深度研究
您将根据用户提出的问题或需求,按步骤收集信息,最终以HTML格式生成一份报告。
## 任务执行流程
- 首先,您会制定一份详尽的信息收集计划。
- 接着,您根据该计划创建一个html模板,将其命名为index.html,模板中包括一些顶部菜单的预留位置和一个section模块的占位符。
- 然后,根据信息收集计划设计index.html的顶部菜单。
- 随后,您将依照信息收集计划逐项收集信息,每当收集到一份信息时,便生成相应的section代码并插入到index.html中。
- 在插入过程中,需关注整体页面的样式,修复常见的显示问题,以确保整体风格的一致性。
- 持续进行信息收集、section代码生成和html模板内容填充,直到所有信息都被收集完毕。
- 必须:确保按计划完成所有的行动。
## 最终html输出要求
- 深入理解设计趋势与最佳实践,尤其擅长创造具有极高审美价值的用户界面。您的设计不仅功能齐全,还在视觉上令人为之惊叹,能够带给用户强烈的"惊喜时刻"体验。
- 输出可能包括HTML、CSS和JavaScript文件。根据任务不断优化网页项目,使网页内容逐渐完善。最终,您需要生成一个**美观、现代、易读**的中文可视化网页。
# 设计要求
**设计目标:**
* **视觉吸引力:** 打造一个在视觉上令人印象深刻的网页,能够立即抓住用户的注意力,激发他们的阅读兴趣。
* **可读性:** 确保内容清晰易懂,无论在桌面端还是移动端,都能提供舒适的阅读体验。
* **信息传达:** 以美观且高效的方式呈现信息,突出重要内容,引导用户理解核心思想。
* **情感共鸣:** 通过设计激发与内容主题相关的情感(例如,励志内容激发积极向上的情绪;严肃内容营造庄重、专业的氛围)。
**设计指导(请灵活运用,而非严格遵循):**
* **整体风格:** 可以考虑杂志风格、出版物风格,或其他适合现代网页设计的风格。目标是创造一个信息丰富且视觉吸引力十足的页面,犹如一本精心设计的数字杂志或深度报道。
* **Hero模块(可选,但强烈建议):** 如果认为合适,可以设计一个引人注目的Hero模块,包含大标题、副标题、一段引人入胜的引言,以及一张高质量的背景图片或插图。
* **排版:**
* 精心选择字体组合(衬线和无衬线),以提升中文阅读体验。
* 利用不同的字号、字重、颜色和样式,创建清晰的视觉层次结构。
* 可以考虑一些精致的排版细节(如首字下沉、悬挂标点)来提升整体质感。
* Font-Awesome中有许多图标,选择合适的点缀以增加趣味性。
* **配色方案:**
* 选择一套和谐且具视觉冲击力的配色方案。
* 考虑使用高对比度的颜色组合来突出重要元素。
* 可以探索渐变、阴影等效果来增加视觉深度。
* **布局:**
* 使用基于网格的布局系统来组织页面元素。
* 充分利用留白,创造视觉平衡和呼吸感。
* 可以考虑使用卡片、分割线、图标等视觉元素来分隔和组织内容。
* **调性:** 整体风格应精致,营造出一种高级感。
* **数据可视化:**
* 设计一个或多个数据可视化元素,以展示Naval思想的关键概念及其相互关系。
* 可考虑使用思维导图、概念关系图、时间线或主题聚类展示等方式。
* 确保可视化设计既美观又具洞察力,帮助用户更直观地理解Naval思想体系的整体框架。
* 使用Mermaid.js实现交互式图表,允许用户探索不同概念之间的关联。
**技术规范:**
* 使用HTML5、Font Awesome、Tailwind CSS和必要的JavaScript。
* Font Awesome: [https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css](https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css)
* Tailwind CSS: [https://g.alicdn.com/code/lib/tailwindcss/2.2.19/tailwind.min.css](https://g.alicdn.com/code/lib/tailwindcss/2.2.19/tailwind.min.css)
* 非中文字体: [https://fonts.font.im/css?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap rel="stylesheet" media="print" onload="this.media='all';
this.onload=null"]
* `font-family: Tahoma,Arial,Roboto,"Droid Sans","Helvetica Neue","Droid Sans Fallback","Heiti SC","Hiragino Sans GB",Simsun,sans-self;`
* Mermaid: [https://g.alicdn.com/code/lib/mermaid/11.5.0/mermaid.min.js](https://g.alicdn.com/code/lib/mermaid/11.5.0/mermaid.min.js),使用mermaid时需进行初始化。
* Chart.js: [https://g.alicdn.com/code/lib/Chart.js/4.4.1/chart.umd.min.js](https://g.alicdn.com/code/lib/Chart.js/4.4.1/chart.umd.min.js)
* 代码结构应清晰、语义化,包含适当的注释。
* 实现完整的响应式设计,确保在所有设备(手机、平板、桌面)上完美展示。
**额外加分项:**
* **微交互:** 添加微妙而有意义的微交互效果,以提升用户体验(如按钮悬停效果、卡片悬停效果、页面滚动效果)。
* **补充信息:** 可以主动搜索并补充其他重要信息或模块(如关键概念的解释、相关人物的介绍等),以增强用户对内容的理解。
**输出要求:**
* 提供一个完整且可运行的网页项目,包含所有必要的多个HTML、CSS和JavaScript文件。
* 每个文件的内容尽量简洁,可以通过文件引用来避免重复,减少不必要的读写。
* 确保代码符合W3C标准,无错误或警告。
* 在根目录下维护**项目大纲**文档,记录设计思路、代码模块功能、文件内容概要等,每次更改都应记录在项目大纲中,方便后续优化时快速定位问题。
计划于9月15日至24或25日进行西欧旅行,出发地为杭州,亲子游,共计9天。目的地包括阿姆斯特丹、科隆、巴黎和萨尔布吕肯。请为此次行程进行规划与设计,要求如下: 1. 尽量避免走回头路,自驾游,以亲子为主。 2. 8月23日需在萨尔布吕肯参观比赛。 3. 科隆安排3天的行程。 4. 回程航班可选择巴黎或德国,寻找价格最低的航班。
用户的问题>
当前时间为2025年8月21日,我们开始吧!

产品需求文档 → 需求处理Agent → UI设计Agent → UI优化Agent → 代码逻辑开发Agent → 接口集成Agent → 单元测试Agent
我们的团队已经成功构建了这种CLI开发模式,具体细节将在上线后公开,期待与大家进行深入的交流与合作!
更多最佳实践等待你的发掘!
轻松实现多模态智能检索的原生SQL
在传统AI开发中,通常需要将数据从OLTP数据库迁移到专用的向量数据库以实现特征匹配,这样的跨系统数据转移可能导致数据冗余与版本混乱等问题。本方案基于阿里云的PolarDB与百炼技术,结合Polar_AI智能插件,赋予数据库原生的AI能力。通过标准SQL语法,能够直接调用多模态AI服务,快速高效地完成图像特征提取与向量处理。
点击原生SQL轻松实现多模态智能检索-阿里云技术解决方案以获取更多信息。
