Skip to content

claude-terminal の長文 system prompt / schema を起動 argv に載せない #756

@nrslib

Description

@nrslib

概要

provider: claude-terminal で、長い system prompt や structured output schema を Claude Code 起動時の argv に載せないようにしたい。

現状は tmux new-session ... claude --system-prompt <長文> --json-schema <JSON> の形で起動しており、facet や workflow 指示、schema が大きい場合に OS / tmux / CLI の引数長制限へ当たる可能性がある。

背景

claude-terminal では step prompt 本体は tmux load-buffer の stdin 経由で貼り付けているため、通常の argv 長制限には乗らない。

一方で、Claude Code 起動時の systemPromptoutputSchemasrc/infra/claude-terminal/command.ts で argv に積まれている。

args.push("--system-prompt", options.systemPrompt.trim());
args.push("--json-schema", JSON.stringify(options.outputSchema));

このため、長い system prompt や JSON schema を使う workflow では、claude-terminal だけが起動コマンド長の制限で失敗し得る。

仕様方針

1. Claude Code 起動 argv は短く保つ

claude-terminaltmux new-session では、model、permission、mcp config、session id など、短い起動制御オプションだけを argv に載せる。

長文になり得る以下は argv に載せない。

  • systemPrompt
  • outputSchema / JSON schema
  • structured output 用の長い追加指示

2. 長文 instruction は paste prompt 側へ寄せる

systemPrompt と structured output 指示は、terminal 起動後に送信する step prompt 側へ合成する。

例:

<system prompt / role instruction>

---

<structured output instruction if needed>

---

<step prompt>

tmux load-buffer は stdin 経由で本文を渡すため、argv 長制限の影響を受けにくい。

3. structured output の検証は TAKT 側で維持する

--json-schema を argv で渡さない場合でも、TAKT 側の outputSchema は保持し、応答後の抽出・検証は現在と同じように行う。

つまり、Claude Code への schema 直指定を必須にせず、prompt 上の指示と TAKT 側 validation で structured output 契約を守る。

4. 将来 file 指定が使える場合は別途検討する

Claude Code CLI が system prompt / schema の file 指定を安定して提供している場合は、将来的に file 経由へ切り替えてもよい。

ただし初回修正では、provider の動作を安定させるため、長文を prompt paste 側へ寄せる方針を優先する。

非目的

  • claude headless provider の挙動を変更すること
  • Claude Code CLI の private / undocumented option に依存すること
  • structured output validation を弱めること
  • prompt 本文そのもののサイズ制限を解決すること

受け入れ条件

  • claude-terminal の起動コマンドに長文 --system-prompt を渡さない
  • claude-terminal の起動コマンドに長文 --json-schema を渡さない
  • system prompt は step prompt と一緒に Claude terminal へ送信される
  • output schema がある場合、structured output 用の指示は prompt 側に含まれる
  • output schema の抽出・検証は TAKT 側で継続される
  • 長い system prompt / schema を持つ workflow でも、tmux new-session の argv 長制限に当たりにくくなる
  • claude-terminal の command builder / client / response normalizer のテストが更新される

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions