惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
博客园 - Franky
腾讯CDC
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
V
V2EX
N
Netflix TechBlog - Medium
量子位
Jina AI
Jina AI
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
爱范儿
爱范儿
博客园 - 叶小钗
D
Docker
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders
Release v2026.6.0 · fronalabs/frona
syncerx · 2026-06-15 · via Hacker News - Newest: "AI"

This release ships a unified human-in-the-loop pause/resume mechanism across every channel, a slash composer for invoking skills and other agents directly, typed file tools that cut token usage and hallucinations, and per-channel message splitters so long replies arrive cleanly instead of getting truncated. Approvals (app deploys, multiple-choice questions, credential picks) now render as buttons on Telegram, Discord, Slack, and WhatsApp Cloud, and as Reply YES or NO prompts on Signal, SMS, and personal WhatsApp, with the inbound parser accepting the obvious variants. Behind the scenes, a new Harness struct consolidates the agent runtime view of AppState, sandboxing moves to a single SandboxManager per principal kind, and the channel adapter framework now classifies failures with a typed ChannelError.

Supported channels: Slack, Discord, Telegram, Signal, SMS, WhatsApp Cloud, WhatsApp Personal.

Human in the loop

  • Replace opaque tool_data blobs on tool calls with typed Hitl values; build typed HITL tool components and consume new SSE event names.
  • Persist Paused message status and resume with an atomic compare-and-swap; translate the new InferenceResponse outcomes into pause/resume persistence.
  • Add a POST /api/chats/{chat_id}/tool-calls/resolve endpoint, lift the HITL callback parser and response label into a shared hitl module, and drop the legacy app and vault approval routes superseded by the resolve endpoint.
  • Re-seed pending HITLs from msg.tool_calls on inference_done so paused turns continue to surface new questions.
  • Share an inbound reply HITL resolver with YES/NO variant parsing (y, yeah, ok, nope, thumbs-up emoji, and the usual variants).
  • Resume HITL delivery on resolve so sequential adapters render the next prompt; use the absolute public_base_url for HITL fallback URLs on channels that can't render the picker.
  • Render HITL prompts and resolve responses on Telegram (inline keyboard), Slack (Block Kit via Socket Mode interactions), Discord (buttons), WhatsApp Cloud (interactive messages and button taps), WhatsApp personal account (quote replies), Signal (quote replies), and SMS (Reply YES or NO hint on App-deploy approval prompts).
  • Hold the Discord and WhatsApp typing indicator across long inferences so the user sees activity while the agent is generating.
  • Rename the manage_service tool to manage_app and adopt typed HITL hooks; exit tasks on HITL and respawn via run_task.
  • Test HITL persistence, pause rendering, batched resolve, and the resume race.

Slash composer

  • Add a chat::slash invocation parser for / and @ prefixes; add a MessageCommand side field on Message for parsed slash invocations.
  • Wire up /commands end to end: dispatch, terminal-write refactor, cross-agent attribution, slash parsing.
  • Add a GET /api/chats/{id}/commands discovery endpoint and a listCommands API client.
  • Frontend: slash composer with Lexical triggers, directive chips, and a /new builtin that opens a fresh chat with the current agent.
  • @<agent> per-turn override: the reply is attributed to the target agent and the next message reverts to the chat's default.
  • Add save_chat, save_updated_message, and delete_messages_for_chat helpers.
  • Skills: new SKILL.md frontmatter fields disable-model-invocation, argument-hint, and arguments; hide disable-model-invocation skills from the model's available-skills block while keeping them in the / menu for users to invoke directly.
  • Add e2e tests for /agent dispatch and commands discovery.

Channels and message splitter

  • Add a per-format message splitter with shared boundary primitives that break at paragraph, then line, then word, then UTF-8 character, and never inside a code fence or escape sequence.
  • Wire TelegramMarkdownV2Splitter into the Telegram adapter (4,096-char per-message limit) and render markdown tables as monospace code blocks since Telegram has no native table support.
  • Wire MarkdownSplitter into the Discord adapter (2,000-char per-message limit), remove the old chunk_for_discord helper, and render markdown tables as monospace code blocks.
  • Wire PlainSplitter into the Slack adapter (silent multi-chunk).
  • Wire PlainSplitter into the SMS adapter with a 1,600-char hard cap and Full reply: {short-link} overflow that points at a Chat-kind share URL (reused across overflow events in the same chat).
  • Wire MarkdownSplitter into the WhatsApp Cloud and WhatsApp Personal adapters.
  • Wire SignalSplitter into the Signal adapter with per-chunk SignalText { body, ranges }.
  • Add ChannelError type and MessageDelivery.failure_kind field; migrate channel adapters to typed ChannelError classification (Transient, Forbidden, NotFound, PayloadInvalid, PayloadTooLarge, Unauthorized, Other) with an optional retry_hint.
  • Make start_with_retry idempotent so a single start no longer double-spawns the adapter.
  • Replace the bounded broadcast bus with unbounded fan-out so channel inbound stops losing events.

