文章在回答什么
- Agent Harness 的 action space 应该怎么设计
- 只给一个通用工具够不够
- 给很多专用工具会不会让模型更乱
- 什么能力该做成 tool,什么能力不该
主论点
工具要匹配模型能力形状。
设计动作空间时,不能只看工程实现,要看:
- 模型会不会用
- 会不会稳定地用
- 用完后结果是否比 plain text 更可靠
数学题类比
- 纸:最低配,通用,但慢
- 计算器:更强,但要会操作
- 电脑:最强,但前提是模型会写代码并执行
结论:不是工具越强越好,而是越适配越好。
设计动作空间时真正要观察什么
- 模型擅长什么
- 模型在哪类结构上容易漂移
- 模型是否理解某个工具的调用时机
- 模型是否愿意主动调用它
- 调用它是否真的降低了失败率
这也是作者说的:see like an agent。
目标
提升 elicitation:让 Claude 更高效地向用户要关键信息。
尝试 1
把问题数组塞进 ExitPlanTool。
问题:
- 计划和提问混在一起
- 语义冲突
- 用户回答若推翻计划,状态很难收敛
尝试 2
修改输出格式,让模型用 markdown 问问题。
问题:
- 不稳定
- 会多说或漏项
- 一旦要解析输出驱动 UI,就会变成产品问题
尝试 3
单独做 AskUserQuestion tool。
优点:
- 可随时调用,尤其适合 plan mode
- 结构受控
- UI 可弹窗并阻塞 agent loop
- 支持多选项
- 用户交互成本更低
这一段的真正启发
- plain text 不稳定时,才值得做 tool
- 好工具不仅能用,还要让模型愿意用
- tool 的价值常常在结构保证、交互降摩擦和运行时控制
早期做法
- TodoWrite 工具写待办
- 每 5 turn 插 reminder
目标:让模型别忘了自己要做什么
为什么后来成了限制
- 模型把 todo 当硬约束
- reminder 让它更不敢改计划
- 能力变强后,todo list 反而压制了自主组织能力
新替代:Task Tool
- 支持依赖
- 支持跨 subagent 通信
- 支持增删改
- 更像协作协议,而不是提醒器
这一段的真正结论
模型升级以后,旧工具可能从“脚手架”变成“束缚”。
所以 action space 设计不是一次性的接口设计,而是要随着模型能力一起重估。
旧做法
RAG / 向量库给 Claude 找上下文。
问题:
- 要预先索引
- 环境脆弱
- 更关键的是:上下文是喂给模型的,不是模型自己找到的
新做法
给 Claude Grep 一类搜索工具,让它自己搜代码库。
变化:
- 从被动接收上下文
- 变成主动构建上下文
- 更接近真实工程师的探索流程
Skills 把什么形式化了
progressive disclosure:
- 先只暴露入口
- 需要时再读 skill 文件
- skill 文件再指向更细的文档、脚本、API 或数据库查询方式
这一段的结论
如果模型足够强,应该优先给它“找上下文的能力”,而不是一上来塞满上下文。
重点从“给多少上下文”转向“让它如何自己建上下文”。
新问题
Claude 不够懂 Claude Code 自己怎么用。
直觉方案:
- 把文档塞进 system prompt
- 或者再加一个新 tool
为什么不把 docs 全塞进 prompt
- 大多数用户不问这件事
- 会加重上下文腐烂
- 会干扰主任务:写代码
实际做法
- 给 Claude docs 入口
- 再做 Claude Code Guide subagent
- 这个 subagent 专门学会查文档、压缩结果、只返回答案
真正启发
这是在扩展 action space,而不增加 tool 数量。
能靠 progressive disclosure 解决,就别加 tool。 能靠专门 subagent 解决,也别把主 agent 的菜单越堆越长。
什么时候值得新增一个 tool
- plain text 老是漂移
- 需要结构保证
- 需要 UI 配合
- 需要阻塞式交互
- 需要隐藏复杂实现
- 需要跨 agent 的共享协议
什么时候不该急着加 tool
- 其实只是 prompt 还没打磨好
- 模型已经能靠搜索自己找上下文
- 一个 skill 文件就能解决
- 用专门 subagent 更合适
- 只是工程师自己觉得“有个按钮更漂亮”
一套很实用的最小底座
- 执行:
bash/code execution - 搜索:代码搜索、文档搜索、web search
- 读写:文件读写
- 询问用户:AskUserQuestion 一类能力
- 协作:task / subagent handoff
先用少量高杠杆原语跑起来,再根据真实失败模式加东西。
回到最初那个问题
要 1 个工具,还是 50 个工具?
作者的隐含答案是:都不是。
更合理的方案:
- 少量通用底座
- 少量真正必要的结构化工具
- 用 skills、progressive disclosure、subagents 补能力
设计 action space 的 5 个检查问题
- 模型会不会主动调用它?
- 调用结果稳定吗?
- 它比 plain text 明显更好吗?
- 模型升级后它会不会反而变成束缚?
- 这个能力能不能先用 skill / docs / subagent 实现?
如果你只记住 3 句话
- 先看模型会不会稳定地用,再决定要不要做 tool。
- 模型越强,越该让它自己建上下文。
- 扩能力不一定靠加工具,很多时候靠渐进披露和 subagent 更优。
up:: AI Code 编程 - moc up:: ∑ MCP与AI工具链 related:: claude code 配置, claude code plugins 插件, claude code 第三方中转站
指定模型名
/model o1
cc mate claude code plugins 插件
安装
macos linux通用
curl -fsSL https://claude.ai/install.sh | bashbrew install --cask claude-code旧的依赖于npm命令, 已经被官方废弃。
npm install -g @anthropic-ai/claude-code别人的配置参考
各种第三方插件
塞尔达音效
npm install -g zelda-claude-code@latest状态栏
GitHub - Haleclipse/CCometixLine: Claude Code statusline tool written in Rust

