关于 assiststudio-runner
assiststudio-runner 是面向 AssistStudio 用户和 MCP 客户端的 Windows 专用引擎,用于安排并执行自然语言大模型任务。它结合任务管理工具、Windows Task Scheduler 调度和可配置的结果投递。
主要功能
- 01通过 7 个 MCP 工具管理任务
- 02安排周期性和单次运行
- 03通过命令行无头执行任务
- 04支持多种大模型提供方
- 05通过 Outbox 渠道投递结果
- 06在 Windows Credential Manager 中存储凭据
适用场景
- 01安排工作日研究摘要
- 02立即运行任务进行测试
- 03查看执行状态和历史记录
MCP 相关
它以 stdio 方式运行 MCP 服务,提供创建、更新、删除、列出和执行任务,以及查询状态与历史记录的工具。任务还可启动已配置的 MCP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
AssistStudio Runner
一款仅适用于 Windows 的无头大模型任务自动化引擎,可按计划执行自然语言任务,并通过配置的渠道交付结果。它基于 Model Context Protocol (MCP) 构建为 MCP 服务,并使用官方 MCP C# SDK。
功能
- 双模式运行 — MCP 服务(
serve)用于任务管理,无头命令行(exec)用于定时执行 - 7 个 MCP 工具 —
create_task、update_task、delete_task、list_tasks、run_task、get_task_history、get_execution_status - Windows 任务计划程序集成 — 自动将 cron 表达式映射为
schtasks条目 - 共享 AgentLoop — 大模型执行由 Ai.Execution 提供支持(与 SubAgentExecutor 使用相同的循环)
- 支持多种大模型提供商 — 通过 Ai.Providers 支持 Claude、OpenAI、Gemini、Ollama、Groq
- MCP 服务编排 — 任务可启动任意 MCP 服务(Outbox、RAG、Filesystem、自定义服务)
- 灵活的工具控制 —
AllowedTools为 null 时允许使用所有工具;指定列表时可进行精细控制;空列表表示仅允许使用安全工具 - 凭据安全存储 — API 密钥存储在 Windows Credential Manager(DPAPI)中,并与 AssistStudio 共用
- 执行日志 — 数据库摘要 + 包含完整对话历史的详细 JSON 日志
- 一次性计划 — 使用 ISO 8601 日期时间的
schedule_once,适用于单次执行任务(“5 分钟后”“明天上午 9 点”) - 结果交付 — 通过 Outbox 渠道发送结果(Slack、Telegram、Email、KakaoTalk、Discord)
安装
dotnet tool(推荐)
dotnet tool install -g FieldCure.AssistStudio.Runner
安装后,即可全局使用 assiststudio-runner 命令。
由于计划任务通过 Windows 任务计划程序实现,且凭据存储在 Windows Credential Manager 中,因此发布的程序包仅适用于 Windows。
从源代码安装
git clone https://github.com/fieldcure/fieldcure-assiststudio-runner.git
cd fieldcure-assiststudio-runner
dotnet build
要求
- .NET 8.0 Runtime 或更高版本
- Windows(任务计划程序和 Credential Manager 的运行要求)
配置
自动配置(推荐)
以 serve 模式启动且不存在 runner.json 时,Runner 会自动扫描 Windows Credential Manager 中已知提供商的 API 密钥,并生成配置文件。如果你使用 AssistStudio,API 密钥已存储,无需手动设置。
手动设置
# Create runner.json config template
assiststudio-runner config init
# Set API key for a provider model
assiststudio-runner config set-credential "Claude" sk-ant-api03-...
# Verify (displays masked value)
assiststudio-runner config get-credential "Claude"
配置文件将创建在 %LOCALAPPDATA%/FieldCure/AssistStudio/Runner/runner.json:
{
"defaultModelName": "Claude",
"models": {
"Claude": {
"providerType": "Claude",
"modelId": "claude-sonnet-4-20250514"
}
},
"fallbackChannel": "runner-alerts",
"logRetentionDays": 30
}
Claude Desktop
添加到 claude_desktop_config.json:
{
"mcpServers": {
"runner": {
"command": "assiststudio-runner",
"args": ["serve"]
}
}
}
VS Code(Copilot)
添加到 .vscode/mcp.json:
{
"servers": {
"runner": {
"command": "assiststudio-runner",
"args": ["serve"]
}
}
}
从源代码安装(不使用 dotnet tool)
{
"mcpServers": {
"runner": {
"command": "dotnet",
"args": [
"run",
"--project", "C:\\path\\to\\fieldcure-assiststudio-runner\\src\\FieldCure.AssistStudio.Runner",
"--", "serve"
]
}
}
}
工具
| 工具 | 描述 | 确认 |
|---|---|---|
create_task | 创建包含提示词、计划和 MCP 服务配置的任务 | 必需 |
update_task | 修改任务字段 — 部分更新,仅更新已更改的字段 | 必需 |
delete_task | 删除任务、其执行记录和日志文件 | 必需 |
list_tasks | 按条件筛选任务,并显示最近一次执行状态 | — |
run_task | 开始执行(默认异步,可选择等待 60 秒) | 必需 |
get_task_history | 按状态筛选并查询执行历史 | — |
get_execution_status | 查看执行的实时状态 | — |
用法
对话示例
User: "Summarize competitor news every morning at 9 AM and send it to Slack"
LLM → create_task (schedule: "0 9 * * 1-5", mcp_servers: [outbox, rag])
User: "Run a test"
LLM → run_task (wait: true) → reports result
User: "Exclude weekends"
LLM → update_task (schedule: "0 9 * * 1-5")
User: "What were yesterday's results?"
LLM → get_task_history (limit: 1)
执行模式
| 模式 | 命令 | 用途 |
|---|---|---|
| Serve | assiststudio-runner serve | 用于任务管理的 MCP 服务(stdio) |
| Exec | assiststudio-runner exec <task-id> | 无头执行(由 schtasks 调用) |
| Config | assiststudio-runner config init | 创建配置模板 |
assiststudio-runner config set-credential <key> <value> | 存储 API 密钥或环境变量 | |
assiststudio-runner config get-credential <key> | 获取凭据(已遮蔽) |
退出代码(exec 模式)
| 代码 | 含义 |
|---|---|
0 | 成功 |
1 | 失败 |
2 | 超时 |
3 | 未找到任务 |
4 | 已在运行 |
调度
Cron 表达式会自动映射为 Windows 任务计划程序条目:
| 调度 | 参数 | schtasks |
|---|---|---|
| 在指定时间执行一次 | schedule_once: "2026-04-07T15:30:00+09:00" | /SC ONCE /SD 2026/04/07 /ST 15:30 |
| 每 30 分钟 | schedule: "*/30 * * * *" | /SC MINUTE /MO 30 |
| 每 2 小时 | schedule: "0 */2 * * *" | /SC HOURLY /MO 2 |
| 每天上午 9:00 | schedule: "0 9 * * *" | /SC DAILY /ST 09:00 |
| 工作日上午 9:00 | schedule: "0 9 * * 1-5" | /SC WEEKLY /D MON,TUE,WED,THU,FRI /ST 09:00 |
| 每月 1 日 | schedule: "0 9 1 * *" | /SC MONTHLY /D 1 /ST 09:00 |
计划任务使用 schtasks /IT 创建,因此会在交互式用户上下文中运行,并要求用户在触发时已登录。
schtasks 命令行使用 dnx(NuGet 的 npx 等效工具,.NET 10+)来获取并运行工作程序 — dnx FieldCure.AssistStudio.Runner@<major>.* --yes exec <id>。工作程序调用的无状态 MCP 服务(Essentials、Outbox)也以相同方式启动,并固定在当前主版本范围。如需不依赖 NuGet 的工作流,请设置 RunnerConfig.ToolPath,以指定具体的可执行文件。
数据存储
| 数据 | 位置 |
|---|---|
| 配置 | %LOCALAPPDATA%/FieldCure/AssistStudio/Runner/runner.json |
| 任务数据库 | %LOCALAPPDATA%/FieldCure/AssistStudio/Runner/runner.db(SQLite,WAL) |
| 执行日志 | %LOCALAPPDATA%/FieldCure/AssistStudio/Runner/logs/{id}.json |
| API 密钥 | Windows Credential Manager(FieldCure.AssistStudio) |
项目结构
src/FieldCure.AssistStudio.Runner/
├── Program.cs # Dual-mode entry point (serve/exec/config)
├── Models/ # RunnerTask, TaskExecution, RunnerConfig, ExecutionLog
├── Storage/TaskStore.cs # SQLite storage with WAL mode
├── Credentials/ # ICredentialService + Windows PasswordVault
├── Scheduling/ # CronToSchtasks parser, SchedulerService (schtasks)
├── Execution/ # TaskExecutor (AgentLoop-based), McpServerPool
├── Tools/ # 7 MCP tools for serve mode
└── Configuration/ConfigRunner.cs # CLI config subcommands
开发
# Build
dotnet build
# Test
dotnet test
# Pack
dotnet pack -c Release
专为 AssistStudio 打造
Runner 专为 AssistStudio 生态系统打造。任务通常通过 AssistStudio 中的自然语言对话创建,由 AssistStudio 自动处理工作流设计、MCP 服务选择和工具权限。
虽然 Runner 可以与 Claude Desktop 或 VS Code 搭配独立使用(通过 serve 模式),但你需要手动构造任务参数(提示词、MCP 服务、允许使用的工具)。如需完整体验,请使用 AssistStudio。
另请参阅
属于 AssistStudio 生态系统 的一部分。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。