Skip to main content

oh-my-opencodeをClaude Code互換レイヤーのみで使う

· 2 min read

まとめ

  • oh-my-opencodeはClaude Codeの.claude/ディレクトリ(commands/skills/agents/hooks)を読み込む互換レイヤーを提供する
  • 一方でSisyphus/Atlas/Prometheus等のオーケストレーション機能も含まれており、自動的に介入してくることがある
  • oh-my-opencode.jsonで適切に無効化設定をすれば、互換レイヤーだけを利用できる
  • 設定ミスしやすいポイント: disabledではなくdisabledisabled_commandsに指定できる値はスキーマで限定されている

問題

oh-my-opencodeをインストールすると、Claude Code互換機能だけでなく、以下のような自動機能も有効になる:

  • Sisyphus(オーケストレーションエージェント)
  • Atlas(ワークフロー自動化)
  • /start-workコマンド(Prometheusプランからの自動実行)
  • keyword-detector(キーワード検出による自動介入)

これらを使わず、.claude/の読み込みやMCP共有だけを利用したいケースがある。

解決方法

~/.config/opencode/oh-my-opencode.jsonを以下のように設定:

{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
"claude_code": {
"hooks": true,
"commands": true,
"skills": true,
"agents": true,
"mcps": true,
"plugins": true
},
"sisyphus_agent": {
"disabled": true
},
"disabled_agents": [
"sisyphus",
"atlas",
"prometheus"
],
"disabled_commands": [
"init-deep",
"start-work"
],
"disabled_hooks": [
"start-work",
"atlas",
"ralph-loop",
"keyword-detector",
"auto-slash-command",
"agent-usage-reminder"
],
"agents": {
"sisyphus": {
"disable": true
},
"atlas": {
"disable": true
},
"prometheus": {
"disable": true
}
}
}

設定のポイント

無効化の仕組み

設定キー役割
sisyphus_agent.disabledSisyphusオーケストレーション全体を無効化
disabled_agentsエージェント定義を削除
disabled_commandsスラッシュコマンドを無効化
disabled_hooksライフサイクルフックを無効化
agents.X.disable個別エージェントを無効化

claude_codeオブジェクト

互換レイヤーの各機能を個別にon/offできる:

"claude_code": {
"hooks": true, // .claude/hooks/
"commands": true, // .claude/commands/
"skills": true, // .claude/skills/
"agents": true, // .claude/agents/
"mcps": true, // .claude/mcp.json
"plugins": true // .claude/plugins/
}

ref

Claude Code/OpenCode/CodexでCtrl+Zが地味に便利

· One min read

まとめ

  • Claude Code / OpenCode / Codex CLI は Ctrl+Z でサスペンドして fg で復帰できる
  • vimでCtrl+Z → シェル作業 → fgで戻る、と同じ要領
  • セッションやコンテキストは維持される
  • lsgit status など、ちょっとしたコマンドでディレクトリの状況確認したいときに重宝する

Ctrl+Z と fg の仕組み

Unixのジョブコントロール機能。

  • Ctrl+Z: フォアグラウンドのプロセスにSIGTSTPシグナルを送り、サスペンド(一時停止)する
  • fg: サスペンドしたジョブをフォアグラウンドに戻す

使い方

# AI CLIで作業中に Ctrl+Z
[1]+ Stopped claude

# シェルで好きなコマンドを実行
$ ls
$ git status
$ git diff

# fg で復帰
$ fg

対応状況

ツールCtrl+Z サスペンド
Claude Code
OpenCode
Codex CLI

OpenCodeでCtrl+Hが効かない問題を解消する

· 2 min read

まとめ

  • macOSの一部ターミナル(Terminal.app等)ではCtrl+Hが^H(0x08)として送られるが、OpenCodeのデフォルトkeybindsには含まれていない
  • ~/.config/opencode/opencode.jsoninput_backspaceの設定を追加することで解決
  • 端末によってBackspaceの送信方法が異なるのは歴史的経緯によるもの

問題

OpenCodeで、Ctrl+Hを押しても文字が削除されない。

