AI代理编排系统

MissionD是一个AI代理编排系统,用于将请求转化为经过审查的Lisp工件、批准的计划、BoardTasks和工作执行,适用于多代理协作和任务自动化场景。

  • by RuoqiJin
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 rickyjim626/missiond

使用说明

missiond

Lisp为Claude Code、Codex、Gemini和MissionD工作人员管理本地编排 --规范请求,审查意图和计划,将BoardTasks分派到受管理的PTY插槽,并根据持久证据完成工作。

什么是missiond?

MissionD是一个守护进程和工具界面,它将请求转化为经过审查的Lisp工件、批准的计划、BoardTasks和worker执行。V3控制平面权限为 .missiond/v3/missiond-blueprint.lisp;生成JSON格式 .missiond/v3/runtime/compiled/ 是机器投影。生产运行时路径仅使用已编译的JSON;原始V3 Lisp源代码回退不是运行时逃逸。Postgres是运行时存储、事件日志和运行时工件目录;Board和PTY屏幕是该州的投影。

特性

核心

  • PTY会议 --伪终端中的Spawn Claude代码,具有完整的终端仿真功能(通过Alacritty终端)
  • 语义分析 --实时状态检测(空闲/思考/响应/确认/错误)、工具输出提取、状态栏解析、确认对话框解析
  • MCP集成 --生成的工具组通过模型上下文协议和守护进程IPC桥公开
  • 请求/计划门 — mission_request 编写请求本地Lisp工件,并在以人工模式执行之前需要明确的意图/计划批准
  • 董事会任务分派 --批准的计划路线 mission_task_delegate、董事会索赔、自动驾驶仪和受管理的PTY插槽
  • V3编译合同 — missiond-lispc 发出源哈希检查的运行时配置、语义IR、契约ABI、项目宇宙、工作流契约和基因组投影
  • 权限系统 --基于角色的工具权限(允许/确认/拒绝)与glob模式匹配
  • 交叉平台的 --macOS、Linux、Windows;Unix域套接字或TCP环回IPC

代理生命周期

  • 自动重启 --当上下文窗口降至10%以下时,自动重新启动PTY插槽
  • 卡住检测 --监控JSONL活动以检测和恢复卡住的代理
  • 自主工作流 --代理可以使用安全护栏自主工作,并向协调器报告