在多个子环境中使用
orb -m ubuntu -u root如果使用非root模式,则安装有点麻烦。如果使用root,则无法使用 claude 的疯狂模式。
curl https://mise.run | sh
echo "eval \"\$(/root/.local/bin/mise activate bash)\"" >> ~/.bashrc
source ~/.bashrc
mise trust
mise use node
npm install -g @anthropic-ai/claude-code
npm install -g @musistudio/claude-code-routernpm install -g @anthropic-ai/claude-code使用claude-code-router绕过官方限制。或者使用各种第三方的中转站: claude code 第三方中转站
常用快捷键
control + r展开被收缩的文本,以查看详情。
常用命令
如果命令不适应,使用开源的可视化界面也不错Claudia
/init命令
先创建claude说明文件。本仓库的范例:CLAUDE
/compact 把信息用简单的语法总结一下
压缩上下文,但总觉得会失真,不一定好用,倒不如另起一个对话呢
/clear
清空上下文
控制模型思考强度
官方说明的,在对话前面加think,让其思考强度更高
think
think hard
think harder
ultrathink
ultrawork 也行
记忆模式
输入#号触发
和ide联动编辑
/ide
好处:
vscode中选中代码,则cc里面能感知
cc改的代码,ide里面能看到diff
一次性对话
但其实不如直接用warp的ai命令了。
claude -p “今天您吃了吗”
ccr也是支持的,命令就是ccr code -p "今天您吃了吗"
前面加!,临时用于执行命令,而不是自然语言提问。
权限控制
危险模式,让其全自动驾驶
也叫yolo模式?
claude --dangerously-skip-permissions精细化控制
/permissions
规则文档:Identity and Access Management - Anthropic
可以直接把文档丢给ai,让ai生成规则行。
自定义命令
不通用,考虑直接使用系统级别的比如raycast 的snippet更好。
Create custom slash commands by adding .md files to .claude/commands/ in your project or ~/.claude/commands/ for commands that work
in any project
导出内容
/export
- 复杂问题,使用 plan mode ,切换快捷键 shift + tab
- 连接到ide,比如cursor。
- cursor中安装claude code。
- cc中输入/ide进行连接。
- 输入
\ + 回车可以换行- 有些软件里的命令行,支持
shift + 回车换行,如果不行,就用\+回车换行
- 有些软件里的命令行,支持
- 使用
shift + tab切换到plan mode- 这样 claude 会先与你过一下开发计划,然后再去开发,结果更可控
hook配置
Get started with Claude Code hooks - Anthropic
写完后自动进行lint检查等
通知音效
telegram 和folo频道推荐
找到让 Claude Code 完成时提醒我的办法了,最优雅的方式是配置 Claude Code 的 hooks,让它每次完成时播放音效。
编辑设置文件 ~/.claude/settings.json
{
"model": "Qwen/Qwen3-235B-A22B-Thinking-2507",
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "afplay ~/Sounds/notification.mp3"
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "afplay ~/Sounds/notification.mp3"
}
]
}
]
},
"permissions": { "allow": [ "Bash(ls:*)", "ReadFile:*", "Edit" ], "deny": [ "Bash(rm:*)", "Bash(sudo:*)" ] }
}
sub agent
map reduce, 子agent是并行执行的,会获取精简的上下文。 /agent
其他常用参数
使用其他模型
kimi v2用于claude code-官方token-不用ccr的情况下
参考教学视频
Claude Code Agent Harness 的 Action Space 设计拆解
核心问题:Agent 的工具到底该给 1 个通用原语,还是 50 个专用工具?
核心答案:都不是。更好的做法是用少量高杠杆原语做底座,再用 progressive disclosure、skills、subagent 和少量真正必要的结构化工具补能力。