本文へスキップ
MeghaOS

言語を選択

MeghaOSはあなたのマシン上で100以上の言語を扱えます。このサイトはここに挙げたすべての言語で全ページご覧いただけます。法務ページとブログ記事は英語のままです。

FIG 2.6 · Code Studio

作業対象の全体を把握するコーディングエージェント。

Code Studioは、専用のコーディングエージェントを備えたVS Code風の環境です。ファイルをまたいで読み、変更の計画を隠さずに示し、あなたが開いたフォルダの中で作業します。毎ターンの前にチェックポイントを取るので、どこからでも取り消せます。

FIG 2.7 · リファクタリングを組み立てる

変更を頼む。差分を読む。決める。

下のデモはCode Studioのシナリオを動かします。ファイルツリー、用意された差分、そしてエージェント自身の計画と上限です。

認証をサーバーセッションから切り出して

試す

src/auth/middleware.ts

準備完了。作業ツリーに触れる前に確認を。

typescript
export async function authenticate(req: Request) {
-  const session = await store.get(req.cookies.sid);
-  if (!session) throw new Unauthorized();
+  const token = bearer(req.headers.authorization);
+  const claims = await verify(token, publicKey);
+  if (claims.exp < Date.now() / 1000) throw new Unauthorized();

-  return session.user;
+  return claims.sub;
}
src
auth
session.ts
tokens.ts
middleware.ts
routes
login.ts
tests
auth.test.ts

自分で書いた計画

計画全体50%
FIG 2.7b · サーフェス

そしてこれが、出荷される姿のCode Studioです。

ファイルツリーとタブ列を備えた本格的なエディタ。その横のレールにエージェントがいて、3つのファイルに触れる前に尋ねます。触れたあとではありません。

Code Studio

Explorer

  • src
  • components
  • lib
  • auth.ts
  • session.ts
  • tokens.ts
  • README.md
auth.tssession.ts
1 import { sign, verify } from 'jsonwebtoken'
2
3 export async function issueSession(userId: string) {
4 const token = sign({ sub: userId }, SECRET, {
5 expiresIn: '15m',
6 });
7
8 // Refresh token rotates on every use.
9 const refresh = await rotate(userId);
10 return { token, refresh };
11 }

インターフェースをページ上で再現 · v0.1.10

FIG 2.8 · 複数ファイルにまたがる作業

行にまたがる断片ではなく、ファイルにまたがるリファクタリング。

ほとんどのコーディング支援は、目の前のバッファを相手にします。Code Studioのエージェントは作業対象の全体を相手にします。必要なものを開き、何を変えたかを記録し、触れたすべてのファイルで変更の整合を保ちます。

  • 作業対象の全体を、ひとつの計画のもとで読み書きする
  • どのファイルを読み、編集し、追加したかを記録して見せる
  • 完了を宣言する前に、ワークスペースでテストを走らせる
  • すべての手順は進行中に見えており、おかしければ止められる
典型的な計画
  1. 01
    作業対象を決める
    この変更が実際に触れるのはどのファイルか。
  2. 02
    ワークスペースを保存する
    何かが書き込まれる前の、復帰点
  3. 03
    変更を加える
    すべての編集を、確認できる差分として示す
  4. 04
    検証する
    完了を報告する前に、ワークスペースでテストを実行
  5. 05
    残すか戻すかは、あなたが決める
    ひと押しでファイルと会話がまとめて巻き戻る
FIG 2.9 · セキュリティ

コードを書くエージェントは、セキュリティの問題です。

それをセキュリティの問題として扱うかどうかが、デモと、仕事用のマシンで動かせるものとの違いです。

すべてはワークスペースの中で起きる

ファイルの読み書きと削除は、あなたが開いたフォルダの中に限られ、そこから外へ出ようとするパスは拒否されます。コマンドはワークスペースを作業ディレクトリとして実行されます。

破壊的なコマンドは端から拒まれる

権限昇格、マシンの電源を切るものやディスクを再フォーマットするもの、絶対パスやホーム相対パスを狙った削除は実行されません。言い換えで通るということはありません。

危険なコマンドは立ち止まって尋ねる

再帰的な削除、履歴の書き換え、リモートへ公開するもの、ネットワークをシェルに流し込むものは、IDE上の承認カードとして保留されます。実行前に、正確なコマンドを目にできます。

すべてのメッセージが復帰点

ワークスペースは毎ターンの前に、あなた自身のバージョン管理とは別のシャドウ履歴へ保存されます。取り消せばファイルと会話がまとめて巻き戻るので、失敗したリファクタリングはひと押しで済み、発掘作業にはなりません。

実際のリポジトリに向けてみてください。

ダウンロードは無料です。コードがあなたのマシンから出ることはありません。エージェントにこれだけの権限を渡して安全なのは、ひとえにそのためです。