readline/emacs文化圏ではCtrl+Hはbackspaceとして機能するのが一般的だが、OpenCodeのデフォルト設定ではinput_backspacectrl+hが含まれていないため認識されない。

原因

ターミナルによってキー入力の送信方法が異なる:

  • Terminal.app(macOS標準): Ctrl+Hを^H(0x08)として送信(Backspaceと同一視)
  • iTerm2 / Ghostty等: kitty keyboard protocol等の拡張で修飾情報付きで送信可能

OpenCodeのデフォルトkeybindsはbackspace,shift+backspaceのみで、ctrl+hが含まれていない。

解決方法

~/.config/opencode/opencode.jsonを作成または編集し、以下の設定を追加:

{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"input_backspace": "backspace,shift+backspace,ctrl+h"
}
}

ref

ChatGPT Developer mode でMemoryを無効化する

· 2 min read

まとめ

  • ChatGPTのDeveloper modeを有効化するとMemory機能が無効化される
  • 会話履歴自体は残るため、後から参照可能
  • Custom instructionsは引き続き有効
  • Memory・直近の会話参照による意図しないパーソナライズを避けつつ、会話履歴を保持したいユースケースに有用
  • 本来は未検証のconnectors(MCP等)を使うための機能なので、この用途での利用は将来的に使えなくなる可能性あり

Developer modeとは

ChatGPTのbeta機能として提供されている設定。公式の説明は以下の通り:

Developer mode Beta

Allows you to add unverified connectors that could modify or erase data permanently. Memory is disabled. Use at your own risk. Learn more

本来の用途はMCPサーバー等を接続するための開発者向け機能だが、副次的にMemory機能が無効化されるため、中立的な回答を得たい場合にも活用できる。

設定方法

Settings > Apps > Advanced settings > Developer mode でトグルを有効化する。

ChatGPT Settings - General画面

ChatGPT Settings - Apps - Developer mode

ユースケース

  • Memoryや直近の会話参照による意図しないパーソナライズを避けたい場合
  • 非中立な意見の創出を避けつつ、会話履歴を残したい場合

注意点

  • 本来は未検証のconnectors(MCPなど)を使う際に設定する用途のため、Memory無効化目的での利用は将来的にサポートされなくなる可能性がある

ref

MCPとCLI、LLMが知らないツールはMCP使うと良い

· One min read

まとめ

  • LLMが知っているCLI(git、ls、curl等)は直接実行で効率的、MCPでラップする必要なし
  • LLMが知らないツール(自前開発のcli、社内API等)はMCPでschemaやpromptを定義できるので間違いを減らせる
  • よく知られたCLIの最新機能(例:npm query)もLLMが知らない可能性があるのでMCP経由で確実に使える
  • MCPはサービス提供者側がLLMの振る舞いをプログラマティックに制御できるのが革命的(セキュリティ制御、危険なコマンドのブロック等)
  • MCPサーバーは状態を保持できる(DB接続の維持、セッション管理等)、CLIは基本的にステートレスで毎回起動
  • MCPサーバーは起動したままなので高速、重いCLI(JVMベースなど)は毎回起動コストがかかる
  • ただしコンテキストが肥大化するとMCPの存在を忘れたりと不安定なところもあり改善の余地はある

PyCharm で Invalid Python interpreter selected for the project が出た際には設定の Interpreter 一覧から Invalid なものを全部削除すると直るかも

· One min read

まとめ

  • PyCharm で Invalid Python interpreter selected for the project が出た際には設定の Interpreter 一覧から Invalid なものを全部削除すると直るかも
  • PyCharm 管理配下の venv をターミナルから削除した際に発生したエラーで、過去の venv まわりの記録が 微妙に残ってしまっているのが原因と思われる

public な ghcr にある docker image を pull する際に denied: denied された場合は docker logout gchr.io すると解決する

· One min read

まとめ

  • public なはずの ghcr にある docker image を pull した際に Error response from daemon: Head "https://ghcr.io/v2/some/publicimage": denied: denied と出た際には docker logout ghcr.io とすれば直るっぽい
  • どうも ghcr に対して認証情報が残っているために発生するエラーの様子

参考