matevip
a9c2d45790
Harden goal approval and workspace flows
2026-05-23 22:55:16 +08:00
matevip
5cd6e841a4
feat(skill): broaden script security scan + GBK zip-import fallback
2026-05-23 22:55:10 +08:00
matevip
3fc121c6b7
fix(tool): show runtime names in tools admin
2026-05-23 22:54:57 +08:00
matevip
123d912f84
fix(skill): allow template file access
2026-05-23 09:08:01 +08:00
matevip
cef1730e6e
feat(tool,skill,ui): progressive tool/skill disclosure (load_skill + enable_tool + tier UI)
2026-05-23 09:07:45 +08:00
matevip
5f571e86a2
feat(agent,ui): multi-level subagent delegation tree
2026-05-22 13:44:01 +08:00
matevip
81915ccfae
feat(tool): read_file can page through an oversized single line via startColumn ( #190 )
2026-05-21 22:27:09 +08:00
matevip
9e93c52d9a
fix(goal): real evaluator, retry refactor, hardened node + extra edges
2026-05-21 22:27:00 +08:00
matevip
c34e8290ac
feat(goal,ui): inline set-goal prompt, terminal system-line, sidebar dot
2026-05-21 22:26:40 +08:00
matevip
9c5ad29d42
chore(llm): drop unused imports, add XIAOMI_MIMO cross-turn cache tests
2026-05-21 17:24:53 +08:00
倪程伟
7861f603eb
fix(llm): MiMo thinking 模式 reasoning_content 多轮对话兼容修复 ( #189 )
...
MiMo V2 系列在 thinking 模式下,assistant 消息携带 tool_calls 时必须同时包含 reasoning_content,否则提供方返回 400。
- ModelFamily 新增 MIMO_THINKING 族,detect() 添加 mimo* 匹配
- FallbackPolicy 新增 XIAOMI_MIMO(patchCrossTurn=true, patchNonToolCall=true)
- 新增 ReasoningContentCache,按 tool_call_ids 回放真实推理内容
- 缓存作用范围:所有 patchCrossTurn=true 的 thinking provider(MiMo + DeepSeek)
- NodeStreamingChatHelper 流式响应完成后写入缓存
Closes #188
2026-05-21 17:15:35 +08:00
matevip
e61b05bba0
fix(tool): read_file no longer returns empty content + infinite retry on oversized single lines ( #190 )
2026-05-21 16:26:24 +08:00
matevip
a910004b3b
feat(agent): digital-employee builder skill to auto-create agents and chain them into a workflow ( #165 )
2026-05-21 16:26:04 +08:00
matevip
03e68d3c74
fix(agent): structure-aware truncation to stop mid-JSON cuts inducing hallucination ( #187 )
2026-05-21 15:13:07 +08:00
matevip
c9e54e820f
fix(goal,ui): live ring update after agent-triggered setGoal / addGoalCriterion
2026-05-21 14:43:59 +08:00
matevip
89f8413db8
test(agent): sync LaneDPerformanceFixesTest with MAX_RETRIES bump
2026-05-21 14:43:52 +08:00
matevip
6646e91585
feat(goal): built-in tools for agent-driven goal management
2026-05-21 14:43:20 +08:00
matevip
ce74a0ae48
feat(goal): graph topology + evaluation node wired into ReAct + Plan-Execute
2026-05-21 14:43:13 +08:00
matevip
ac6c8a18e3
feat(goal): persistent cross-turn goal with self-evaluation scaffolding
2026-05-21 14:43:01 +08:00
matevip
6a4318c268
fix(channel): IM conversations respect per-conversation model selection ( #183 )
2026-05-20 17:49:03 +08:00
matevip
43136fc663
fix(channel): sweep orphan tool rows + guard rules; scope rule name to channel
2026-05-20 16:35:57 +08:00
matevip
12ff190392
feat(feishu): transcribe inbound voice messages via SttService
2026-05-20 16:35:46 +08:00
matevip
6b4456043e
fix(feishu): outbound generated-file URLs become native attachments
2026-05-20 16:01:03 +08:00
matevip
6b397a10ed
feat(feishu): inbound file/audio/video download — SDK path + cache push
2026-05-20 15:53:40 +08:00
matevip
71e08b015e
sync: Feishu approval card 5-chain hotfix — verified end-to-end in production
2026-05-20 15:24:47 +08:00
matevip
090bb64c6a
sync: Feishu channel-native tool provider + DbRuleGuardian generic guard
2026-05-20 12:29:29 +08:00
matevip
85d7ee23c4
sync: ChannelToolProvider SPI + node-local reconcile framework for channel-native tools
2026-05-20 12:18:51 +08:00
matevip
a9fa8e7fb1
sync: interactive approval card on Feishu via Schema-2.0 button + card.action callback
2026-05-20 12:05:47 +08:00
matevip
3554da8dbc
sync: inject sender context into agent prompt + Feishu DONE ack hook
2026-05-20 11:51:58 +08:00
matevip
35f010d7a1
sync: Feishu CardKit streaming-card adapter via cardkit/v1 SDK
2026-05-20 11:37:12 +08:00
matevip
0e1b8ca564
sync: componentized media upload SPI + Feishu SDK-backed file sender
2026-05-20 11:23:33 +08:00
matevip
3340885da3
fix(llm): skip chat-style probe for embedding-prefix models in DashScope discovery
2026-05-20 10:14:25 +08:00
matevip
a6b5e3b515
refactor(llm): extract testable embedding protocol routing + drop dead fromProviderId
2026-05-20 10:14:12 +08:00
matevip
73ab31a13c
fix(feishu): fail open when bot open_id is unavailable
2026-05-20 10:13:34 +08:00
倪程伟
af3e68d271
fix(feishu): use SDK mentions field for require_mention group filtering ( #163 )
...
Closes #162
require_mention=true previously degraded to a no-op when botPrefix was unset:
shouldProcess() returned true for all messages and checkAccess() fell through
unconditionally, so any group message would be answered — including ones where
the @mention targeted another user.
FeishuChannelAdapter now consults the Feishu SDK's mentions field directly:
- WebSocket: read EventMessage.getMentions(); webhook: read mentions[] from the
JSON payload. In both paths each mention's id.open_id is compared against the
bot's own open_id.
- Bot open_id is fetched lazily via /open-apis/bot/v3/info and cached on the
adapter instance. If the call fails the message is allowed through, matching
the previous behaviour.
- The require_mention gate is applied at the top of handleFeishuMessage so 1:1
chats are unaffected.
Tests: 15 unit cases covering null/empty inputs, bot mentioned, only-other
mentioned, bot among multiple mentions, and malformed payloads.
2026-05-20 08:49:11 +08:00
倪程伟
ee0c229f52
feat(feishu): support Interactive Card JSON for structured message rendering ( #161 )
...
Auto-route Agent replies to Feishu Interactive Card (schema 2.0) when the
content carries structure — JSON object / array, Markdown with code blocks
or headings, or long-form prose — and keep the original text path for
short plain replies.
- FeishuCardFormatter: package-private detect() + render() helper
- JSON object → two-column summary card
- JSON array (≤4 fields) → table component; (>4 fields) → div per item
- Markdown → lark_md card with 'AI 助手' header
- Long text (>300 chars with paragraph breaks) → plain_text card
- JSON embedded in Markdown code blocks is recognised across all fences
- FeishuChannelAdapter
- sendMessage() honours channel config 'card_format' (auto | always | never)
- sendCard() POSTs interactive messages; ou_-prefixed targets use open_id
- updateCard() PATCHes an existing message (streaming-update hook)
- Tests: 32 unit cases covering every detect path and render branch
Closes #141
2026-05-20 08:42:02 +08:00
matevip
db16ff02a5
chore: drop external project name references from code comments
2026-05-20 08:09:43 +08:00
matevip
c0f9d1d9fb
test(wiki): add adversarial HTML normalization tests and harden skeleton-tag handling
2026-05-19 21:23:13 +08:00
matevip
c1b878b7e1
fix(agent): fail over to backup providers when the primary is rate-limited
2026-05-19 20:06:21 +08:00
matevip
c6d51f8ced
fix(wiki): resolve an agent's own knowledge base before shared ones
2026-05-19 16:53:12 +08:00
matevip
3d643f909d
feat(skill): typed wrapper tools for declared script entrypoints
2026-05-19 09:56:39 +08:00
matevip
31d4d014ed
fix(skill): normalize runSkillScript JSON args
2026-05-19 09:56:33 +08:00
matevip
520429ac6f
test(skill): end-to-end coverage for the lifecycle curator
2026-05-19 09:56:27 +08:00
matevip
4cd21056a0
feat(skill): automatic lifecycle archival for idle skills
2026-05-19 09:55:59 +08:00
matevip
d53d66abe3
feat(chat): per-conversation model selection ( #150 )
2026-05-18 16:27:27 +08:00
matevip
0ff8da0caa
fix(llm): stop MODEL_NOT_FOUND from evicting the whole provider ( #150 )
2026-05-18 16:27:20 +08:00
matevip
3157dde1f4
fix(memory): route long-term memory edits to the file being edited ( #148 )
2026-05-18 11:28:01 +08:00
matevip
75107ac815
feat(llm): native Gemini chat builder, Nano Banana image gen, xAI/Grok provider
2026-05-18 10:00:55 +08:00
matevip
a88edbdd07
refactor(llm): decouple model construction from the agent graph layer ( #147 )
2026-05-18 07:47:49 +08:00
matevip
18df97a8e6
fix(agent): scope MCP tools to explicit per-agent selection ( #117 )
2026-05-17 09:24:56 +08:00