はじめに
X などで情報を見かけて気になっていた「OpenCode」を、デスクトップ版アプリで少しだけ試してみたという話です。そのデスクトップ版アプリと「Kimi K2.5」を組み合わせて試してみました。
●anomalyco/opencode: The open source coding agent.
https://github.com/anomalyco/opencode
https://github.com/anomalyco/opencode/blob/dev/README.ja.md
●Intro | OpenCode
https://opencode.ai/docs
内容としては、簡単なコード生成と Agent Skills のお試しをやってみます。
OpenCode のデスクトップ版アプリ
現時点では OpenCode のデスクトップ版アプリはベータ版になるようです。以下にインストーラーのダウンロード用リンクや、パッケージマネージャーで導入する際のコマンドの記載がありました。
●OpenCode | Download
https://opencode.ai/download
導入方法
OpenCode のデスクトップ版アプリの導入方法について、Homebrew でインストールできるようだったので、今回は以下のコマンドで導入してみています。
brew install opencode-desktop
起動してみる
以下は、インストールした OpenCode のデスクトップ版アプリを起動した後の画面です(※ 起動時にアップデートを促されたので、アップデートを実行しました)。
また、とりあえず今回のお試し用に適当のフォルダを作って、そこをプロジェクトのルートに指定しました。
モデル選択
そして、利用するモデルの設定を切り替えました。設定を見ると以下がありましたが、その中の「Kimi K2.5 Free」を選びます。
期間限定での「Kimi K2.5」の無償提供
以下の公式のポストを見ると、「Kimi K2.5」を無償で利用できるのは期間限定の対応のようです。
軽いお試し1: コード生成
あとは軽く試してみます。以下のように Planモードもあるようでしたが、今回は Build のほうで直接コードの生成を試しました。
Build のほうにして、「p5.jsのパーティクル描画のプログラムを作って」というシンプルなプロンプトを入力しました。そのプロンプトに基づいた処理が行われた後のアプリの表示は、以下のようになりました。
生成されたコード
生成されたのは、HTMLファイルと JavaScript のファイルの 2つでした。それぞれの内容は以下のとおりです。
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>p5.js Particle System</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.9.0/p5.min.js"></script>
<style>
body {
margin: 0;
padding: 0;
overflow: hidden;
background: #000;
}
</style>
</head>
<body>
<script src="sketch.js"></script>
</body>
</html>
let particles = [];
const NUM_PARTICLES = 100;
function setup() {
createCanvas(windowWidth, windowHeight);
for (let i = 0; i < NUM_PARTICLES; i++) {
particles.push(new Particle());
}
}
function draw() {
background(0, 50);
for (let p of particles) {
p.update();
p.display();
}
}
function windowResized() {
resizeCanvas(windowWidth, windowHeight);
}
class Particle {
constructor() {
this.pos = createVector(random(width), random(height));
this.vel = p5.Vector.random2D();
this.vel.mult(random(1, 3));
this.size = random(4, 12);
this.color = color(
random(100, 255),
random(100, 200),
random(200, 255),
200,
);
}
update() {
this.pos.add(this.vel);
if (this.pos.x < 0 || this.pos.x > width) {
this.vel.x *= -1;
}
if (this.pos.y < 0 || this.pos.y > height) {
this.vel.y *= -1;
}
let mouse = createVector(mouseX, mouseY);
let dir = p5.Vector.sub(mouse, this.pos);
let d = dir.mag();
if (d < 150) {
dir.setMag(0.5);
this.vel.add(dir);
}
}
display() {
noStroke();
fill(this.color);
ellipse(this.pos.x, this.pos.y, this.size);
}
}
実行結果
生成されたコードの実行結果は以下のとおりです。
軽いお試し2: Agent Skills
次に Agent Skills を試してみます。
OpenCode の公式ドキュメントをチェック
OpenCode公式の Agent Skills に関するドキュメントは、以下のページで、こちらを見てみます。
●Agent Skills | OpenCode
https://opencode.ai/docs/skills/
OpenCode に関して、スキルに関するフォルダの置き場は以下に書かれています。
例えばプロジェクト用のスキルの場合は、OpenCode用のものと Claude互換のもので以下となるようです。
▼ プロジェクト用のもの:
.opencode/skills/<name>/SKILL.md
▼ Claude互換のプロジェクト用のもの
.claude/skills/<name>/SKILL.md
Agent Skills を試す手順
Agent Skills を試す手順について、既存のものを探して用いることにします。今回は、Google Developers Codelab の中の「Google Antigravity を使ってみる」に出てきている事例(一連の手順の中の「10. スキル」の「コードレビュー スキル」)を用います。
●Google Antigravity を使ってみる
https://codelabs.developers.google.com/getting-started-google-antigravity?hl=ja#9
その内容は、以下のとおりです。
- 「code-review」スキルを準備
- スキルは SKILL.md のみの構成
- わざと修正が必要な Python のコード(demo_bad_code.py)を準備
- 「review the @demo_bad_code.py file」というプロンプトの内容を依頼
ここで出てくる「SKILL.md」「demo_bad_code.py」は、それぞれ以下のとおりです。
---
name: code-review
description: Reviews code changes for bugs, style issues, and best practices. Use when reviewing PRs or checking code quality.
---
# Code Review Skill
When reviewing code, follow these steps:
## Review checklist
1. **Correctness**: Does the code do what it's supposed to?
2. **Edge cases**: Are error conditions handled?
3. **Style**: Does it follow project conventions?
4. **Performance**: Are there obvious inefficiencies?
## How to provide feedback
- Be specific about what needs to change
- Explain why, not just what
- Suggest alternatives when possible
import time
def get_user_data(users, id):
# Find user by ID
for u in users:
if u['id'] == id:
return u
return None
def process_payments(items):
total = 0
for i in items:
# Calculate tax
tax = i['price'] * 0.1
total = total + i['price'] + tax
time.sleep(0.1) # Simulate slow network call
return total
def run_batch():
users = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]
items = [{'price': 10}, {'price': 20}, {'price': 100}]
u = get_user_data(users, 3)
print("User found: " + u['name']) # Will crash if None
print("Total: " + str(process_payments(items)))
if __name__ == "__main__":
run_batch()
Agent Skills を実際に試す
それでは実際に試していきます。
まずは、作業対象のフォルダ(プロジェクトフォルダ)の直下に .opencode/skills/code-review/SKILL.md と demo_bad_code.py を準備します。
コマンド mkdir -p .opencode/skills/code-review/ でスキル用フォルダを準備して、その後、作成したフォルダ直下には SKILL.md を準備し、プロジェクト直下には demo_bad_code.py を準備しました。
ここでスキルの確認をしてみます。現状で確認用のコマンドはなさそうなので、以下のように何のスキルが利用可能であるかを聞いてみました。
そして、その中に以下の内容が含まれていることが確認できました。
code-review: コード変更のバグ、スタイル問題、ベストプラクティスをレビューするスキル(PRレビューやコード品質チェック時に使用)
上記の確認ができたところで「@demo_bad_code.py をレビューして」という内容を依頼してみます。
その後、返答を得られたのですが、全ての内容が英語で出てきました。
日本語での出力を指定した内容(プロンプト「@demo_bad_code.py をレビューして、結果を日本語で出して」)で、再度試してみます。
レビューした観点について、SKILL.md の内容を見て行っているかを軽く確認してみます。SKILL.md に記載されたチェック内容は以下でしたが、1 や 2 に関する内容については「重大なバグ(クラッシュします)」や「欠落しているエラー処理」が関連しそうな感じがします。3 と 4 については「スタイルの問題」「パフォーマンスの問題」という、指定した項目と同じ項目で出てきています。
1. **Correctness**: Does the code do what it's supposed to?
2. **Edge cases**: Are error conditions handled?
3. **Style**: Does it follow project conventions?
4. **Performance**: Are there obvious inefficiencies?
それと、フィードバックの文章については、以下が指定されていました。これも、「何を変更すべきで、それがなぜ必要で、できれば代替案を出す」という感じになっていたかと思われました。
- Be specific about what needs to change
- Explain why, not just what
- Suggest alternatives when possible













