原子任务声明服务

一个为Claude Code团队提供原子任务声明功能的MCP服务器,使用文件锁确保任务声明的原子性。

  • by Osso
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 Osso/safe-task-claim

使用说明

安全任务声明

MCP服务器,为Claude Code团队提供原子任务声明,使用 flock.

问题

克劳德代码 TaskUpdate 该工具没有原子声明语义。当多个实例共享一个任务列表时,一个实例可以覆盖另一个实例的声明。手动解决方法(TaskUpdate,然后TaskGet进行验证)很有效。

解决方案

一个 safe_claim 原子性工具:

  1. 获得独家 flock 上 ~/.claude/tasks/{team}/.lock
  2. 读取任务JSON文件
  3. 如果已声明、正在进行或已完成,则拒绝
  4. 集合 owner 和 status: "in_progress"
  5. 写入文件并释放锁

参数

名称 类型 必填 描述
task_id string yes 要声明的任务ID
owner string yes 声明任务的代理名称
team string no 团队名称(默认为中的第一个目录 ~/.claude/tasks/)

设置

添加 ~/.claude.json:

{
  "mcpServers": {
    "safe-task-claim": {
      "type": "stdio",
      "command": "cargo",
      "args": ["run", "--quiet", "--manifest-path", "/path/to/safe-task-claim/Cargo.toml"],
      "instructions": "Safe task claiming with file locking. Use safe_claim before starting work on any task."
    }
  }
}

用法

safe_claim(task_id: "1", owner: "agent-alpha", team: "my-team")
// => "Claimed task 1: Write unit tests"

safe_claim(task_id: "1", owner: "agent-beta", team: "my-team")
// => "Error: already claimed by agent-alpha"