Примеры
Эти сценарии показывают, что происходит, когда вы просите ассистента поработать с TalkBar: какой инструмент он вызывает, с какими аргументами и что получает в ответ. Идентификаторы, время и текст вымышлены, а длинные ответы сокращены, но каждый запрос и ответ имеет ту же структуру, что и в настоящем TalkBar.
Спросить о сессиях прошлой недели
Подготовка: включите MCP и подключите Claude Desktop, как описано в разделе Настройка MCP. Чтение включено по умолчанию, так что больше ничего не нужно.
Затем спросите Claude: «О чём я говорил на сессиях TalkBar на прошлой неделе?»
Ассистент получает список сессий, начавшихся на той неделе, с помощью talkbar_read. Время указывается в миллисекундах с 1970 года (UTC); граница startedBeforeMs не включается.
{
"tool": "sessions.list",
"args": { "startedAfterMs": 1792368000000, "startedBeforeMs": 1792972800000, "limit": 20 }
}
{
"items": [
{
"sessionId": "0b7e4d1a-93c2-4f5e-8a61-2f9d3c7b5e08",
"title": "Weekly sync",
"status": "complete",
"startedAtMs": 1792747800000,
"endedAtMs": 1792749940000,
"projectId": "project-p8d3k2m1q9w7e5r4t6y0u2i1",
"seriesId": null,
"participantCount": 4,
"pinned": false,
"source": "live",
"private": false
},
{
"sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10",
"title": "Pricing review with Acme",
"status": "complete",
"startedAtMs": 1792594800000,
"endedAtMs": 1792597632000,
"projectId": "project-p8d3k2m1q9w7e5r4t6y0u2i1",
"seriesId": null,
"participantCount": 3,
"pinned": true,
"source": "live",
"private": false
}
],
"nextCursor": null,
"hasMore": false,
"totalCount": 2
}
Самые новые сессии идут первыми. Чтобы прочитать итоги, ассистент объединяет в один вызов по одному sessions.get на сессию:
{
"calls": [
{ "tool": "sessions.get", "args": { "sessionId": "0b7e4d1a-93c2-4f5e-8a61-2f9d3c7b5e08" } },
{ "tool": "sessions.get", "args": { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10" } }
]
}
Ответ имеет вид {"results": [...]}, по одной записи на сессию, и в каждой — полные итоги, их разделы, задачи и решения. После этого Claude пишет вам краткий обзор.
Найти сессию и прочитать транскрипт по частям
Спросите: «Найди мою встречу с Acme о ценах и покажи, что Дана говорила о скидке».
Сначала ассистент выполняет поиск, чтобы получить идентификатор сессии:
{ "query": "pricing review Acme", "kinds": ["session"], "limit": 3 }
У первого совпадения "kind": "session" и "id": "6f1c2a9e-…". Затем ассистент читает транскрипт. Транскрипт выдаётся страницами из целых реплик, по умолчанию по 20 000 символов. speaker оставляет реплики одного человека (любая часть имени, без учёта регистра):
{
"tool": "sessions.transcript",
"args": { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "speaker": "Dana", "maxChars": 4000 }
}
{
"sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10",
"title": "Pricing review with Acme",
"startedAtMs": 1792594800000,
"private": false,
"truncated": true,
"excludedFromAiSpeakers": [],
"nextCursor": null,
"totalTurns": 38,
"turnOffset": 0,
"nextTurnOffset": 14,
"transcript": "[02:15] Dana Lee: We can go to twelve percent if the contract is two years.\n[02:41] Dana Lee: That's the most I can do this quarter.\n…"
}
truncated: true означает, что есть продолжение. Ассистент передаёт nextTurnOffset обратно как turnOffset для следующей страницы и останавливается, когда nextTurnOffset равен null:
{
"tool": "sessions.transcript",
"args": { "sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10", "speaker": "Dana", "maxChars": 4000, "turnOffset": 14 }
}
С "format": "json" транскрипт возвращается в виде массива turns, где у каждой реплики есть turnId, startMs и endMs (миллисекунды от начала сессии), speaker и text. Используйте эту форму, если хотите поставить закладку на реплику или привязать к ней задачу.
То же чтение из терминала:
talkbar-cli tools call sessions.transcript --args-file read.json
Создать заметку и задачу
Подготовка: в разделе Настройки → Доступ по MCP откройте строку Заметки и включите Создать заметку, затем откройте Задачи и включите Создать задачу (action_items.create). Остальные изменения, если они не нужны, оставьте выключенными.
Спросите: «Оформи договорённости со встречи с Acme о ценах заметкой к этой сессии и поставь мне задачу отправить обновлённое коммерческое предложение до вторника».
Ассистент отправляет оба изменения одним пакетом talkbar_change:
{
"calls": [
{
"tool": "notes.create",
"args": {
"title": "Acme pricing follow-ups",
"markdown": "## Follow-ups\n\n- Revised quote at 12% for a two-year term\n- Confirm the start date with legal",
"sessionIds": ["6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10"]
}
},
{
"tool": "action_items.create",
"args": {
"title": "Send the revised quote to Acme",
"sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10",
"itemType": "task",
"dueAtMs": 1793725200000,
"assignees": ["Alex Kim"]
}
}
],
"stopOnError": true
}
{
"results": [
{
"tool": "notes.create",
"ok": true,
"result": {
"noteId": "note-k2v9w8x7c6b5n4m3l2j1h0g9",
"title": "Acme pricing follow-ups",
"pinned": false,
"sessionId": null,
"updatedAt": 1793369525000,
"projectId": null,
"sessionIds": ["6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10"]
}
},
{
"tool": "action_items.create",
"ok": true,
"result": {
"itemId": "outcome-x4c8v2b6n1m9q3w7e5r0t2y8",
"itemType": "task",
"title": "Send the revised quote to Acme",
"status": "open",
"dueAtMs": 1793725200000,
"sessionId": "6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10",
"sessionTitle": "Pricing review with Acme",
"projectId": "project-p8d3k2m1q9w7e5r4t6y0u2i1",
"assignees": [{ "name": "Alex Kim", "contactId": null }],
"origin": "manual",
"sources": [],
"sessionStatus": "complete"
}
}
]
}
Ответ для задачи сокращён. Заметка, привязанная к сессии, показывается на странице этой сессии; sessionId остаётся null, потому что это не собственная заметка сессии. Задача получает проект сессии, если вы не укажете другой. Если TalkBar открыт, обе записи сразу появятся в нём.
Добавить закладку во время записи
Подготовка: включите Добавить закладку (markers.create) в строке Закладки. Сама запись всегда управляется только из приложения.
Во время записи попросите: «Поставь закладку на момент, когда Сэм упомянул заморозку бюджета».
Сначала ассистент находит сессию, которая записывается сейчас:
{ "tool": "sessions.recording" }
{
"recording": {
"sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34",
"title": "Budget planning",
"startedAtMs": 1793368800000,
"elapsedMs": 725000,
"revision": "…",
"appRunning": true,
"stale": false
}
}
Если ничего не записывается, recording равен null. stale: true означало бы, что TalkBar не запущен и сессия лишь выглядит записывающейся.
Затем ассистент читает уже записанную часть транскрипта в JSON. Чтение с cursor: "0:" возвращает реплики в порядке их изменения и nextCursor, чтобы в следующий раз получить только новое:
{
"tool": "sessions.transcript",
"args": { "sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34", "format": "json", "cursor": "0:" }
}
{
"sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34",
"title": "Budget planning",
"startedAtMs": 1793368800000,
"private": false,
"truncated": false,
"excludedFromAiSpeakers": [],
"nextCursor": "1793369523871:turn-42",
"recording": true,
"turns": [
{
"turnId": "turn-42",
"chunkId": "chunk-17",
"provisional": true,
"startMs": 641000,
"endMs": 652500,
"speaker": "Sam Ortiz",
"isUser": false,
"excludedFromAi": false,
"text": "Heads up, finance just told us there's a budget freeze until January.",
"translatedText": null
}
]
}
Ассистент добавляет закладку на эту реплику с короткой пометкой:
{
"tool": "markers.create",
"args": {
"sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34",
"turnId": "turn-42",
"body": "Budget freeze until January"
}
}
{
"markerId": "…",
"sessionId": "c3a9f2e7-1d84-4b6a-9e05-7f2b8d1c6a34",
"kind": "bookmark",
"body": "Budget freeze until January",
"quote": null,
"atMs": 641000,
"turnId": "turn-42",
"chunkId": null,
"pointId": null,
"color": "",
"updatedAt": 1793369525000,
"sessionStatus": "recording"
}
Закладка сразу появляется на экране записи. Вместо turnId ассистент может указать место закладки через chunkId, pointId (точку хронологии из sessions.timeline), atMs (момент от начала сессии) или quote (слова, к которым она относится).
Экспортировать сессию
Подготовка: сначала добавьте место экспорта в приложении, например папку в вашем хранилище Obsidian; см. Экспорт. Операции экспорта включены по умолчанию, как только включён MCP.
Попросите: «Экспортируй встречу с Acme о ценах в моё хранилище Obsidian».
Ассистент получает список мест экспорта:
{ "tool": "exports.config" }
{
"destinations": [
{
"destinationId": "5d2e7a10-8c3b-4f69-b1e4-0a9c6d3f2b87",
"workspaceId": "…",
"name": "Obsidian vault",
"format": "obsidian",
"location": "PATH_TO_VAULT/Meetings",
"enabled": true,
"layout": "flat",
"credentialRef": null
}
],
"rules": []
}
Затем ставит экспорт в очередь, выбирая, что в него включить:
{
"tool": "exports.enqueue",
"args": {
"sessionIds": ["6f1c2a9e-4b7d-4c1e-9a53-0d2e8b7f4c10"],
"destinationIds": ["5d2e7a10-8c3b-4f69-b1e4-0a9c6d3f2b87"],
"selection": { "summary": true, "transcript": true, "metadata": true, "notes": true, "audio": "none" }
}
}
В ответ приходит новый пакет экспорта с batchId, status и записью в deliveries для каждой пары «сессия — место экспорта». exports.enqueue только ставит работу в очередь. Экспорт из очереди доставляет приложение TalkBar, пока оно запущено. Чтобы доставить сразу, ассистент может вызвать exports.run с batchId, а затем проверить результат с помощью exports.status:
{ "tool": "exports.run", "args": { "batchId": "…" } }
У доставленной записи "status": "exported" и её location. Сессию, которая ещё записывается, поставить в очередь нельзя: такой вызов отвечает session_recording.
В терминале talkbar-cli exports run --workspace WORKSPACE_ID --batch BATCH_ID --wait продолжает доставку, пока пакет не будет выполнен. См. Экспорт в talkbar-cli.
Безопасное удаление
Подготовка: включите Переместить заметку в корзину (notes.trash) в строке Заметки. Оставьте Разрешить удаление без подтверждения выключенным.
Попросите: «Перемести старый черновик заметки про Acme в корзину».
Ассистент находит заметку с помощью talkbar_find, затем вызывает talkbar_delete:
{ "tool": "notes.trash", "args": { "noteId": "note-a1s2d3f4g5h6j7k8l9z0x1c2" } }
Прежде чем что-либо выполнится, ваше ИИ-приложение покажет вопрос TalkBar:
An assistant wants TalkBar to run:
- notes.trash {"noteId":"note-a1s2d3f4g5h6j7k8l9z0x1c2"}
Confirm to run it, or decline to run nothing.
Если вы откажетесь или не ответите в течение 5 минут, ничего не выполнится, а ассистент получит:
{ "error": { "code": "declined", "message": "The user did not confirm, so nothing ran" } }
Если подтвердите, заметка переместится в корзину:
{ "noteId": "note-a1s2d3f4g5h6j7k8l9z0x1c2", "trashed": true }
Передумали? notes.restore вернёт заметку. Эта операция выполняется через talkbar_change, поэтому подтверждения не требует, но её нужно включить — Восстановить заметку:
{ "tool": "notes.restore", "args": { "noteId": "note-a1s2d3f4g5h6j7k8l9z0x1c2" } }
{ "noteId": "note-a1s2d3f4g5h6j7k8l9z0x1c2", "restored": true }
notes.trash.list выводит содержимое корзины заметок. Никакие действия ассистента не удаляют заметку навсегда; очистка корзины остаётся в приложении.
Если ваше ИИ-приложение не умеет показывать вопросы от сервера, удаление вместо этого отклоняется с кодом confirmation_unavailable, и ничего не выполняется. См. Приложения, которые не умеют спрашивать.