1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

QES ブログ

記事公開日

【Kiro効率化】Steeringによる手戻り防止

  • このエントリーをはてなブックマークに追加

この記事のポイント

自律型AIエージェント「Kiro」の「Agent Steering」機能を活用し、開発ルールを定義することで、AIによる意図しないコード改変や手戻りを防ぐ具体的な手法を解説します。

  • Agent Steeringによる開発ルールの標準化:
    Global設定を用いてプロジェクト横断的にコーディング規約や振る舞いを統一し、AI開発の品質と一貫性を担保する仕組みを紹介します。
  • 「修正案提示」プロセスの必須化:
    コードを即座に修正させるのではなく、事前に変更内容の提案とユーザー承認を強制するルールを記述し、AIの暴走を未然に防ぐフローを構築します。
  • 電卓プログラムを用いた実証検証:
    Python製アプリの修正タスクを例に、Steering設定の有無がKiroの挙動に与える影響を比較し、過剰な機能追加を抑制できることを実証します。

こんにちは!DXソリューション営業本部の菊池です。

Kiroを使用している際に修正指示をすると、意図しない部分まで編集してしまい、手戻りが起きることはありませんか?
今回は、Kiroでの修正作業にワンクッション入れ、手戻りを防ぐためのAgent Steering機能活用法をご紹介します。

Kiroの概要については下記ブログをご覧ください。

Steeringとは?

Agent Steeringは、Kiroの挙動や応答のガイドラインを定義できる機能です。
これを利用することで、プロジェクトごとのルールや、全社的なコーディング規約などをKiroに遵守させることができます。

Steeringの概要については、下記の公式ドキュメントをご参照ください。

設定手順

1. Steeringファイルの作成

AGENT STEERINGの横にある + を選択します。

Steeringファイルの作成ボタン

2. 適用範囲と名前の設定

Steeringファイルを作成する際は、初めにSteeringファイルの適用範囲を選択します。

適用範囲の選択
  • Workspace
    現在作業しているディレクトリでのみ適用されます
  • Global
    Kiroを使用するときはいつでも適用されます。

今回はKiroを使用する際いつでも手戻りを防止したいので、Globalを選択します。
次に、Steeringファイルの名前を設定します。
今回はpreventing-reworkとしました。

ファイル名の設定

3. Steeringファイルの編集

生成されたファイルにある、コメント部分を削除します。

初期コメントの削除

設定したい内容を記述します。

設定内容の記述

今回は修正前後のコードを提示した上で、修正していいかユーザーに問いかけるような設定を行います。
設定内容は下記の通りです。

# 手戻り防止ルール - 修正案提示必須

## 修正依頼への対応プロセス

### 必須の対応手順
1. **修正案の提示**: ユーザーからの修正依頼を受けた場合、必ず最初に修正案のみを提示する
2. **実行確認**: 修正案を提示した後、実行するかどうかをユーザーに確認する
3. **承認後実行**: ユーザーの明示的な承認を得てから実際の修正を実行する

### 修正案提示の形式
- 変更対象ファイルと変更箇所を明確に示す
- 変更前後のコードを比較できる形で提示する
- 変更理由と期待される効果を説明する
- 影響範囲や注意点があれば併せて説明する

## 実行前確認の必須事項

### ユーザーへの確認内容
- 「この修正案で実行してよろしいですか?」
- 「他に考慮すべき点はありますか?」
- 「修正内容に問題がないか確認してください」

### 確認が必要なケース
- ファイルの新規作成
- 既存ファイルの変更
- ファイルの削除や移動
- 設定ファイルの変更
- 依存関係に影響する変更

## 禁止事項

### 即座に実行してはいけない操作
- ユーザーの承認なしでのファイル変更
- 修正案を提示せずに直接実行
- 複数の変更を一度に実行(段階的実行を推奨)

### 例外的なケース(直接実行可能)
- 単純な情報提供や説明のみの場合
- ファイルの読み取りや確認のみの場合
- ユーザーが明示的に「すぐに実行して」と指示した場合
- 明確で具体的な修正指示の場合(以下の条件を満たす場合のみ):
  - 「〜してや」「〜にして」「〜を追加して」など具体的な動作指示
  - 対象ファイルと変更内容が明確
  - 単一の明確な変更(複数の変更が含まれる場合は修正案提示)
  - リスクが低い変更(設定変更、重要なロジック変更は除く)

### 直接実行の判断基準
以下の条件を**すべて**満たす場合のみ直接実行可能:
1. 指示が具体的で曖昧さがない
2. 変更対象が単一で明確
3. 既存機能への影響が最小限
4. 元に戻すことが容易
5. ユーザーの意図が100%明確

## 修正案提示のテンプレート


## 修正案

