Skip to content

feat(v2): agent tracking — corterm-agent wrapper 二进制 #18

Description

@monster-echo

背景

Agent Tracking Phase 3。Phase 2 (#17) 已实现 Worker 端接收 + shim 注入。本 issue 实现 shim 实际调用的 `corterm-agent` 二进制,它负责注入 hook 配置 + spawn 真实 agent 二进制 + 桥接 PTY。

范围

新项目 `src/Worker/CortexTerminal.AgentRunner/`:

  • .NET 10 console,self-contained AOT 发布为 `corterm-agent`(Windows 是 `corterm-agent.exe`)
  • 依赖 `CortexTerminal.Contracts`

入口(`Program.cs`):

  • args: `corterm-agent [agent-args...]`
  • 流程:
    1. `CORTERM_AGENT=0` → 用 `CORTERM_ORIGINAL_PATH` 找真实二进制,直接 `exec`,跳过所有注入
    2. 读 `CORTERM_SESSION_ID` / `CORTERM_AGENT_HOOK_URL`,缺失就报错退出(说明不在 Corterm session 里)
    3. 用 `CORTERM_ORIGINAL_PATH` 跳过 shim 目录,`which claude` 找真实二进制路径
    4. 加载 `IAgentAdapter` 实现(按 kind)
    5. 生成临时 hook 配置到 `~/.corterm/agent-hooks//`
    6. 设置 adapter 返回的环境变量(如 `CLAUDE_SETTINGS_FILE`)
    7. spawn 子进程,PTY 桥接 stdin/stdout/stderr
    8. 子进程退出时清理临时配置,透传 exit code

Adapter 注册

安装脚本

  • `scripts/install.sh` / `install.ps1` 一并装 `corterm-agent` 到 `/`
  • Worker 启动时确保 shim 文件指向正确路径

验收

  • `corterm-agent claude --version` 等价 `claude --version`(passthrough 模式)
  • `CORTERM_AGENT=0 corterm-agent claude` 不注入任何配置
  • 不在 Corterm 环境里跑 `corterm-agent claude` 给出清晰报错
  • 在 Corterm session 里跑,能看到 hook 配置被生成到 `~/.corterm/agent-hooks//`
  • 退出时配置文件被清理

依赖

不做的事

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions