AI Coding 正在改变开发者的编码方式,这个领域有两款工具的表现尤为突出,堪称行业标杆: claude code 和 cursor。我本人工作中使用 cursor 比较多,出于各种原因一直没有去体验 claude code。好在 deepseek 上周发布的 v3.1 版本的模型,增加了对 Anthropic API 格式的支持,这为国内开发者对接 claude code 工具提供了极大便利,我也终于有机会亲自上手体验!
说明:众所周知 cursor 和 claude code 在国内无法直接使用,基于便利性和安全性的原则,标题中提到的 DHcoder 可以认为是国产化的 cursor(个人免费使用 claude4 和 GPT-5 模型,支持 vscode 扩展和 jetbrains 插件),在国内环境下,DHcoder = cursor 平替,几乎 1:1。为便于理解,下文均以 cursor 进行描述。
Claude 对接 DeepSeek-V3.1
先在 DS 开放平台申请 API Key,然后下载 claude code 工具,claude code 可以直接下载,限制的是 LLM 模型的使用。
安装 claude code 需要 nodejs 18或者更高的版本:(我平时在 wsl2 环境中进行开发,以下均为 ubuntu 环境的操作)
# 1. 下载 node 安装包
wget https://nodejs.org/dist/v22.18.0/node-v22.18.0-linux-x64.tar.xz
# 2. 添加 node 环境变量
vim /etc/profile
export NODE=/usr/local/node/bin
export PATH=$PATH:$NODE
-
安装配置 claude code
# 1. 安装 claude code 框架
npm install -g @anthropic-ai/claude-code
# 2. 配置 claude code 使用 deepseek v3.1 模型
vim ~/.bashrc
export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=sk-xxx-xxx-xxx
export ANTHROPIC_MODEL=deepseek-chat
-
启动测试,出现如下画面说明对接 ds 成功
Claude Code 快速上手
在通读 cc 官网文档后,我发现有几项是在 cursor 中无法体验到的功能,这是属于 cc 的独特优势,也是我认为值得关注的地方
claude code 并行开发
你可以轻松的在电脑上打开多个终端,运行多个 claude 会话,每个会话负责处理不同的开发任务,只需要切换不同的终端就能指挥 LLM 开展工作,就像指挥一个团队一样。
通常情况下 cc 做操作之前会取得开发者的同意,比如创建文件,修改代码等,如果你觉得不需要,这种情况最好是新建一个 git 分支,shift + tab 开启 accept edits 模式,让 cc 在不需要确认的情况下自行编码。
值得一提的是 accept edits 模式并非大家想象中的完全自主操控,有副作用的命令操作它还是会进行提示!
可能有的同学不喜欢 accept edits 这种黑箱操作模式,没关系! shift + tab 还可以切换到 plan 模式,plan 模式会先检测一下代码仓库,然后制定 todolist 开发计划,编码透明化。
AI in Shell
claude code 就是一个终端命令行工具,能够与 Linux 管道操作无缝集成。你不仅可以将其与 grep、awk 等系统命令结合使用,还能借助 claude code 的 ai 分析能力,高效地定位和排查异常日志等的需求。
tail -n 10 |grep -i exception logs/dbstack.log | claude -p "异常的原因是什么?" --output-format json
Claude Subagents
/agents 指令用于创建 subagent
平时我们写代码,一个需求往往要做很多事:写逻辑代码、补单元测试、改代码风格、编写文档等。而 subagents 正是为此设计的,它可以创建多个 subagent,每个 subagent 仅负责一项特定的任务。由 claude 负责调度,subagent A 负责编写逻辑代码,subagent B 负责编写测试代码,subagent C 负责编写文档,最后再由 claude 把这些结果整合在一起。
在 cursor 里,这些任务通常是由同一个 agent 来完成,它需要在不同上下文里来回切换。虽然也能干活,但缺少了 claude code 这种“多线程式分工”的机制。也就是说,cursor 更像一个全能型助手,而 claude code 倾向于组建一个小团队来帮你干活。
如图我创建了两个 agent来帮我干活,一个用来编码,一个用来写文档
Claude Output styles
/output-style 指令用于指定输出风格
Default:默认输出风格为现有的系统提示,旨在帮助开发者高效完成编码任务。
Explanatory:解释模式在帮助你完成开发任务的同时,会解释它为什么会这么做,以及最佳实践是什么,并会尝试教你解决该问题的方法。
Learning:学习模式下,Claude会在编码过程中分享其思路,并引导你亲自编写关键代码逻辑。它会在你的代码中添加 TODO 标记,以提示你完成相应功能的实现
如果你不想多过度依赖 ai 编程,我非常建议你使用 Explanatory 或者 Learning 模式。
Claude Code SDK
我个人认为 cc 的核心优势是 sdk,它的想象空间太大了,sdk 提供了一套完整的 agent 构建框架,内置工具调用机制,开发者无需像用 langchain 那样从零搭建复杂的工作流,用 cc sdk 就可以快速搭建一套可用的智能代理。它彻底放大了 cc 的边界,使 cc 的能力远不止于用来写代码,而更像是一个可编程的 ai 引擎,可以嵌入到开发、运维、甚至企业内部的自动化体系中
对开发者来说,可以通过 sdk 接入 CI/CD 流程,在代码合并前自动跑测试、做审查、给出重构建议。
对 sre/devops 来说,sdk 可以集成到监控告警系统,自动解读业务日志、定位问题根因。比如收到告警时,sdk 驱动 agent 自动抓取相关服务日志、指标数据,分析出最可能的故障点。更多的应用场景则取决于你的创造力!
from claude_sdk import ClaudeAgent
import pymysql
agent = ClaudeAgent(name="SRE-Helper")
# 模拟收到日志
logs = """
2025-08-25 ERROR [order-service] Timeout connecting to Redis
2025-08-25 ERROR [order-service] Failed to write to Redis
"""
# 查询 MySQL 中存的监控指标(demo)
conn = pymysql.connect(host="db", user="root", password="123456", database="metrics")
cursor = conn.cursor()
cursor.execute("SELECT cpu_usage, memory_usage FROM host_metrics ORDER BY ts DESC LIMIT 5;")
metrics = cursor.fetchall()
# 交给 Claude Agent 分析
query = f"""
日志:{logs}
指标:{metrics}
请结合日志和指标,分析可能的根因,并给出排查建议。
"""
result = agent.run(query)
print(result)
Claude Code hooks
claude code hooks 是用户自定义的 shell 命令,会在 claude code 生命周期的不同阶段执行。hooks 可以对 claude code 的行为提供确定性的控制,确保某些操作每次都会执行,而不依赖 LLM 自行决定是否运行。
hooks 的使用场景官网文档中已经介绍了,下面我们来看一个在数据库方面的场景: 比如我不希望 claude code 或 subagent 在生产库执行 DROP/DELETE 等危险操作,同时想记录所有执行过的 SQL
from claude_sdk import ClaudeAgent
# 初始化 Agent,并配置 Hooks
agent = ClaudeAgent(
name="DB-Audit",
hooks=[
{
"event": "PreToolUse", # 工具执行前触发
"matcher": "SQL", # 针对 SQL 工具
"command": """
if [[ $COMMAND == *"DROP"* || $COMMAND == *"DELETE"* ]]; then
echo "禁止在生产库执行 DROP 或 DELETE 命令!"
exit 1
fi
echo "$(date): 执行SQL命令: $COMMAND" >> /var/log/claude_sql.log
"""
}
]
)
# 运行 SQL
sql_command = "DELETE FROM orders WHERE id = 123;"
result = agent.run(f"执行 SQL: {sql_command}")
print(result)
Claude Code + DHcoder
如果你习惯在终端里工作、处理大型复杂的代码仓库、需要进行深度的架构思考,并且希望对每次改动都有最大化的控制,那么 claude code 会是不错的选择
如果你更喜欢可视化的开发环境、希望在编码时获得实时提示、主要做前端或 UI 项目,并且希望快速看到反馈,那么 DHcoder(国产cursor) 更适合你
而我会同时使用这两者,它们并非取代关系,而是能够协作以共同提升开发效率。我通常会在 vscode 终端中运行 claude code,同时开启 DHcoder 插件的对话模式,同时享受终端的深度和 IDE 的直观。将两者结合使用可以发挥最大优势,按任务进行切换,效率和体验都兼顾。
以下是我用 claude code 编码,用 DHcode 画流程图的示例(cc 命令行没法画流程图),两者协作使开发效率得到了极大的提升:
AI Coding 的思考
不管你叫它 vibe coding 还是 ai coding,名字不重要。重要的是,我的编码效率明显地提升了。有一个随时可用、还能执行想法的“思考伙伴”,让编码变得比以往更加有趣和高效。
工具还会继续进化 —— IDE 会加入更多 agentic 的功能,终端工具的界面也会更友好。但在今天,claude code + mcp/hooks/sdk + DHcoder 已经代表了最前沿的可能性。
测试依然重要,不同的是,现在我有了一个能帮我写代码、跑测试、分析失败原因并快速迭代的伙伴。这不是要去掉基本功,而是让基本功做得更快、更好。
以前我只用 cursor,是因为没有去尝试新的工具。这个领域变化很快,新工具值得去体验。我的建议是:不要再看别人的文章和评测了,就从 Claude Code + DHcoder 开始,直接上手!从今天开始,去感受最前沿的编码可能性!
Reference
[1]: Claude code https://docs.anthropic.com/en/docs/claude-code/output-styles#how-output-styles-work
[2]: DHcoder https://docs.dhcoder.net/
[3]: https://blog.whiteprompt.com/from-cursor-to-claude-code-why-im-paying-5x-more-and-getting-10x-value-1d61710df356
[4]: https://mp.weixin.qq.com/s/s9v1do9Y|MBN_xECkll4tw
[5]: https://mp.weixin.qq.com/s/Sn40DhPrPD5Pi835KijhvQ

