cc最新功能 | 配置 | Hook | OpenCode
“工欲善其事,必先利其器”
OpenCode vs Claude Code 的优势
无闪烁模式(no-flash mode)
传统模式下,每次增加对话 Claude Code 会全量刷新整个历史记录,导致终端一直闪烁。这是因为 Claude 内部实现效率较低,每次全部拉取会导致刷新速度跟不上终端刷新速度。
启用方式
在 .claude 目录的 settings 文件中添加一行:
NO_FLASH=1
| 特性 | 说明 |
|---|---|
| 内置虚拟滚轮 | Claude Code 自己实现了类似 Vim 的屏幕滚动功能,不再依赖终端原生滚动 |
| 滚动控制 | 支持鼠标滚轮、Page Up/Page Down,滚动速度可独立调节 |
| 简化的运行概要 | 显示"编辑了X个文件,增加了X行,删除了X行",点击可展开详情 |
| 鼠标点击支持 | 点击可回到当前轮对话位置,底部有快捷按钮回到最底部 |
| 内容预览 | 可以看到每轮对话的问题和结果,不会被中间的编辑详情淹没 |
关闭无闪烁模式
如果想恢复到传统终端滚动模式,可以运行:
tui default # 恢复传统模式
tui screen # 切换到最新模式
控制台输出模式
Ctrl+O 的三层展开
新版无闪烁模式下,Ctrl+O 需要按三次才能看到完整内容:
| 按压次数 | 显示效果 |
|---|---|
| 第1次 | 展开第一层:显示简化的运行概要 |
| 第2次 | 展开第二层:显示完整的工具调用和输出 |
| 第3次 | 完全收起:回到最精简的显示模式 |
Focus 模式(新版本更新)
最新版本简化了 Ctrl+O 的逻辑:
Ctrl+O按一次直接进入详细模式- 再按一次直接退出
- 想找中间的"一层展开"效果?输入
focus命令来开关:- 输入
focus→ 关闭 focus 模式,中间层就出现了 - 再输入
focus→ 重新开启 focus 模式
- 输入
Ctrl+O 内的 Vim 操作
在 Ctrl+O 展开的界面中按 V 键,可以打开整个对话记录:
- 方便复制特定段落
- 支持 Vim 快捷键(HJKL 移动、DW 删除等)
- 可以快速搜索和定位
终端原生滚动切换
在 Ctrl+O 模式下,按左方括号 [ 可以切换到终端原生滚动(如果你的终端滚动功能更好)。 Kitty 的滚动比较一般,按住 Shift 滚动手感不佳,所以使用 Claude 内置滚动。
输入与交互技巧
Ctrl+S 暂存输入
当你在输入一段复杂指令时突然需要先做别的事情(比如切换模型、提交任务、调用技能):
- 按
Ctrl+S→ 当前输入被推到上面 - 执行临时任务
- 执行完毕后,下面可以继续之前的输入
BTW 一次性提问
在 Claude 思考工作时可以直接提问,不打断当前状态:
- 问题不会进入上下文,不会浪费注意力
- 用完自动
rewind,相当于一次性的临时问题 - 适合问一些不相关的辅助问题
使用场景:比如 Claude 在工作时你突然想问"这个图片是关于什么的",直接 BTW 问,不用担心影响主流程。
自然语言执行命令
不需要记住复杂命令格式,直接说自然语言让 Claude 转换:
# 比如要删除 MCP
> 我想把 xxx MCP 删掉
→ Claude 会自动生成对应命令并执行
Ctrl+V 粘贴图像
可以直接粘贴截图让 Claude 分析:
# 粘贴 UI 截图后说
> 模仿这个 UI
→ Claude 会识别截图并尝试复现
直接复制 Claude Code 官网的截图,让 Claude 做出暗黑版 UI,Claude 甚至会自动识别用户使用的终端主题色
文件操作与编辑
Ctrl+G 用编辑器编辑提示词
当提示词很长时,可以调用编辑器来编辑:
# 需要先设置环境变量
export EDITOR=nvim # 用 Neovim 编辑
export EDITOR=code # 用 VS Code 编辑
然后按 Ctrl+G 打开编辑器,编辑完成后退出,内容会自动填充到提示词。
撤销操作
rewind→ 只回退对话,代码修改保留rewind --restore→ 回退对话的同时撤销代码修改
命令执行与调试
感叹号直接运行 bash 命令
在对话中直接运行命令,输出结果会自动作为上下文:
# 直接在输入前加 !
! ls
错误就地修复
如果命令执行报错,直接说 fix:
- Claude 能看到之前的错误输出,不需要手动粘贴
- 可以就地帮你修复问题
# 故意引入错误后
> fix
→ Claude 看到报错信息,直接修复
离线运行与自动化
离线命令执行(-p 参数)
不需要进入交互界面,直接执行命令:
# 直接 commit
claude -p commit
# 可以让 Claude 在后台运行任务
claude -p "make commit"
创建定时任务(log 技能)
可以设置周期性任务,比如每 5 分钟检查系统状态:
# 告诉 Claude
> 每隔 5 分钟汇报一次 CPU 用量和内存使用情况
# Claude 会创建 cron 任务
# 配合 tmux 使用效果更好,关闭终端任务会终止
延时执行(schedule 技能)
设置在某个时间执行任务:
# 现在是 15:42,告诉他
> 16 点的时候帮我运行那个哔哩哔哩弹幕机
→ Claude 会找到对应的项目,16:00 时自动执行
取消定时任务
> cancel the scheduled task
技能(Skill)系统
为什么用 Skill 而不用 MCP
| 对比 | MCP | Skill |
|---|---|---|
| 上下文占用 | 几千 token | 几十 token |
| 调用方式 | 始终加载 | 按需调用 |
| 推荐 | 未来属于 Skill | - |
创建 Skill
让 Claude 根据当前对话自动生成:
# 对话中完成一个任务后说
> 把这个转化为技能
→ Claude 会:
1. 询问技能名称
2. 询问目标描述
3. 询问成功条件
4. 询问触发条件(比如用户说什么时触发)
5. 设置参数(如果有)
6. 选择安装位置(全局/当前仓库)
Skill 的触发机制
Skill 通过 description 字段描述触发条件:
description: this skill is used when user says "scrape the web"
or semantically similar phrases
当用户提到相关关键词时,Claude 会自动想起并调用对应 Skill。
Skill 加载机制
- Skill 可以包含子文件夹,通过相对路径引用
- 可以引用 MCP 设置
- 实现按需加载:只读取当前对话需要的子文档
- Skill 的
.md文件内容会通过skill工具加载进上下文
Skill 与 Hook 的配合
有些 Skill 触发条件很模糊(比如"建造 3D 模型时"),不适合用 Hook 硬匹配,适合用语义识别
但有些场景模式很明确(比如启动后台任务),用 Hook 可以在特定行为发生时强制注入提示:
# 启动后台任务后,Hook 自动插入缓存技能提示
→ Claude 即使忘记也会被提示想起来
工作区与分支管理
Work Tree 功能
不污染主仓库,在独立工作区工作:
# 启动时指定工作区
claude -w test
# 或者在对话中说
> I want to work on a new feature
→ Claude 会在 .claude/worktrees/test 创建副本
# 完成工作后
> merge back to main
→ 自动合并到主目录
实际工作流
- 在主目录启动 Claude
- 让它去
worktree开发新功能 - 主仓库代码不受影响
- 功能完成后让它
merge back - 如果想保留独立分支,
claude -w branchname
模型选择与配置
| 模型 | 特点 |
|---|---|
| Opus | 上下文召回能力强,200K 版本和普通版本同价,不会遗忘早期设定 |
| Sonnet | 动不动就压缩上下文,信息容易丢失 |
| Gemini | 上下文太长时会降智,指令太多会健忘 |
强烈建议使用 Opus:很久以前设定的规则,Opus 还能记得并主动询问确认。Sonnet 做着做着可能就忘了之前说好的设定。
必开配置
# 思考深度
affort: hi 或 max
# 关闭动态思考:每个问题都让他思考,不要让他偷懒
# 每次都使用全量思考,虽然会慢一点贵一点
# 但 Max 用不完的(UP 主是 20 倍 Max)
# 如果是 5 倍,直接全用 Sonnet 也很难用完
Permission 设置
建议 bypass_permission: true,Claude 执行命令时不询问,除非涉及配置修改。用户可以看着命令执行,确保安全。
Hook系统
在 settings 里配置脚本,当 Claude 执行命令时触发:
- 可以在命令执行前注入提示
- 可以纠正错误用法
- 完全自动化,不需要用户干预
示例:强制使用 UV 而非 pip
// 在 settings 中配置一个 5 秒延迟的 hook
// 当检测到 Claude 试图调用 pip 命令时触发
// 检测逻辑包括:
// - 纯 pip 命令
// - 管道中的 pip
// - pip3
// - 各种变体
效果
# 你让 Claude 演示用 pip 安装
> demonstrate using pip install xxx
→ Hook 检测到 pip,插入纠正指令
→ Claude 改用 UV 或按需使用 pip(带跳过注释)
Hook 适用场景
- 硬匹配:模式明确,比如检测特定命令的执行
- 强制提醒:防止 Claude 在特定情况下忘记规则
与 Rule 的区别
| 方法 | 场景 | 效果 |
|---|---|---|
| 规则(Rule) | 智商高的模型(Opus 4.7+)能记住 | 写在 .md 里,用自然语言描述 |
| Hook | 低智商模型(Gemini 等)容易健忘 | 程序化检测,发现问题立即纠正 |
Gemini 评价很低,认为它太蠢,规则写太多会降智,用 Hook 机械化检测更好。
代码审查技能
AI Slope Review 技能
检测常见的 AI 生成代码问题:
1. 风格不一致
- 代码换行规范不统一
- 与周围上下文风格不符
2. 防御性编程过度
- 用 catch-all 异常捕获掩盖问题
- 降低调试效率,影响可维护性
3. 类型转换滥用
- 明明已经是相同类型还要转来转去
4. 不解决根本问题
- 上游出问题,中游和下游不断打补丁
- 应该直接解决源头
5. 死代码
- 复制一份代码改一点,原来的不删除
- 没有任何地方调用
6. 硬编码数字
- 每步硬编码序号,未来加任务会冲突
7. 文档换行问题
- 前面都换行,突然一段拉满
8. 命名规范
- 检查
.cc是否是 C++ 后缀
配置示例
# 让 Claude 编辑后必须重读
# Hook 配置:在编辑/写入文件后触发
# 检查周围 30 行是否正确
# 如果正确不汇报,如果有问题汇报并修复
# 同时引用 cloud.md 的规范
缓存优化策略
Anthropic 缓存机制
| 访问模式 | 价格 | 说明 |
|---|---|---|
| 首次访问(冷启动) | 1.25x | Token 转换向量化成本 |
| 缓存命中(5分钟内) | 0.1x | 只有读取成本 |
| 5 分钟后再次访问 | 1.25x | 缓存失效 |
自动刷新策略
为了保持缓存命中,设置每 5 分钟刷新一次:
# 通过 hook 确保 Claude 在有后台任务时自动刷新缓存
计算:50 分钟内刷新 10 次共花费 1.0x,优于一次性 1.25x。
一键安装配置
配置包
git clone <仓库地址>
# 会覆盖你的 .claude 配置
# 对话记录在 .git 目录不会被覆盖
# 自己的 skill 会排除掉
⚠️ 警告:会覆盖现有配置,建议先备份。
主要配置内容
- 默认 Python 开发环境配置
- 预设的 Hook 和 Skill
- 自定义主题色
- 缓存策略优化
附录
| 内容 | 说明 |
|---|---|
| Claude 官网也是 Claude 做的 | 让 Claude 模仿官网 UI |
| 高天也提到过类似问题 | 关于上下文压缩导致信息丢失 |
- 新开对话,频繁换话题时开新对话,模型更容易专注
- 重要结论沉淀,写到
.md文件里,不要只存在对话上下文 - 合理使用 Hook,对低智商模型用
Hook 强制纠正,对高智商模型用 Rule - Opus + Max不要心疼,用 Max 可以当"写轮眼"用
- Skill 替代 MCP,按需加载,节省上下文
- Work Tree:多任务并行时隔离环境
- 定期备份配置:一键安装会覆盖
前文: 黑神话悟空专栏
Hook
一、为什么 CLAUDE.md 规则不靠谱?
模型同时能可靠遵循的指令数量有限(大约 100 条)。当执行复杂任务时,代码本身可能占据 80 条指令的"脑容量",只剩 20 条给全局规则,导致选择性遗忘。
1.2 上下文的局域性效应
- 越早出现的指令越容易被遗忘
- 当讨论当前话题时,距离较远的信息会被模型视为"垃圾信息"自动忽略
- 上下文结构:
系统提示 → 系统工具 → CLAUDE.md规则文件 → 技能文件(几KB) → 当前对话
↑ ↑
最容易被遗忘 最新的位置,模型记得最清楚
- 即使没有触发任何命令,规则文件也会占用上下文 token
- 规则过多会导致"左右脑互搏"(互相
冲突的指令),使模型智商下降
二、Hook 的原理
Hook 是 Claude Code 的注入机制,在特定时机将自定义消息插入到模型的最新上下文中:
触发时机 → [Hook消息注入点] → 模型响应
为什么 Hook 比规则文件更可靠?
- 注入位置最新:直接插入到当前对话的最末尾
- 按需加载:只在使用时才加载,不浪费 token
- 实时阻断:在命令执行前/后立即触发
三、Hook 的四种类型
3.1 PreToolUse(工具调用前)
劫持 browse、read、write、edit 等工具调用,发生在命令执行之前。
拦截型示例
# ~/.claude/commands/block-dev-null hook
---
description: "拦截 2>/dev/null 和 2>&1 的错误屏蔽行为"
hooks:
- name: block-dev-null
when: "preToolUse"
tools: ["Bash"]
prompt: |
你刚刚试图执行以下命令:
{{command}}
这条命令使用了 2>/dev/null 或 2>&1 来屏蔽错误输出。这是不良实践,会隐藏重要的诊断信息。
请重新构造一个不带错误屏蔽的命令。如果确实需要绕过错误,请添加注释 `# bypass`。
绕过机制(bypass)
# bypass 允许用户主动选择忽略警告
# 在命令后添加 # bypass 即可通过
curl https://example.com 2>/dev/null # bypass
为什么需要 bypass?
- 假阳性问题:RM 开头的命令不一定都是删除(如
rmdir、rn) - 假阴性漏洞:可以用 base64 编码、脚本文件等方式绕过检测
- 设计:Hook 是兜底提醒,不是强制禁令。强制封锁会导致模型想出更多绕过方法
提醒型示例
# ~/.claude/commands/use-uv hook
---
description: "提醒使用 UV 替代 pip"
hooks:
- name: use-uv
when: "postToolUse"
tools: ["Bash"]
prompt: |
💡 提示:建议使用 `uv run` 替代 `pip` 运行 Python 脚本。
示例:
uv run python script.py
pip 在很多情况下无法正确识别虚拟环境,导致包找不到或版本冲突。
强制型 vs 提醒型对比
| 类型 | 行为 | 场景 |
|---|---|---|
| 强制型(PreToolUse) | 直接返回错误,阻止执行 | 不可逆操作(删除文件、系统更改) |
| 提醒型(PostToolUse) | 放行命令,事后附加提示 | 体验优化(运行慢、找不到包但不破坏性) |
3.2 PostToolUse(工具调用后)
在命令执行完成后注入提示,不阻断执行。
hooks:
- name: uv-reminder
when: "postToolUse"
tools: ["Bash"]
prompt: |
💡 请记住:推荐使用 `uv run` 替代直接运行 pip/python。
如果你刚刚使用了 pip 或 python,直接换成 uv run 可能更稳定。
3.3 UserPromptSubmit(用户提交问题时)
在用户发送消息后自动附加信息
# ~/.claude/commands/system-info hook
---
description: "自动附加系统状态信息"
hooks:
- name: system-info
when: "userPromptSubmit"
prompt: |
当前环境信息:
时间:{{current_time}}
Git 状态:
{{gitStatus}}
系统负载:{{systemLoad}}
实际效果
用户: touch newfile.txt
Hook 自动附加: Git 状态:?? newfile.txt
附加内容的两种方式
# 方式一:追加到上下文(不阻断)
prompt: |
当前 Git 状态:
{{gitStatus}}
# 方式二:重写用户输入(阻断)
prompt: "{{ctx}}" # 打印上下文并输出到 stderr 触发阻断
3.4 Stop(回答结束时)
在模型生成完回复后触发,用于自动化操作(如自动精简长回复)。
# ~/.claude/commands/tldr hook
---
description: "自动精简长回复"
hooks:
- name: tldr
when: "stop"
prompt: |
你的回复太长了。请用 TLDR 格式重新总结,保留核心要点。
Stop Hook 的防无限循环机制
Claude Code 内置了双重保护:
- 如果当前回复已经是 TLDR,跳过
- 如果上一轮已触发过 Stop Hook,跳过
// 内部逻辑示意
if (isAlreadyTLDR(response)) return; // 第一重保护
if (previousTurnTriggered(thisHook)) return; // 第二重保护
四、Hook + Skill:强制触发技能
技能文件(.claude/commands/*.mdc)可能被埋在大量上下文中,模型容易忘记调用。
解决:劫持 write/edit 操作
# ~/.claude/commands/force-frontend-design hook
---
description: "强制调用前端设计技能"
hooks:
- name: force-frontend-design
when: "preToolUse"
tools: ["Write", "Edit"]
prompt: |
你正要写入或编辑文件。
请先调用 `frontend-design` 技能获取设计指导,然后再执行操作。
使用 /skill frontend-design 加载技能。
配合效果
模型意图写入 index.html
→ Hook 劫持,提示加载 frontend-design 技能
→ 模型加载技能
→ 模型参考技能中的设计规范生成页面
→ 输出符合"AI 审美"要求的页面
Hook 配置
示例 1:多层级 Bash 防护
# ~/.claude/commands/bash-guard hook
---
description: "Bash 命令多层防护"
hooks:
# 第一层:拦截危险操作
- name: block-dangerous
when: "preToolUse"
tools: ["Bash"]
if: "command contains 'rm -rf' or command contains 'sudo rm'"
prompt: |
⚠️ 检测到危险删除操作!
命令:{{command}}
请解释为什么要执行此操作,或重新构造更安全的命令。
如需强制执行,请添加 `# bypass` 注释。
# 第二层:提醒最佳实践
- name: best-practices
when: "postToolUse"
tools: ["Bash"]
if: "command contains 'pip install' or command contains 'python'"
prompt: |
💡 建议使用 `uv` 替代 pip:
uv pip install <package>
# 或
uv run python script.py
示例 2:自动环境感知
# ~/.claude/commands/env-awareness hook
---
description: "自动附加环境上下文"
hooks:
- name: git-context
when: "userPromptSubmit"
prompt: |
📊 当前 Git 上下文:
{{gitStatus}}
- name: recent-changes
when: "userPromptSubmit"
prompt: |
📝 最近的更改:
{{fileModified}}
附录
| 类型 | 命令 | 位置 |
|---|---|---|
| 创建 hook | /hook <name> |
~/.claude/commands/<name>.hook.md |
| 创建技能 | /skill <name> |
~/.claude/commands/<name>.mdc |
| 查看所有 hook | /hooks |
- |
- Hook 是兜底,不是禁令,强制封锁会导致模型想出绕过方法
- 按需加载,只在
需要时注入,避免污染上下文 - 保留 bypass 通道,允许用户主动承担风险
- 分场景选择类型:
- 不可逆操作 → PreToolUse 强制拦截
- 体验优化 → PostToolUse 事后提醒
- 上下文补充 → UserPromptSubmit
- 自动化操作 → Stop Hook
- Hook 与 Skill 配合,
用 Hook 强制触发技能,提高触发率
- Claude Code 安装文档:https://code.claude.com/docs/en/overview
OpenCode Skills + 提示词配置
- 2. OpenCode 相比 Claude Code 的优势
- 3. Skills 配置详解
- 4. 代理框架设计
- 5. Docker 容器化安全方案
- 6. 与 AI 对话技巧
- 7. 自定义配置与快捷工具
- 8. 配置文件仓库
1.1 为什么从 Claude Code 转向 OpenCode
之前使用 Claude Code,现在改用 OpenCode 作为 AI 编程工具。
原因:
- OpenCode 是开源的,可深度定制
- Claude Code 是闭源,有诸多限制
| 痛点 | 解决方案 |
|---|---|
| AI 权力太大,会破坏系统 | testing-safe-protocol skill:给 AI 打"思想钢印" |
| 权力太小,老要确认,无法离开电脑 | 智能权限检测:本地文件操作自动执行 |
| AI 写代码有幻觉/ bug | tdd-workflow skill:测试驱动开发 |
| 任务太长,上下文压缩导致失忆 | 层层转包的代理框架 + 断点续传 |
2. OpenCode 相比 Claude Code 的优势
2.1 模型选择自由
OpenCode 优势:
- 可任意选择任何有 API Key 的模型
- 官方提供免费版模型(限速但可用)
- 运行时可随时切换模型,无需重启
Claude Code 的限制:
- 需要通过
环境变量锁定模型 - 切换模型必须重启
2.2 智能的 bellash 权限检测
OpenCode 的权限检测逻辑:
Claude Code 的问题:
- 任何操作都询问权限(即使只是本地文件修改)
- 一旦同意就变成"什么都同意"模式
- 无法区分本地和全局操作
对比:
| 操作 | Claude Code | OpenCode |
|---|---|---|
make dearEP -A(项目内) |
全部询问 | 直接执行 |
| 在桌面创建文件 | 全部询问 | 请求权限 |
| 修改项目内文件 | 全部询问 | 直接执行 |
3. Skills 配置
3.1 配置文件仓库
https://github.com/archibate/dotfiles-opencode
3.2 testing-safe-protocol
用途:严格限制 AI 的操作范围,防止破坏系统
文件操作限制:
- 涉及文件系统写入时,只允许在当前项目文件夹下操作
- 不允许写到项目外
网络监听限制:
- 只允许在本地监听端口
- 不允许监听全网,否则容易被攻击
效果:
- AI 不会再在根目录创建垃圾文件
- 不会擅自在系统全局安装软件
- 如果需要安装系统级软件,会明确请求用户确认
3.3 tdd-workflow
测试驱动开发(TDD),解决 AI 容易幻觉、写错代码的问题
| 规则 | 说明 |
|---|---|
| 先写测试后写实现 | 必须先通过所有测试才能说完成 |
| 覆盖所有边界情况 | 测试用例要完整 |
| 模块解耦独立运行 | 每个模块能独立运行,放在自己的单元测试里 |
| 提前测试 | 尽早发现问题,不要拖到集成测试阶段 |
为什么 TDD 最适合 AI 编程:
- 不要求 AI 一次性写对所有代码(人类也做不到)
- 通过自己测试自己的代码,逐渐发现问题
- 最后能自己把 bug 修复干净,就是好 AI
使用:在 TDD 开发时必须读取 tdd-workflow 文件
3.4 brain-storm
类型:主 agent,分析需求、制定计划、协调执行
工作流程:
特点:
- 自动澄清用户需求
- 自动探索各种实现方案
- 自动创建
test.md任务清单 - 任务会写得很清楚,最后验证测试是否可靠
- 支持
断点续传:重启后从最后一个未完成任务继续
4. 代理框架设计
4.1 三层代理架构
| 层级 | 名称 | 职责 |
|---|---|---|
| 第1层 | brain-storm | 需求澄清、任务规划、调用子代理 |
| 第2层 | xq | 读取 test.md,按任务执行 |
| 第3层 | worker | 实际执行任务,使用 skills |
4.2 为什么用多层代理
问题:如果把所有任务塞在一个 agent 的上下文里:
- 上下文太大,延迟高
- 费用高(按 token 计费)
解决:层层转包,每个 worker 只处理当前任务
4.3 任务执行机制
断点续传:
每次启动时:
1. 读取最后一个未完成任务
2. 从该任务继续执行
进度追踪:
- worker 完成后会更新/创建
progress.md - 下次启动时读取
progress.md了解进度 - 追加写入,不覆盖之前内容
git 提交规则:
- 使用固定格式生成 commit message
- 先执行
git add -A --dry-run检查 - 自动创建/更新
.gitignore - 不会把二进制文件加进去
5. Docker 容器化安全方案
5.1 docom(Docker Orchestrator)
创建隔离的 Docker 虚拟环境,防止 AI 破坏宿主机
5.2 配置方法
# 安装 docom
# 链接到 local bin
ln -s /path/to/docom ~/local/bin/docom
# 执行命令
docom run opencode
5.3 隔离机制
Docker 容器内只有以下路径有效:
- 当前项目路径
- OpenCode 配置文件路径
效果:
- AI再怎么操作,只破坏项目本身
- 不会破坏整个电脑
- 项目有 git 提交,不 push 就不会造成不可逆破坏
5.4 何时需要 docom
当前配置下(已启用 testing-safe-protocol):
- AI 不会破坏项目外文件
- 不会擅自在系统安装软件
- 可以放心在本机运行,不需要 docom
如果需要更高级别的安全隔离,再启用 docom。
6. 与 AI 对话技巧
6.1 不要给 AI 添加偏见
错误示例:
用户内心:我想实现 X 功能,正确做法是 Y
用户行为:问"如何用 Z 方法实现 X"
→ AI 给出 Z 方法的离谱方案
→ 用户真的去做了 Z
→ 浪费大量时间
正确做法:
直接问:我想实现 X 功能,应该怎么做?
→ 如果 Y 是正确做法,AI 会直接告诉你
→ 如果用户不确定,可以补充:"我想到用 Z 方法,不知道对不对"
→ AI 可以判断 Z 是不是正确的
6.2 先分析再设硬指标
错误示例:
"把这个函数优化到 1 秒以内"
→ AI 可能欺骗你,或者把函数改成有 bug 的版本
→ 硬指标导致 AI 乱来
正确做法:
"分析一下这个函数有没有优化空间"
"分析为什么这个函数在某种条件下快,某种条件下慢"
→ AI 可以基于上下文给出准确建议
6.3 强制 AI 读取文档
问题:AI 很懒,不会自动找文档
解决:使用 @ 强制引用文档
例如:
@ read guidelines.md
@ read tdd-workflow.md
原理:强制 @ 会把文档内容贴到上下文,不管 AI 读不读都会包含
文档类型区分:
- 对话内容 = 短期记忆(很快失效)
- 文档内容 = 长期记忆(可延续)
6.4 不要在提示词里写废话
反面教材(某些插件的提示词):
"为什么你是西西福斯"
"古希腊典故"
"古罗马古希腊"
...(大量篇幅)
"你要做什么"(一笔带过)
正确做法:直接告诉 AI 要做什么,不解释为什么
6.5 不要解释为什么要做一件事
错误示例:
"我要把 X 变成单例模式,因为我的场景是..."
→ AI 记住了这些背景知识,下次却不记得
→ 浪费 token
正确做法:
直接说:把 X 改成单例模式。
例外:如果需要 AI 评估想法,可以专门开一个评估对话:
"我打算把 X 改成单例模式,你觉得这样好不好?"
(提醒他不要编辑,只是在问问题)
6.6 让 AI 脑补计划,而不是自己列细节
工作流程:
1. 用户说明目标
2. AI 脑补出实现方案(包括用户没想到的细节)
3. 用户确认计划是否正确
4. 确认后执行
优点:
- AI 脑补速度比打字快得多
- 用户只需要在候选方案中选择
- 类似于拼音输入法:打拼音 → 选候选词
OpenCode 内置操作:
- 按
Tab:切换到 plan 模式 - 按
Shift+Tab:回到 build 模式
6.7 自己写代码,让 AI 审核
策略:
- 自己写代码(速度本来就快)
- 写完后让 AI 审核
- AI 审核比自己肉眼检查高效得多
AI 能发现的常见问题:
- 变量命名错误
- 缺少 return 语句
- 类型未定义
- 逻辑错误
6.8 不同任务用不同上下文
错误做法:
把所有信息塞在一个对话里,越裹越长
→ 上下文太长,AI 只看到一小部分
正确做法:
新任务 → 新建对话
把信息写到文档里
用 @ 引用文档
7. 自定义配置与快捷工具
7.1 agents.md 基础配置
# OpenCode agent 提示词配置
## 基础规则
- 必须用中文回复
- 使用 uv 运行 python,不用 pip
- 可以执行多行指令
- 新项目用 4 空格缩进
- 代码和注释用英文
## 样式规则
- 如果目录下已有项目,先探索代码风格
- 服从现有项目的风格
7.2 中文回复 vs 英文代码
| 类型 | 语言 | 原因 |
|---|---|---|
| AI 回复 | 中文 | 用户读起来方便 |
| 代码和注释 | 英文 | 用户可能需要自己编辑,改中文要切换输入法 |
7.3 commit 自动生成
功能:在 fish shell 中设置 alias
# 每次改动文件后,输入 commit 自动:
1. AI 生成 commit message
2. git add -A --dry-run
3. git commit
效果:不再需要自己想 commit message,直接自动生成并提交
7.4 I3wm 窗口管理工具
brain.dump(想法记录)
用途:开发过程中突然想到的事情可以快速记录
快捷键:配置 I3 窗口绑定 braint stack
使用流程:
1. 工作中突然有想法
2. 按快捷键打开 brain dump
3. 记录想法
4. 继续手头工作
5. 之后查看截图形态的记录
6. 决定是否用 AI 进一步处理
好处:
- 不会忘记随机想法
- 可以记录屏幕状态,方便回顾
- 适合想法太多的场景
timer(计时器)
用途:工作计时
# 开始计时
work start
# 查看已用时间
按快捷键查看
# 删除计时器
删除记录
8. 配置文件仓库
目录结构
dotfiles-opencode/
├── .config/
│ └── opencode/
│ ├── agents.md # 主 agent 配置
│ ├── skills/
│ │ ├── testing-safe-protocol.md
│ │ ├── tdd-workflow.md
│ │ └── ...
│ └── ...
├── bin/
│ ├── docom # Docker 编排器
│ ├── commit # 自动 commit 脚本
│ └── ...
└── README.md
安装步骤
- 安装 OpenCode
- 克隆配置文件仓库
- 按仓库中的说明配置
附录
| 概念 | 说明 |
|---|---|
| bellash | OpenCode 的命令执行权限检测机制 |
| testing-safe-protocol | 防止 AI 破坏系统的 skill |
| tdd-workflow | 测试驱动开发的 skill |
| brain-storm | 主 agent,负责需求分析和任务规划 |
| xq | 子 agent,负责按任务列表执行 |
| worker | 第三层代理,实际执行任务 |
| docom | Docker 编排器,创建隔离环境 |
| brain dump | I3wm 中的想法记录工具 |
- 智能权限管理:OpenCode 自动区分本地和全局操作,减少不必要的确认
- TDD + 测试安全协议:从根本上解决 AI 幻觉和系统破坏问题
- 三层代理架构:实现长时间任务的
断点续传,同时控制成本 - 对话技巧:不要添加偏见、
先分析后决策、强制文档读取 - 开发工具链:commit 自动生成、brain dump 想法记录、timer 计时器
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)