Share links and preview pages

  • Add a Share entity with File and Chat kinds plus a ShareService for issuing short links; wire the service into AppState and schedule periodic cleanup.
  • Add share.ttl_secs (default 30 days) and share.cleanup_interval_secs (default 6 hours) config knobs.
  • Add GET /s/{id} short-link resolver with a 303 redirect to the canonical or presigned URL.
  • Add a /p preview page that renders markdown and code with syntax highlighting; add a GET /p/{slug} redirector to the query-param form.
  • Route channel attachments through outbound_url in all adapters via a new chat::channel::attachment helper: inline-channel previewable files get /p/{8-char-id}, inline non-previewable files get /s/{8-char-id}, button channels emit long-form /p/{owner}/{handle}/{path} or /api/files/... URLs.
  • Add an anonymous_not_found helper so unknown / expired / unauthorized share IDs return byte-identical 404s.
  • Extract FilePreviewContent into a shared module; extract apiFetch from request<T> for non-JSON authenticated requests.
  • Add ShareKind::Chat variant with lazy lookup_or_issue_chat for SMS chat-share reuse.

Tasks

  • Accept result_description on create_task and create_recurring_task so prose answers skip schema authoring; reject when both result_description and result_schema are passed (or neither).
  • Require a top-level summary: string on complex task result schemas; reject complex schemas without it at task creation.
  • Carry result_schema on TaskCompletion events and persist the JSON content.
  • Render the TaskCompletion bubble with a schema-driven body and a link to the task chat; render TaskCompletion via a shared markdown helper across channel adapters.
  • Researcher now publishes the full research as a markdown attachment, named after the topic (e.g. h100-used-prices.md) so successive research tasks don't overwrite each other.

Typed file tools

  • Add typed read, write, edit, glob, and grep tools. Workspace-scoped by default; absolute and policy-authorized sibling paths allowed; virtual-path URIs rejected.
  • edit uses Unicode normalization (NFKC, ASCII quotes/dashes/spaces, collapsed whitespace) so a slightly-misremembered snippet still matches its target. The motivation is token usage and hallucinations: a typed edit returns a structured diff in a fraction of the tokens a shell round-trip eats, without the model free-styling shell escapes against a half-remembered path.
  • Add the frona-text crate with shared text and search primitives (NormalizedString, LineEnding, walk_with_ignore for .gitignore-aware traversal).
  • Refactor sandbox: SandboxManager is now the single entry point per principal kind.

Tool views (frontend)

  • Extract a per-tool view registry: ToolRow primitives, DefaultView, slim chrome.
  • Add views for shell, Python, and Node (with sandbox-deny extraction); for the typed file tools (read, write, edit, glob, grep) with syntax highlighting and line numbers; for produce_file (filename / size / content-type card); for web_search (result list) and web_fetch (markdown + clickable URL); for task tools (create_task, create_recurring_task with cronstrue, delete_task); for memory tools (auto-expand on large text); for update_identity (set/remove attribute rendering); and for set_heartbeat (humanized interval and next-tick time).
  • Render the shell tool command as a bash-highlighted block with wrap; render produce_file as a filename card with size and content type.
  • Add vitest test runner and cronstrue / unbash dependencies.

Harness / runtime

  • Add a Harness struct as the agent runtime view of AppState; route session build, voice WS, message stream, and resume-all through it.
  • Narrow TaskExecutor to hold Arc<Harness> and own its own resolution-notifier map.
  • Move HITL resolution onto Harness and drop ChannelCtx.app_state.
  • Move task-tool registration into ToolManager; extract deliver_event_to_source so ReportSignalTool no longer needs TaskExecutor.
  • Delete agent/execution.rs and update test fixtures for Harness.
  • Inject heartbeats as a transient turn so the agent stops replying to them like a user message.
  • Fold per-turn lifecycle events into InferenceEventKind.

Browser

  • Keep browser sessions alive past Browserless's hard 408-second timeout: pass a long timeout at connect time, self-evict and recycle sessions with a 60-second margin, and evict dead WebSockets immediately.

Chat / Frontend

  • Stop dropping the newest message when a chat crosses the page limit.
  • Move the reasoning toggle from inline content to a sparkle icon in the message header.
  • Disable single-tilde strikethrough in assistant markdown.