mirror of
https://github.com/TencentCloud/Octop.git
synced 2026-10-02 07:34:38 +08:00
* 优化
* 修复memory提取模型无法fallback导致提取失效的问题
* feat(memory): let each agent pin a model for memory extraction
Extraction always followed the agent's chat model, so a user running an
expensive model paid that rate for every distillation pass and had no way
to point extraction at something cheaper.
- memory.aux_model ('provider/model', empty/absent = AUTO) is settable per
agent via the extract-config API and a picker in memory settings
- the manager maps the one chosen ref onto both harness extraction tiers
(memory_aux_light_model / memory_aux_heavy_model)
- refs are validated on write; a ref that goes stale later (provider
deleted, model disabled) is dropped with a warning at build time so
extraction falls back to the default model instead of failing at
call time
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(memory): surface extract_run entries in the journal
harness-memory now journals every extraction pass, including empty and
failed ones. The journal filter offered 'capture'/'extract' actions that
the backend no longer emits, so a user whose extraction ran but found
nothing saw an empty list and no evidence it had run at all.
Replaces those two filter options with 'extract_run' and renders each row
as a plain-language summary built from the entry's structured stats —
including a specific message when extraction is skipped for want of a
configured model.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(deps): sync uv.lock with the editable harness-agent override
pyproject already pins orcakit-harness-agent to the local ../harness-agent
checkout; the lockfile still resolved it from PyPI at 0.9.10.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore: drop the local sibling-checkout adaptation from pyproject/README
Realigns pyproject.toml, README.md, and uv.lock with origin/main. The
[tool.uv.sources] block pointing the four harness packages at sibling
directories is a local dev convenience and should not ship on the branch;
harness deps resolve from PyPI again.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore: drop the unrelated pixel-art intro deck from the repo
octop-pixel-ppt/index.html landed in 8843d78 alongside the memory
dashboard work it has nothing to do with. It is a standalone
presentation page, referenced from nowhere in the codebase.
Recoverable from history if needed:
git show 8843d78:octop-pixel-ppt/index.html
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore: add online-deps dev workflow and relax eslint unused-var rule
Add make targets (install-online / test-online / run-online / clean-online)
that build a dedicated .venv-online where Octop is installed editable while
the harness-* siblings resolve from PyPI (--no-sources), for testing local
source against published components. Ignore .venv-online in git.
Also honour the `_`-prefix convention in @typescript-eslint/no-unused-vars
(argsIgnorePattern / varsIgnorePattern / ignoreRestSiblings) so intentionally
discarded destructures and placeholder callback args stop erroring.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* test: make provider preset assertions robust to upstream model-id drift
tencent-token-plan model ids gained a release-date suffix in published
harness-agent (deepseek-v4-flash-202605) and the Kimi minor version moved,
breaking exact-match assertions. Assert by model-family prefix instead so
the test tracks upstream provider data without churning on every release.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(memory-dashboard): 7-day growth, entity summary viewer, rename 对话素材→对话记忆
- Overview: switch the growth chart to the last 7 days and lay the growth
and memory-type charts out 50/50 (was 1.6fr : 1fr).
- MemoryTree: add a "查看摘要" action on each topic row that opens a drawer
rendering the entity's long-form summary page (summary_markdown via
LazyMarkdown), with headline, version/updated meta, a 待刷新 badge, and
loading / failed / not-yet-generated states. Type the getEntity page
payload (EntityPage / EntityDetail) instead of unknown.
- Rename the raw-events concept from 对话素材 to 对话记忆 across the overview
cards, pipeline stage, hints and settings copy (EN labels → "Conversation
memory") so users read it as the first stage of memory rather than loose
data. Tests and shared test copy updated accordingly.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* build(deps): require harness-agent>=0.9.11, add harness-memory>=0.9.2
Bump orcakit-harness-agent to >=0.9.11 and declare harness-memory>=0.9.2 as
a direct dependency — Octop imports harness_memory directly (proactive
picker, memory_portable, memory_client) but only ever pulled it transitively.
Regenerate uv.lock against PyPI (no editable local sources): harness-memory
0.8.5 -> 0.9.2, orcakit-harness-agent 0.9.7 -> 0.9.11, harness-gateway 0.8.5,
harness-browser 0.7.4.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
36 lines
1017 B
JavaScript
36 lines
1017 B
JavaScript
import js from "@eslint/js";
|
|
import globals from "globals";
|
|
import reactHooks from "eslint-plugin-react-hooks";
|
|
import reactRefresh from "eslint-plugin-react-refresh";
|
|
import tseslint from "typescript-eslint";
|
|
|
|
export default tseslint.config(
|
|
{ ignores: ["dist"] },
|
|
{
|
|
extends: [js.configs.recommended, ...tseslint.configs.recommended],
|
|
files: ["**/*.{ts,tsx}"],
|
|
languageOptions: {
|
|
ecmaVersion: 2020,
|
|
globals: globals.browser,
|
|
},
|
|
plugins: {
|
|
"react-hooks": reactHooks,
|
|
"react-refresh": reactRefresh,
|
|
},
|
|
rules: {
|
|
...reactHooks.configs.recommended.rules,
|
|
"react-refresh/only-export-components": "off",
|
|
// Honour the `_`-prefix convention for intentionally-unused bindings
|
|
// (discarded destructures, placeholder callback args).
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"error",
|
|
{
|
|
argsIgnorePattern: "^_",
|
|
varsIgnorePattern: "^_",
|
|
ignoreRestSiblings: true,
|
|
},
|
|
],
|
|
},
|
|
},
|
|
);
|