知识与记忆

  • 知识库(KB) --Postgres支持已审查的内存和FTS/read模型预测
  • 运行时工件目录 --冷 .missiond/v3/runtime/** 文件作为诊断缓存保留,并在中建立索引 runtime_artifacts 用于证据视图和保留治理
  • 对话记录 --摄取提供者本地登录MissionD的Postgres读取模型和事件流
  • 内存提取 --从代理对话中提取见解的实时和深度分析管道
  • KB注入 --通过MCP服务器指令和UserPromptSubmit挂钩自动将相关知识注入代理上下文

监控和仪表板

  • Websocket API --实时PTY连接、任务事件和会话监控
  • 板UI --Next.js仪表板,带有对话查看器、插槽状态和任务管理
  • CC任务监视器 --通过查看Claude Code的JSONL会话文件进行跨会话任务监控
  • PTY屏幕截图 --将终端状态渲染为PNG图像以进行可视化调试

基础设施工具

  • 任务委员会 --带有注释、隐藏任务和跳过状态的任务/看板
  • 问题队列 --客服可以发布问题供人工审核,而不是屏蔽
  • 老虎机历史 --跟踪每个插槽的任务分配历史记录
  • AI路由器 --通过可配置的模型后端路由LLM请求(用于KB分析)
  • 可达性检查 --探测配置的服务器运行状况终结点
  • 操作系统诊断 --系统资源监控(CPU、内存、磁盘)

建筑

┌─────────────────┐     MCP      ┌──────────────┐
│  Claude Code    │◄────────────►│  mission-mcp │
│  (Orchestrator) │              └──────┬───────┘
└─────────────────┘                     │ IPC (JSON-RPC)
                                        ▼
                               ┌──────────────────┐
                               │    missiond       │
                               │    (Daemon)       │
                               ├──────────────────┤
                               │ • Request/Plan    │
                               │ • Board/EventBus  │
                               │ • PTY Manager     │
                               │ • Permission Mgr  │
                               │ • Postgres Store  │
                               │ • Knowledge Base  │
                               │ • Memory Pipeline │
                               │ • WebSocket API   │
                               │ • CC Tasks Watcher│
                               └────────┬─────────┘
                                        │ PTY
              ┌─────────────────────────┼─────────────────────────┐
              ▼                         ▼                         ▼
        ┌───────────┐            ┌───────────┐            ┌───────────┐
        │  slot-1   │            │  slot-2   │            │  slot-N   │
        │  Claude   │            │  Claude   │            │  Claude   │
        │  (coder)  │            │ (research)│            │ (memory)  │
        └───────────┘            └───────────┘            └───────────┘

安装

来自货物(生锈)

cargo install missiond-mcp --bin mission-mcp
cargo install missiond-daemon --bin missiond
cargo install missiond-attach --bin missiond-attach

来自npm(Node.js)

npm install @missiond/core

预构建的二进制文件用于:

  • macOS(ARM64,x64)
  • Linux(x64 glibc,x64 musl)
  • Windows(x64)

快速开始

1.配置MCP

添加 ~/.claude/settings.json:

{
  "mcpServers": {
    "mission": {
      "command": "mission-mcp",
      "args": [],
      "env": { "MISSION_LOG_LEVEL": "warn" }
    }
  }
}

2.配置插槽

运行时插槽策略预计从 .missiond/v3/missiond-blueprint.lisp 工作站配置。遗产 ~/.missiond/slots.yaml 为了兼容性,可能仍然存在,但新的可调度工作者应该在V3中表示。

slots:
  - id: coder-1
    role: coder
    description: "Coding specialist"
    cwd: /path/to/projects

  - id: researcher-1
    role: researcher
    description: "Research and documentation"
    cwd: /path/to/docs

3.使用克劳德代码

User: "Spawn an agent to refactor the auth module"

Claude: I'll spawn a coding agent for that task.
[Uses mission_pty_spawn tool]
[Uses mission_pty_send with the refactoring instructions]

MCP工具

任务操作

工具 说明
mission_submit 向代理提交异步任务(具有可选的slotId目标)
mission_task 批量查询提交任务状态
mission_ask 同步专家咨询
mission_status 查询任务/代理状态
mission_cancel 取消正在运行的任务
mission_spawn 生成一个新的代理插槽
mission_kill 杀死代理插槽
mission_restart 重新启动代理插槽
mission_agents 列出所有代理及其状态
mission_slots 获取插槽配置
mission_inbox 检查收件箱中的邮件

PTY控制

工具 说明
mission_pty_spawn 开始PTY会话
mission_pty_send 发送消息,等待响应
mission_pty_screen 获取当前终端屏幕
mission_pty_screenshot 将终端渲染为PNG图像
mission_pty_confirm 处理工具确认对话框
mission_pty_interrupt 发送Ctrl+C
mission_pty_kill 关闭PTY会话
mission_pty_status 获取会话状态和元数据
mission_pty_history 获取会话消息历史记录
mission_pty_logs 获取PTY日志文件内容

知识库

工具 说明
mission_kb_remember 存储知识条目
mission_kb_forget 删除知识条目
mission_kb_search 跨KB的全文搜索
mission_kb_get 按ID获取条目
mission_kb_list 列出具有筛选功能的条目
mission_kb_import 批量进口条目
mission_kb_discover 从基础设施中发现知识
mission_kb_gc 垃圾回收陈旧条目
mission_kb_analyze AI驱动的知识库分析(通过可配置的LLM后端)

董事会和任务

工具 说明
mission_board_list 列出板任务
mission_board_create 创建董事会任务
mission_board_update 更新板任务
mission_board_get 获取任务详细信息
mission_board_delete 删除板任务
mission_board_toggle 切换任务完成
mission_board_note_add 向任务添加注释
mission_board_summary 获取董事会摘要

监控

工具 说明
mission_cc_sessions 列出所有Claude Code会话
mission_cc_tasks 获取会话任务
mission_cc_overview 全局任务统计
mission_cc_in_progress 所有正在进行的任务
mission_cc_trigger_swarm 触发群体协调
mission_slot_history 每个插槽的任务分配历史记录

对话与记忆

工具 说明
mission_conversation_list 列出录制的对话
mission_conversation_get 获取对话消息
mission_conversation_search 搜索对话内容
mission_memory_pending 检查挂起的内存队列
mission_memory_pause 暂停内存提取(带自动恢复TTL)
mission_memory_done 标记内存处理完成
mission_token_stats 代币消费统计

权限

工具 说明
mission_permission_get 获取当前权限策略
mission_permission_set_role 设置插槽角色权限
mission_permission_set_slot 按插槽设置覆盖
mission_permission_add_auto_allow 添加自动允许规则
mission_permission_reload 重新加载权限配置

基础设施

工具 说明
mission_infra_list 列出已配置的基础架构
mission_infra_get 获取基础设施详细信息
mission_health 守护进程健康检查
mission_reachability 探测服务器运行状况端点
mission_os_diagnose 系统资源诊断
mission_skill_list 列出可用技能
mission_skill_search 按关键字搜索技能
mission_context_build 从技能构建情境

问题队列

工具 说明
mission_question_create 特工向人类提问
mission_question_list 列出未决问题
mission_question_get 获取问题详细信息
mission_question_answer 人类回答问题
mission_question_dismiss 驳回一个问题

AI路由器

工具 说明
mission_router_chat 通过配置的LLM后端路由聊天完成

贾维斯(测井)

工具 说明
mission_jarvis_logs 查询日志中心条目
mission_jarvis_trace 按ID跟踪请求

语义终端解析

该守护进程包括对Claude Code的TUI进行复杂的终端解析:

  • 状态机 --通过反抖动跟踪空闲、思考、响应、工具运行、确认、错误、SlashMenu状态
  • 确认对话框解析 --从权限提示中提取工具名称、参数、文件路径
  • 状态栏解析 --从底部行读取微调器状态和状态文本
  • 工具输出提取 --解析两个盒子(───)以及内联工具输出
  • 标题解析 --监控终端标题更改以获取会话信息
pub enum SessionEvent {
    StateChange { new_state, prev_state },
    ConfirmRequired { prompt, info },
    StatusUpdate(ClaudeCodeStatus),
    ToolOutput(ClaudeCodeToolOutput),
    TitleChange(ClaudeCodeTitle),
    TextComplete(String),
}

Websocket API

PTY附件

ws://localhost:9120/pty/<slot-id>

连接以实时观看PTY会话或与之互动。接收终端单元数据以进行渲染。

任务事件

ws://localhost:9120/tasks

订阅任务生命周期事件:

  • cc_tasks_changed --任务已更新
  • cc_task_started / cc_task_completed
  • cc_session_active / cc_session_inactive

Node.js客户端

import { MissionControl } from '@missiond/core';

const mission = new MissionControl();
await mission.connect();  // Auto-starts daemon

// Spawn PTY session
const pty = await mission.pty.spawn('slot-1', 'claude');
pty.on('state', (state) => console.log('State:', state));
pty.on('confirm', (info) => console.log('Confirm:', info));

// Send message and wait for response
const response = await pty.send('Explain this codebase');
console.log(response);

await pty.kill();
mission.close();

配置

环境变量

变量 默认值 描述
MISSIOND_HOME ~/.missiond 配置目录
MISSION_PG_URL 必需 PostgreSQL运行时数据库URL
MISSION_SLOTS_CONFIG $MISSIOND_HOME/slots.yaml 插槽定义
MISSION_IPC_ENDPOINT Unix套接字/TCP(Windows) IPC端点
MISSION_WS_PORT 9120 WebSocket端口
MISSION_LOG_LEVEL warn 日志级别

跨平台IPC

  • Unix (macOS/Linux):Unix域套接字(~/.missiond/missiond.sock)
  • 视窗:TCP环回(127.0.0.1:port)

权限

在中配置工具权限 ~/.missiond/permissions.yaml:

roles:
  coder:
    allow:
      - "Bash(*)"
      - "Read(*)"
      - "Write(*)"
    confirm:
      - "Edit(*)"
    deny:
      - "Bash(rm -rf*)"

  researcher:
    allow:
      - "Read(*)"
      - "WebSearch(*)"
    deny:
      - "Bash(*)"
      - "Write(*)"

AI路由器(可选)

使用 mission_kb_analyze 和 mission_router_chat,在中配置LLM后端 ~/.missiond/credentials.json:

{
  "auth_url": "https://your-llm-api-endpoint.com",
  "api_key": "your-api-key"
}

秘密决议(可选)

插槽环境变量支持 ${secret:path} 在生成时通过可配置命令解析机密的语法。

板条箱

板条箱 描述
missiond-core 核心库:PTY管理、语义终端解析、任务队列、知识库、IPC
missiond-mcp MCP服务器二进制文件(mission-mcp)——工具定义和JSON-RPC协议
missiond-daemon 守护进程二进制文件(missiond)--所有子系统的主流程
missiond-runner 用于插槽进程管理的Claude CLI包装器
missiond-attach PTY连接CLI(missiond-attach)--连接到正在运行的会话
semantic-terminal-napi 用于语义终端解析的Node.js N-API绑定

包(npm)

包装 描述
@missiond/core 带自动守护进程管理的Node.js客户端库
@missiond/board Next.js用于监控和管理的仪表板
@missiond/semantic-terminal Node.js语义终端解析器

发展

# Build all crates
cargo build

# Run daemon
cargo run --bin missiond

# Run MCP server
cargo run --bin mission-mcp

# Build Node.js packages
cd packages/node-client && pnpm build
cd packages/board && pnpm build

许可证

MIT许可证——见 许可证 了解详情。