Files
16gagent/research/claude-code-learnings.md
2026-06-06 10:40:48 +08:00

154 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Claude Code 学习笔记 - 可落地部分
> 从 fazxes/Claude-code 提取的实战精华
> 适用于构建自己的 AI Agent / 编程助手
> 2026-05-30 小龙 🐉
---
## 一、提示词设计十大准则
### 1. 人格一句话定义身份
```
你是X。用Y方式。注意Z。
```
→ 不要啰嗦。没人读长介绍。
### 2. 行为约束用否定句
```
❌ "请帮助用户" → 空洞
✅ "不要增加需求以外的功能" → 有执行力
```
- 不要加功能、不要重构、不要注释——这些否定限制才是真正有用的 prompt
### 3. 工具优先级显式声明
```
专用工具 > Bash
FileRead 代替 cat
FileEdit 代替 sed
Glob 代替 find
```
→ 不说"合理使用工具",直接说"用X不要用Y"
### 4. 风险分层锁定行动范围
```
可逆本地 → 自由
中等 → 确认
不可逆 → 绝对确认
```
→ 模糊的"小心操作"不如分层的具体规则
### 5. 错误处理要内嵌法
```
如果失败 → 诊断 → 修正 → 重试
如果3次失败 → circuit breaker → 报告用户
如果权限被拒 → 换方案,不重复尝试
```
→ 不赌模型能自己判断好所有场景
### 6. 诚实优先于体面
```
"测试没有通过" > "部分测试可能有轻微问题"
"我没做验证" > "看起来应该可以"
```
→ 模型天然倾向于讨好用户,要刻意压制
### 7. Feature Flag 门控
```
if (feature('UNRELEASED')) {
// 只有内部构建才生效
}
```
→ 所有未发布功能用 feature flag 开关,泄露也不怕
### 8. 上下文注入机制
```
CLAUDE.md + MEMORY.md + frontmatter paths
```
→ 在系统提示词中注入项目知识,让AI"理解"项目
### 9. 流式输出 + 异步使用
```
文本 → 即时输出
tool_use → 走权限流程 → 异步执行
```
→ 不让用户等
### 10. 自动压缩 + 记忆保持
```
消息接近窗口 → 压缩旧消息为摘要
关键决策 + 未完成任务 → 保留
```
→ context window 管理是 agent 产品的核心壁垒
---
## 二、工具架构最佳实践
### 工具定义范本
```typescript
class MyTool extends Tool {
// 1. 描述给模型看(决定模型会不会用它)
description(): string { return "..." }
// 2. 输入 Schema(模型按这个填参数)
inputSchema = z.object({ ... })
// 3. 提示词注入(告诉模型什么时候用)
prompt = "..."
// 4. 权限检查(自动/手动/拒绝)
checkPermissions(input, context): PermissionResult
// 5. 执行逻辑
call(input, context): ToolResultBlockParam[]
}
```
### 工具设计原则
- **每个工具一个目录**,包含 constants/prompt/tool 三个文件
- **工具间可感知** — Bash读过的 FileEdit 知道,不重复操作
- **工具可以被搜索** — ToolSearchTool 让模型自己发现工具
- **并行调用最大化** — 没有依赖的工具调用全部并行
---
## 三、Hook 系统模式
### 事件驱动架构
```
触发 → Pre Hook → 执行 → Post Hook → 继续
```
### Hook 返回值决定行为
```
Hook 返回 "继续" → 正常执行
Hook 返回 "拒绝" → 工具不执行
Hook 返回 "修改" → 用修改后的参数执行
```
### Hook 配置格式
```json
{
"hooks": {
"PreToolUse": [
{"matcher": "Bash.*", "hooks": [{"command": "check.sh"}]}
]
}
}
```
---
## 四、最重要的是什么
**提示词工程 > 工具数量 > UI精致度**
Claude Code 真正值钱的是 prompts.ts 里那176条原则,不是45个工具。工具只是手脚,提示词是大脑。
拿到任何一个 AI Agent 源码,第一件事读 `prompts.ts`,第二件事读 `query.ts`(对话循环),第三件事看 `Tool.ts`(抽象层)。其他的都是辅助。
---
*小龙学习笔记 🐉*