面向消费医疗研发任务演练的终端 AI Coding Agent
面向消费医疗研发任务演练场景,设计并实现本地终端 AI Coding Agent,支持在工作区内连续完成代码检索、逻辑理解、修改方案生成与结果汇总。
MedCode 是一个轻量、可控、易于扩展的终端编码助手,深度借鉴 Claude Code 的核心设计思路(多步工具循环、权限审批、会话持久化、Skills 与 MCP 扩展),用更精简的实现复刻了「模型 → 工具 → 模型」的完整执行闭环。项目以「保持架构清晰、可读、可扩展」为目标,不追求臃肿的平台级功能。
围绕「检索 → 理解 → 生成 → 汇总」的研发任务演练流程:
- 代码检索:内置
list_files/grep_files/read_file等工具,配合/ls、/grep、/read本地命令,在工作区内快速定位代码与业务逻辑。 - 逻辑理解:分层指令记忆(
MED.md/CLAUDE.md/.med-code/rules/*.md),结合 provider 用量驱动的上下文记账,让模型在长会话中持续理解项目与领域逻辑。 - 修改方案生成:
model → tool → model多步循环,通过write_file/edit_file/patch_file/modify_file生成并落地修改,改动前以 unified diff 形式 review 审批。 - 结果汇总:会话按工作目录持久化(JSONL),支持
/compact、/collapse、/snip三种上下文压缩,超大工具结果自动落盘并以预览形式回填,保证长任务结果清晰可回溯。
- 多步工具执行循环:单回合内连续执行
model → tool → model,无需离开终端。 - 全屏终端界面(TUI):输入历史、transcript 滚动、斜杠命令菜单、审批选择与反馈输入。
- 会话持久化:每回合自动保存,支持
/resume、/rename、/new、/fork、/compact,30 天自动过期清理。 - 权限与安全:文件修改 review-before-write、路径与命令权限检查、拒绝后向模型反馈。
- 分层指令记忆:
MED.md/CLAUDE.md三层加载、@include引用、内容去重、容量限制。 - 本地 Skills:通过
SKILL.md发现并加载可复用工作流。 - MCP 动态挂载:stdio 与 streamable-http 协议,
Content-Length/newline-json自动协商,工具 / 资源 / 提示统一挂载。 - 上下文管理:provider 用量记账、auto-compact、context collapse(投影层摘要)、snip compact(确定性中段裁剪)。
- 大工具结果落盘:超大输出保存到本地数据目录,上下文只保留预览与文件路径。
- Anthropic 风格 API 兼容:支持自定义
ANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN/ANTHROPIC_API_KEY。
依赖 Node.js 环境(建议 LTS 版本)。
cd med-code
npm install
npm run install-local # 交互式安装,生成全局 `medcode` 启动器安装过程中会引导配置:
- 模型名称(
ANTHROPIC_MODEL) ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN
配置保存在 ~/.med-code/settings.json 与 ~/.med-code/mcp.json,可用 MED_CODE_HOME 覆盖配置目录、MED_CODE_BIN_DIR 覆盖启动器目录。
启动:
medcode # 交互式终端
npm run dev # 开发模式直接运行
MED_CODE_MODEL_MODE=mock npm run dev # 离线演示模式管理命令(终端直接执行):
medcode mcp list | add | login | logout | remove
medcode skills list | add | remove交互式斜杠命令:/help、/tools、/status、/model [name]、/skills、/mcp、/config-paths、/permissions、/init、/memory、/resume [id]、/rename、/new、/fork、/compact、/collapse、/snip、/exit 等。
CLI 参数:medcode --resume [id]、medcode --fork <id>。
完整用法见 USAGE.md。
src/
├── index.ts CLI 入口
├── agent-loop.ts 多步模型/工具循环
├── tty-app.ts 全屏终端应用
├── tool.ts 工具注册与执行
├── skills.ts 本地 Skill 发现与加载
├── mcp.ts MCP 客户端与动态工具挂载
├── session.ts 会话 JSONL、resume/fork/rename、过期清理
├── permissions.ts 权限管理与审批
├── memory.ts 分层指令记忆加载
├── config.ts 运行时配置
├── install.ts 交互式安装器
├── manage-cli.ts medcode mcp / skills 管理命令
├── compact/ 自动压缩、上下文折叠、snip compact
├── tools/ 内置工具
├── tui/ 终端 UI 模块
└── utils/ 上下文记账、token 估算、大结果落盘
- USAGE.md — 使用手册(安装、命令、配置、Skills/MCP)
- ARCHITECTURE.md — 架构说明
- ROADMAP.md — 路线图
- CLAUDE_CODE_PATTERNS.md — 设计模式解析
- CONTRIBUTING.md — 贡献规范
npm run check # 类型检查(tsc --noEmit)
npm run lint # ESLint
npm test # 测试