Install
openclaw skills install teambition-worklogClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
根据 Git 提交记录 + Teambition 任务数据,AI 推断并填写 Teambition 工时。当用户说「填工时」「登记工时」「填今天的工时」时使用本 skill。
openclaw skills install teambition-worklog用户说「填工时」「登记工时」「填今天的工时」「补工时」「修改工时」或类似意图时使用。
~/.workbuddy/.env:
TEAMBITION_SESSIONIDTEAMBITION_SESSIONID_SIG(可选)TB_ACCESS_TOKENORG_ID 或 TEAMBITION_ORG_IDUSER_ID 或 TEAMBITION_USER_ID获取方式:登录 teambition.com → F12 → Application → Cookies → 复制对应值
所有工时相关 API 返回的统一结构:
{
"ok": true,
"message": "操作成功",
"payload": [...]
}
工时记录在 payload 字段中,不是直接返回数组。批量任务查询(tasks-bulk)同理。
| 字段 | 说明 | 注意 |
|---|---|---|
_id | MongoDB ObjectId | API 交互用的唯一标识 |
uniqueId | 任务编号(整数) | 前端显示的 #2429 |
content | 任务标题 | 不是 name(name 始终为空) |
isDone | 是否完成 | boolean |
dueDate | 截止日期 | ISO 8601 格式 |
project | 所属项目 | 含 name 和 _id |
project.uniqueIdPrefix | 项目编号前缀 | 如 MATRIX、ECX |
accomplished | 实际完成时间 | ISO 8601 格式,仅已完成任务有值 |
从 ~/.workbuddy/.env 或环境变量读取 USER_ID(未配置则使用默认值)。
SKILL_DIR="/Users/ken/.workbuddy/skills/teambition-worklog"
# 输出结构化 JSON(推荐)
bash "$SKILL_DIR/scripts/analyze-git-commits.sh" --json /path/to/repo 2026-04-17
# 兼容文本输出
bash "$SKILL_DIR/scripts/analyze-git-commits.sh" /path/to/repo 2026-04-17
JSON 字段包括:commit_count、commits[]、directories[],可直接作为 AI 匹配输入。
SKILL_DIR="/Users/ken/.workbuddy/skills/teambition-worklog"
# 项目列表(分页)
bash "$SKILL_DIR/scripts/teambition-api.sh" projects [page_token] [page_size]
# 任务列表(分页)
bash "$SKILL_DIR/scripts/teambition-api.sh" tasks <project_id> [page_token] [page_size]
# 按任务编号搜索(支持逗号分隔多个)
bash "$SKILL_DIR/scripts/teambition-api.sh" search-tasks <project_id> <unique_id|id1,id2,...>
# 任务详情批量查询
bash "$SKILL_DIR/scripts/teambition-api.sh" tasks-bulk "task_id1,task_id2"
# 按项目 + 完成时间范围拉取已完成任务(自动分页遍历)
bash "$SKILL_DIR/scripts/teambition-api.sh" project-done-tasks <project_id> <start_date> <end_date> [--json] [--page-size <n>]
搜索任务建议:优先使用 search-tasks 按编号搜索,比遍历全量任务快得多。
project-done-tasks 使用场景:
accomplished 字段)id, uniqueId, content, accomplished, executor, creator, project, dueDate通过 /my/api/tasks/query 端点,使用 TQL 查询跨项目的任务快捷视图:
SKILL_DIR="/Users/ken/.workbuddy/skills/teambition-worklog"
# 我创建的任务(默认只返回未完成)
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created
# 我指派给他人的任务
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks assigned
# 我参与的任务
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks involved
# 选项
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created --all # 包含已完成
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created --json # 原始 JSON 输出
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created --json 20 # 指定每页数量
my-tasks 返回结构(不同于工时 API):
{
"code": 200,
"data": {
"totalSize": 215,
"nextPageToken": "...",
"result": [
{
"id": "task_id",
"content": "任务标题",
"uniqueId": 2433,
"isDone": false,
"projectId": "project_id",
"projectInfo": {"name": "矩阵", "uniqueIdPrefix": "MATRIX"},
"executorUserInfo": {"name": "执行人"},
"priority": 0,
"dueDate": "2026-05-11T10:00:00Z"
}
]
}
}
使用场景:快速定位用户相关的任务,获取 task_id 后可直接用于工时填写。
查看今日或近期有更新的任务,帮助跟踪进度:
SKILL_DIR="/Users/ken/.workbuddy/skills/teambition-worklog"
# 查看我创建的进行中任务(跨项目,默认只返回未完成)
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created --json
# 查看矩阵项目今日活跃任务(按 updated 字段过滤)
# 需要先拉取任务列表,再按日期筛选(见下方 Python 脚本)
# 查看矩阵项目所有任务(分页,支持 nextPageToken 翻页)
bash "$SKILL_DIR/scripts/teambition-api.sh" tasks <project_id> [page_token] [page_size]
Python 筛选今日活跃任务的示例脚本:
import json, sys
from datetime import datetime
data = json.load(sys.stdin)
tasks = data.get('result', []) # 注意:tasks API 返回结构是 {'result': [...]}, 不是 {'data':{'result':[...]}}
today = '2026-05-06' # 可改为具体日期如 '2026-05-01'
updated_today = [t for t in tasks if t.get('updated', '')[:10] == today]
recent = [t for t in tasks if t.get('updated', '')[:10] >= '2026-05-01']
for t in sorted(updated_today, key=lambda x: x.get('updated', ''), reverse=True):
uid = t.get('uniqueId', 'N/A')
content = t.get('content', '')[:60]
is_done = t.get('isDone', False)
due = t.get('dueDate', '')[:10] if t.get('dueDate') else '-'
exec_n = t.get('executor', {}).get('name', '-') if t.get('executor') else '-'
upd = t.get('updated', '')[11:16]
stage = t.get('stage', {}).get('name', '-') if t.get('stage') else '-'
status = '[完成]' if is_done else '[进行中]'
print(f'#{uid} {status} | {upd} | 截止:{due} | 执行:{exec_n} | 阶段:{stage}')
print(f' {content}')
注意:
tasks API 返回结构为 {"result": [...], "nextPageToken": "...", "totalSize": N},不是 {"data": {"result": [...]}}nextPageToken 作为第二个参数传入脚本updated 字段为 ISO 8601 格式(例:2026-05-06T14:34:00.000Z),取前 10 位即为日期常用项目 ID(见 MEMORY.md):
| 项目名 | Project ID |
|---|---|
| 矩阵 | 607e7dcda0d8c08864d129f6 |
| ECShopX4.0 | 619b81caccc9d1bf69e6bb0e |
| DigiOS-OMS | 60b71b5d92c96b6938f8636e |
| 标准产品-OMS SaaS | 607e786ff477e28a891d33f5 |
输入:
输出建议格式:
任务名 | 工时 | 依据
# 默认查询今天
bash "$SKILL_DIR/scripts/teambition-api.sh" list-worktime
# 指定日期/区间
bash "$SKILL_DIR/scripts/teambition-api.sh" list-worktime 2026-04-17 2026-04-17
通过返回 payload 中 _objectId(任务ID)+ date 判断是否重复写入。
# 新增
bash "$SKILL_DIR/scripts/teambition-api.sh" add-worktime <task_id> <hours> [date] [note]
# 查询单条工时
bash "$SKILL_DIR/scripts/teambition-api.sh" worktime-item <worktime_id>
# 修改(参数 '-' 表示沿用原值)
bash "$SKILL_DIR/scripts/teambition-api.sh" update-worktime <worktime_id> [hours|-] [date|-] [note|-]
# 删除
bash "$SKILL_DIR/scripts/teambition-api.sh" delete-worktime <worktime_id>
# 批量新增
bash "$SKILL_DIR/scripts/teambition-api.sh" batch-worktime worklog.json
# 查看今天的工时汇总(自动关联任务名和项目名)
bash "$SKILL_DIR/scripts/teambition-api.sh" worktime-summary
# 指定日期范围
bash "$SKILL_DIR/scripts/teambition-api.sh" worktime-summary 2026-04-01 2026-04-30
返回 JSON 包含 total_hours、record_count、records[](每条含 uid、project、content、hours、desc)。
| 功能 | 端点 |
|---|---|
| 项目列表(分页) | GET /api/v3/projects?_organizationId={orgId}&pageSize=&pageToken= |
| 任务列表(分页) | GET /api/v2/projects/{id}/tasks?...&pageSize=&pageToken= |
| 我的任务快捷列表 | POST /my/api/tasks/query(需 x-tenant-id 头) |
| 任务详情批量 | POST /api/tasks/bulk |
| 按日期查询工时 | POST /api/work-time/list/dates-users |
| 工时详情 | GET /api/work-time/{worktimeId} |
| 新增工时 | POST /api/work-time/batch |
| 修改工时 | PUT /api/work-time/{worktimeId} |
| 删除工时 | DELETE /api/work-time/{worktimeId} |
| 任务工时概览 | GET apps.teambition.com/work-time-server/variables/worktime |
| 按完成时间筛选任务 | GET /api/v2/projects/{id}/tasks?filter=...(本地遍历 + accomplished 过滤) |
export 导出变量,Python 子进程可以正确读取# 方法1:source .env 后运行
env = dict(os.environ)
# 方法2:显式 export
bash(脚本执行)git(提交记录)curl(Teambition API 调用,超时 30s)python3(JSON 处理)