**対象ファイル**: [ファイル名]
**変更内容**: [変更の概要]

### 変更前

[現在のコード]


### 変更後

[修正後のコード]


**変更理由**: [なぜこの変更が必要か]
**影響範囲**: [この変更が他に与える影響]

この修正案で実行してよろしいですか?


## 品質保証

### 修正案の品質チェック
- 構文エラーがないか事前確認
- 既存機能への影響を評価
- より良い代替案がないか検討
- 段階的な実行が可能か検討

以上でSteeringの設定は完了し、Kiroは次回のチャットセッション開始時に、Steeringファイルを読み込むようになります。

動作確認

今回は、コマンドプロンプト上で動く簡単な電卓プログラムに修正をかけてもらおうと思います。
電卓のソースコードは下記の通りで、四則演算に対応しています。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
簡単な電卓プログラム
基本的な四則演算(+, -, *, /)をサポート
"""

def calculate(expression):
    """
    数式を評価して結果を返す
    """
    try:
        # 安全な評価のため、許可された文字のみをチェック
        allowed_chars = set('0123456789+-*/.() ')
        if not all(c in allowed_chars for c in expression):
            return "エラー: 無効な文字が含まれています"
        
        # 空の式をチェック
        if not expression.strip():
            return "エラー: 式を入力してください"
        
        # 計算を実行
        result = eval(expression)
        return result
    
    except ZeroDivisionError:
        return "エラー: ゼロで割ることはできません"
    except SyntaxError:
        return "エラー: 無効な式です"
    except Exception as e:
        return f"エラー: {str(e)}"

def main():
    """
    メイン関数 - 電卓のメインループ
    """
    print("=" * 50)
    print("          簡単な電卓プログラム")
    print("=" * 50)
    print("使用方法:")
    print("  - 基本演算: +, -, *, /")
    print("  - 括弧も使用可能: ()")
    print("  - 終了するには 'quit' または 'exit' を入力")
    print("=" * 50)
    
    while True:
        try:
            # ユーザー入力を取得
            expression = input("\n計算式を入力してください: ").strip()
            
            # 終了コマンドをチェック
            if expression.lower() in ['quit', 'exit', 'q']:
                print("電卓を終了します。")
                break
            
            # 計算を実行
            result = calculate(expression)
            print(f"結果: {result}")
            
        except KeyboardInterrupt:
            print("\n\n電卓を終了します。")
            break
        except EOFError:
            print("\n電卓を終了します。")
            break

if __name__ == "__main__":
    main()

このプログラムに対して下記の内容で修正をお願いしました。
過去の計算結果も見れるようにしたい
するとKiroはSteeringファイルの内容を理解し、ユーザーに修正案を返します。

Steering有りでの確認プロセス

Steeringドキュメントに沿って、追加機能4つを修正案として返してくれました。
今回は履歴が見れればよいので、1, 2, 4のみ実装してもらうようお願いします。

必要な機能のみ実装

要望通り修正案1, 2, 4のみ実装してくれたようなので、実際に確認してみます。

修正内容の確認

historyコマンドを打つことで、履歴を確認することができました。
また不要だったclearコマンドも実装されておらず、過度な修正も防ぐことができました。

まとめ

今回は、Agent Steeringを使用して、手戻りを防止する方法を紹介しました。
Steeringを用いて修正にワンクッションを入れることで、AIによる過剰な編集を防ぐことができます。

Steeringを使用することで、デフォルトの挙動にとらわれず、自分好みの動作にKiroを育てていくことができます。
開発スタイルは人それぞれです。
ぜひ皆さんも、自分好みのSteeringファイルを設定して、快適なAI開発ライフを送ってください!

QESではKiroについて積極的に情報発信していきますので是非ご覧ください!



もし「このサービスについて知りたい」「AWS環境の構築、移行」などのリクエストがございましたら、弊社お問合せフォームまでお気軽にご連絡ください。 複雑な内容に関するお問い合わせの場合には直接営業からご連絡を差し上げます。 また、よろしければ以下のリンクもご覧ください!
<QES関連ソリューション/ブログ>

<QESが参画しているAWSのセキュリティ推進コンソーシアムがホワイトペーパーを公開しました>

※Amazon Web Services、”Powered by Amazon Web Services”ロゴ、およびブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。

  • このエントリーをはてなブックマークに追加

お問い合わせ

Contact

ご質問やご相談、サービスに関する詳細など、何でもお気軽にご連絡ください。下記のお問い合わせフォームよりお気軽に送信ください。

お問い合わせ

資料ダウンロード

Download

当社のサービスに関する詳細情報を掲載した資料を、下記のページよりダウンロードいただけます。より深く理解していただける内容となっております。ぜひご活用ください。

資料ダウンロード